summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp1
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java2
-rw-r--r--boot/hiddenapi/hiddenapi-max-target-o.txt2076
-rw-r--r--boot/hiddenapi/hiddenapi-max-target-r-loprio.txt2
-rw-r--r--boot/hiddenapi/hiddenapi-unsupported.txt6
-rw-r--r--cmds/bootanimation/OWNERS3
-rw-r--r--cmds/idmap2/Android.bp5
-rw-r--r--core/api/current.txt6
-rw-r--r--core/api/module-lib-current.txt2
-rw-r--r--core/api/system-current.txt18
-rw-r--r--core/api/test-current.txt2
-rw-r--r--core/java/android/app/ActivityThread.java28
-rw-r--r--core/java/android/bluetooth/BluetoothAdapter.java12
-rw-r--r--core/java/android/bluetooth/BluetoothDevice.java6
-rw-r--r--core/java/android/bluetooth/le/ScanFilter.java24
-rw-r--r--core/java/android/debug/PairDevice.aidl39
-rw-r--r--core/java/android/debug/PairDevice.java112
-rw-r--r--core/java/android/net/IpSecAlgorithm.java2
-rw-r--r--core/java/android/net/NetworkStats.java47
-rw-r--r--core/java/android/os/BatteryStatsManager.java69
-rwxr-xr-xcore/java/android/os/Build.java2
-rw-r--r--core/java/android/os/Debug.java4
-rw-r--r--core/java/android/os/OWNERS3
-rw-r--r--core/java/android/os/Trace.java2
-rw-r--r--core/java/android/os/UpdateEngine.java42
-rw-r--r--core/java/android/util/apk/ApkSignatureSchemeV2Verifier.java2
-rw-r--r--core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java2
-rw-r--r--core/java/android/util/apk/ApkSigningBlockUtils.java2
-rw-r--r--core/java/android/util/apk/VerityBuilder.java8
-rw-r--r--core/java/android/util/apk/ZipUtils.java6
-rw-r--r--core/java/com/android/internal/app/IBatteryStats.aidl2
-rw-r--r--core/java/com/android/server/SystemConfig.java4
-rw-r--r--core/jni/Android.bp28
-rw-r--r--core/jni/AndroidRuntime.cpp5
-rw-r--r--core/jni/android_os_Debug.cpp33
-rw-r--r--core/jni/com_android_internal_os_Zygote.cpp2
-rw-r--r--core/jni/com_android_internal_os_ZygoteCommandBuffer.cpp8
-rw-r--r--core/jni/include_vm/android_runtime/vm.h24
-rw-r--r--core/res/AndroidManifest.xml7
-rw-r--r--core/res/OWNERS3
-rw-r--r--core/res/res/values/config.xml14
-rw-r--r--core/res/res/values/symbols.xml8
-rw-r--r--core/res/res/xml/sms_short_codes.xml9
-rw-r--r--core/tests/BroadcastRadioTests/OWNERS3
-rw-r--r--data/etc/privapp-permissions-platform.xml2
-rw-r--r--libs/hwui/Readback.cpp6
-rw-r--r--packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java5
-rw-r--r--packages/SettingsLib/tests/robotests/OWNERS2
-rw-r--r--services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java3
-rw-r--r--services/core/java/com/android/server/VcnManagementService.java73
-rw-r--r--services/core/java/com/android/server/adb/AdbDebuggingManager.java12
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java13
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java14
-rw-r--r--services/core/java/com/android/server/am/BatteryStatsService.java2
-rw-r--r--services/core/java/com/android/server/am/LmkdConnection.java2
-rw-r--r--services/core/java/com/android/server/am/LmkdStatsReporter.java8
-rw-r--r--services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java2
-rw-r--r--services/core/java/com/android/server/broadcastradio/OWNERS3
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsService.java20
-rw-r--r--services/core/java/com/android/server/pm/OWNERS2
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerServiceUtils.java2
-rw-r--r--services/core/java/com/android/server/security/FileIntegrityService.java2
-rw-r--r--services/core/java/com/android/server/stats/pull/StatsPullAtomService.java6
-rw-r--r--services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java57
-rw-r--r--services/core/java/com/android/server/vcn/Vcn.java10
-rw-r--r--services/core/java/com/android/server/vcn/VcnGatewayConnection.java43
-rw-r--r--services/core/java/com/android/server/vcn/util/OneWayBoolean.java39
-rw-r--r--services/core/java/com/android/server/wm/RootWindowContainer.java40
-rw-r--r--services/incremental/ServiceWrappers.cpp4
-rw-r--r--services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java37
-rwxr-xr-xservices/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageTest.java49
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java47
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java33
-rw-r--r--telecomm/java/android/telecom/Phone.java16
-rw-r--r--telephony/common/Android.bp8
-rw-r--r--telephony/java/android/telephony/AvailableNetworkInfo.java119
-rw-r--r--telephony/java/android/telephony/CarrierConfigManager.java122
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthNr.java2
-rw-r--r--telephony/java/android/telephony/PhoneCapability.java207
-rw-r--r--telephony/java/android/telephony/SubscriptionInfo.java27
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java35
-rw-r--r--telephony/java/android/telephony/ims/ImsMmTelManager.java28
-rw-r--r--telephony/java/android/telephony/ims/ImsRcsManager.java14
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl6
-rw-r--r--tests/vcn/java/com/android/server/VcnManagementServiceTest.java228
-rw-r--r--tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java45
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java4
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java4
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectedStateTest.java6
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectingStateTest.java4
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java4
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTestBase.java4
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java4
-rw-r--r--tools/aapt2/SdkConstants.cpp5
94 files changed, 1600 insertions, 2515 deletions
diff --git a/Android.bp b/Android.bp
index 8548920a57e5..0277af05d1f3 100644
--- a/Android.bp
+++ b/Android.bp
@@ -291,6 +291,7 @@ java_library {
"icu4j-platform-compat-config",
"protolog.conf.json.gz",
"services-platform-compat-config",
+ "TeleService-platform-compat-config",
"documents-ui-compat-config",
],
libs: [
diff --git a/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java b/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java
index aa7696df6dbd..c7d214b72ae9 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java
@@ -58,7 +58,7 @@ public class ThermalStatusRestriction extends JobRestriction {
@Override
public boolean isJobRestricted(JobStatus job) {
- return mIsThermalRestricted && job.hasConnectivityConstraint();
+ return mIsThermalRestricted;
}
@Override
diff --git a/boot/hiddenapi/hiddenapi-max-target-o.txt b/boot/hiddenapi/hiddenapi-max-target-o.txt
index 978660ce8c31..dd9049f8c257 100644
--- a/boot/hiddenapi/hiddenapi-max-target-o.txt
+++ b/boot/hiddenapi/hiddenapi-max-target-o.txt
@@ -31612,12 +31612,6 @@ Landroid/media/MediaSession2$CommandButton;->getIconResId()I
Landroid/media/MediaSession2$CommandButton;->getProvider()Landroid/media/update/MediaSession2Provider$CommandButtonProvider;
Landroid/media/MediaSession2$CommandButton;->isEnabled()Z
Landroid/media/MediaSession2$CommandButton;->mProvider:Landroid/media/update/MediaSession2Provider$CommandButtonProvider;
-Landroid/media/MediaSession2$ControllerInfo;-><init>(Landroid/content/Context;IILjava/lang/String;Landroid/os/IInterface;)V
-Landroid/media/MediaSession2$ControllerInfo;->getPackageName()Ljava/lang/String;
-Landroid/media/MediaSession2$ControllerInfo;->getProvider()Landroid/media/update/MediaSession2Provider$ControllerInfoProvider;
-Landroid/media/MediaSession2$ControllerInfo;->getUid()I
-Landroid/media/MediaSession2$ControllerInfo;->isTrusted()Z
-Landroid/media/MediaSession2$ControllerInfo;->mProvider:Landroid/media/update/MediaSession2Provider$ControllerInfoProvider;
Landroid/media/MediaSession2$OnDataSourceMissingHelper;->onDataSourceMissing(Landroid/media/MediaSession2;Landroid/media/MediaItem2;)Landroid/media/DataSourceDesc;
Landroid/media/MediaSession2$SessionCallback;-><init>()V
Landroid/media/MediaSession2$SessionCallback;->onBufferingStateChanged(Landroid/media/MediaSession2;Landroid/media/MediaPlayerBase;Landroid/media/MediaItem2;I)V
@@ -38247,837 +38241,6 @@ Landroid/net/WebAddress;->sAddressPattern:Ljava/util/regex/Pattern;
Landroid/net/WebAddress;->setAuthInfo(Ljava/lang/String;)V
Landroid/net/WebAddress;->setPort(I)V
Landroid/net/WebAddress;->setScheme(Ljava/lang/String;)V
-Landroid/net/wifi/AnqpInformationElement;-><init>(II[B)V
-Landroid/net/wifi/AnqpInformationElement;->ANQP_3GPP_NETWORK:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_CAPABILITY_LIST:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_CIVIC_LOC:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_DOM_NAME:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_EMERGENCY_ALERT:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_EMERGENCY_NAI:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_EMERGENCY_NUMBER:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_GEO_LOC:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_IP_ADDR_AVAILABILITY:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_LOC_URI:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_NAI_REALM:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_NEIGHBOR_REPORT:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_NWK_AUTH_TYPE:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_QUERY_LIST:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_ROAMING_CONSORTIUM:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_TDLS_CAP:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_VENDOR_SPEC:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_VENUE_NAME:I
-Landroid/net/wifi/AnqpInformationElement;->getElementId()I
-Landroid/net/wifi/AnqpInformationElement;->getPayload()[B
-Landroid/net/wifi/AnqpInformationElement;->getVendorId()I
-Landroid/net/wifi/AnqpInformationElement;->HOTSPOT20_VENDOR_ID:I
-Landroid/net/wifi/AnqpInformationElement;->HS_CAPABILITY_LIST:I
-Landroid/net/wifi/AnqpInformationElement;->HS_CONN_CAPABILITY:I
-Landroid/net/wifi/AnqpInformationElement;->HS_FRIENDLY_NAME:I
-Landroid/net/wifi/AnqpInformationElement;->HS_ICON_FILE:I
-Landroid/net/wifi/AnqpInformationElement;->HS_ICON_REQUEST:I
-Landroid/net/wifi/AnqpInformationElement;->HS_NAI_HOME_REALM_QUERY:I
-Landroid/net/wifi/AnqpInformationElement;->HS_OPERATING_CLASS:I
-Landroid/net/wifi/AnqpInformationElement;->HS_OSU_PROVIDERS:I
-Landroid/net/wifi/AnqpInformationElement;->HS_QUERY_LIST:I
-Landroid/net/wifi/AnqpInformationElement;->HS_WAN_METRICS:I
-Landroid/net/wifi/AnqpInformationElement;->mElementId:I
-Landroid/net/wifi/AnqpInformationElement;->mPayload:[B
-Landroid/net/wifi/AnqpInformationElement;->mVendorId:I
-Landroid/net/wifi/aware/Characteristics;-><init>(Landroid/os/Bundle;)V
-Landroid/net/wifi/aware/Characteristics;->KEY_MAX_MATCH_FILTER_LENGTH:Ljava/lang/String;
-Landroid/net/wifi/aware/Characteristics;->KEY_MAX_SERVICE_NAME_LENGTH:Ljava/lang/String;
-Landroid/net/wifi/aware/Characteristics;->KEY_MAX_SERVICE_SPECIFIC_INFO_LENGTH:Ljava/lang/String;
-Landroid/net/wifi/aware/Characteristics;->mCharacteristics:Landroid/os/Bundle;
-Landroid/net/wifi/aware/ConfigRequest$Builder;-><init>()V
-Landroid/net/wifi/aware/ConfigRequest$Builder;->build()Landroid/net/wifi/aware/ConfigRequest;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mClusterHigh:I
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mClusterLow:I
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mDiscoveryWindowInterval:[I
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mMasterPreference:I
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mSupport5gBand:Z
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setClusterHigh(I)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setClusterLow(I)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setDiscoveryWindowInterval(II)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setMasterPreference(I)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setSupport5gBand(Z)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest;-><init>(ZIII[I)V
-Landroid/net/wifi/aware/ConfigRequest;->CLUSTER_ID_MAX:I
-Landroid/net/wifi/aware/ConfigRequest;->CLUSTER_ID_MIN:I
-Landroid/net/wifi/aware/ConfigRequest;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/aware/ConfigRequest;->DW_DISABLE:I
-Landroid/net/wifi/aware/ConfigRequest;->DW_INTERVAL_NOT_INIT:I
-Landroid/net/wifi/aware/ConfigRequest;->mClusterHigh:I
-Landroid/net/wifi/aware/ConfigRequest;->mClusterLow:I
-Landroid/net/wifi/aware/ConfigRequest;->mDiscoveryWindowInterval:[I
-Landroid/net/wifi/aware/ConfigRequest;->mMasterPreference:I
-Landroid/net/wifi/aware/ConfigRequest;->mSupport5gBand:Z
-Landroid/net/wifi/aware/ConfigRequest;->NAN_BAND_24GHZ:I
-Landroid/net/wifi/aware/ConfigRequest;->NAN_BAND_5GHZ:I
-Landroid/net/wifi/aware/ConfigRequest;->validate()V
-Landroid/net/wifi/aware/DiscoverySession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;II)V
-Landroid/net/wifi/aware/DiscoverySession;->DBG:Z
-Landroid/net/wifi/aware/DiscoverySession;->getClientId()I
-Landroid/net/wifi/aware/DiscoverySession;->getMaxSendRetryCount()I
-Landroid/net/wifi/aware/DiscoverySession;->getSessionId()I
-Landroid/net/wifi/aware/DiscoverySession;->MAX_SEND_RETRY_COUNT:I
-Landroid/net/wifi/aware/DiscoverySession;->mClientId:I
-Landroid/net/wifi/aware/DiscoverySession;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/aware/DiscoverySession;->mMgr:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/aware/DiscoverySession;->mSessionId:I
-Landroid/net/wifi/aware/DiscoverySession;->mTerminated:Z
-Landroid/net/wifi/aware/DiscoverySession;->sendMessage(Landroid/net/wifi/aware/PeerHandle;I[BI)V
-Landroid/net/wifi/aware/DiscoverySession;->setTerminated()V
-Landroid/net/wifi/aware/DiscoverySession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/DiscoverySession;->VDBG:Z
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMatch(I[B[B)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMatchWithDistance(I[B[BI)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMessageReceived(I[B)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMessageSendFail(II)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMessageSendSuccess(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionConfigFail(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionConfigSuccess()V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionStarted(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;-><init>()V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMatch:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMatchWithDistance:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMessageReceived:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMessageSendFail:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMessageSendSuccess:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionConfigFail:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionConfigSuccess:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionStarted:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionTerminated:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMatch(I[B[B)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMatchWithDistance(I[B[BI)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMessageReceived(I[B)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMessageSendFail(II)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMessageSendSuccess(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionConfigFail(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionConfigSuccess()V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionStarted(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onConnectFail(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onConnectSuccess(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onIdentityChanged([B)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;-><init>()V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareEventCallback;
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onConnectFail:I
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onConnectSuccess:I
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onIdentityChanged:I
-Landroid/net/wifi/aware/IWifiAwareEventCallback;->onConnectFail(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback;->onConnectSuccess(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback;->onIdentityChanged([B)V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->macAddress(Ljava/util/Map;)V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;-><init>()V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->TRANSACTION_macAddress:I
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;->macAddress(Ljava/util/Map;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->connect(Landroid/os/IBinder;Ljava/lang/String;Landroid/net/wifi/aware/IWifiAwareEventCallback;Landroid/net/wifi/aware/ConfigRequest;Z)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->disconnect(ILandroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->getCharacteristics()Landroid/net/wifi/aware/Characteristics;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->isUsageEnabled()Z
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->publish(Ljava/lang/String;ILandroid/net/wifi/aware/PublishConfig;Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->requestMacAddresses(ILjava/util/List;Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->sendMessage(III[BII)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->subscribe(Ljava/lang/String;ILandroid/net/wifi/aware/SubscribeConfig;Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->terminateSession(II)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->updatePublish(IILandroid/net/wifi/aware/PublishConfig;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->updateSubscribe(IILandroid/net/wifi/aware/SubscribeConfig;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;-><init>()V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareManager;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_connect:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_disconnect:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_getCharacteristics:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_isUsageEnabled:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_publish:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_requestMacAddresses:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_sendMessage:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_subscribe:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_terminateSession:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_updatePublish:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_updateSubscribe:I
-Landroid/net/wifi/aware/IWifiAwareManager;->connect(Landroid/os/IBinder;Ljava/lang/String;Landroid/net/wifi/aware/IWifiAwareEventCallback;Landroid/net/wifi/aware/ConfigRequest;Z)V
-Landroid/net/wifi/aware/IWifiAwareManager;->disconnect(ILandroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->getCharacteristics()Landroid/net/wifi/aware/Characteristics;
-Landroid/net/wifi/aware/IWifiAwareManager;->isUsageEnabled()Z
-Landroid/net/wifi/aware/IWifiAwareManager;->publish(Ljava/lang/String;ILandroid/net/wifi/aware/PublishConfig;Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->requestMacAddresses(ILjava/util/List;Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->sendMessage(III[BII)V
-Landroid/net/wifi/aware/IWifiAwareManager;->subscribe(Ljava/lang/String;ILandroid/net/wifi/aware/SubscribeConfig;Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->terminateSession(II)V
-Landroid/net/wifi/aware/IWifiAwareManager;->updatePublish(IILandroid/net/wifi/aware/PublishConfig;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->updateSubscribe(IILandroid/net/wifi/aware/SubscribeConfig;)V
-Landroid/net/wifi/aware/PeerHandle;-><init>(I)V
-Landroid/net/wifi/aware/PeerHandle;->peerId:I
-Landroid/net/wifi/aware/PublishConfig$Builder;->mEnableRanging:Z
-Landroid/net/wifi/aware/PublishConfig$Builder;->mEnableTerminateNotification:Z
-Landroid/net/wifi/aware/PublishConfig$Builder;->mMatchFilter:[B
-Landroid/net/wifi/aware/PublishConfig$Builder;->mPublishType:I
-Landroid/net/wifi/aware/PublishConfig$Builder;->mServiceName:[B
-Landroid/net/wifi/aware/PublishConfig$Builder;->mServiceSpecificInfo:[B
-Landroid/net/wifi/aware/PublishConfig$Builder;->mTtlSec:I
-Landroid/net/wifi/aware/PublishConfig;-><init>([B[B[BIIZZ)V
-Landroid/net/wifi/aware/PublishConfig;->assertValid(Landroid/net/wifi/aware/Characteristics;Z)V
-Landroid/net/wifi/aware/PublishConfig;->mEnableRanging:Z
-Landroid/net/wifi/aware/PublishConfig;->mEnableTerminateNotification:Z
-Landroid/net/wifi/aware/PublishConfig;->mMatchFilter:[B
-Landroid/net/wifi/aware/PublishConfig;->mPublishType:I
-Landroid/net/wifi/aware/PublishConfig;->mServiceName:[B
-Landroid/net/wifi/aware/PublishConfig;->mServiceSpecificInfo:[B
-Landroid/net/wifi/aware/PublishConfig;->mTtlSec:I
-Landroid/net/wifi/aware/PublishDiscoverySession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;II)V
-Landroid/net/wifi/aware/PublishDiscoverySession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mEnableTerminateNotification:Z
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMatchFilter:[B
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMaxDistanceMm:I
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMaxDistanceMmSet:Z
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMinDistanceMm:I
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMinDistanceMmSet:Z
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mServiceName:[B
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mServiceSpecificInfo:[B
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mSubscribeType:I
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mTtlSec:I
-Landroid/net/wifi/aware/SubscribeConfig;-><init>([B[B[BIIZZIZI)V
-Landroid/net/wifi/aware/SubscribeConfig;->assertValid(Landroid/net/wifi/aware/Characteristics;Z)V
-Landroid/net/wifi/aware/SubscribeConfig;->mEnableTerminateNotification:Z
-Landroid/net/wifi/aware/SubscribeConfig;->mMatchFilter:[B
-Landroid/net/wifi/aware/SubscribeConfig;->mMaxDistanceMm:I
-Landroid/net/wifi/aware/SubscribeConfig;->mMaxDistanceMmSet:Z
-Landroid/net/wifi/aware/SubscribeConfig;->mMinDistanceMm:I
-Landroid/net/wifi/aware/SubscribeConfig;->mMinDistanceMmSet:Z
-Landroid/net/wifi/aware/SubscribeConfig;->mServiceName:[B
-Landroid/net/wifi/aware/SubscribeConfig;->mServiceSpecificInfo:[B
-Landroid/net/wifi/aware/SubscribeConfig;->mSubscribeType:I
-Landroid/net/wifi/aware/SubscribeConfig;->mTtlSec:I
-Landroid/net/wifi/aware/SubscribeDiscoverySession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;II)V
-Landroid/net/wifi/aware/SubscribeDiscoverySession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;-><init>(II)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->addHeader(II)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->allocate(I)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->allocateAndPut(Ljava/util/List;)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->checkLength(I)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->getActualLength()I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->getArray()[B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mArray:[B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mArrayLength:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mLengthSize:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mPosition:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mTypeSize:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putByte(IB)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putByteArray(I[B)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putByteArray(I[BII)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putInt(II)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putShort(IS)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putString(ILjava/lang/String;)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putZeroLengthElement(I)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->wrap([B)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;-><init>(II[BI)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getByte()B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getInt()I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getShort()S
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getString()Ljava/lang/String;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->length:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->offset:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->refArray:[B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->type:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;-><init>(II[B)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mArray:[B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mArrayLength:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mLengthSize:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mTypeSize:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->toList()Ljava/util/List;
-Landroid/net/wifi/aware/TlvBufferUtils;-><init>()V
-Landroid/net/wifi/aware/TlvBufferUtils;->isValid([BII)Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;-><init>([B)V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;->mData:[B
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>()V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>(Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>([Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->assertValidFromUid(I)V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->convert(Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->initialize()V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->isEmpty()Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->mDigester:Ljava/security/MessageDigest;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->mNetworkSpecifiers:Ljava/util/Set;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->satisfiesAwareNetworkSpecifier(Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;-><init>(Landroid/net/wifi/aware/WifiAwareManager;Landroid/os/Looper;ZLandroid/net/wifi/aware/DiscoverySessionCallback;I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MATCH:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MATCH_WITH_DISTANCE:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MESSAGE_RECEIVED:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MESSAGE_SEND_FAIL:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MESSAGE_SEND_SUCCESS:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_SESSION_CONFIG_FAIL:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_SESSION_CONFIG_SUCCESS:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_SESSION_STARTED:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_SESSION_TERMINATED:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mAwareManager:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mClientId:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->MESSAGE_BUNDLE_KEY_MESSAGE2:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->MESSAGE_BUNDLE_KEY_MESSAGE:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mIsPublish:Z
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mOriginalCallback:Landroid/net/wifi/aware/DiscoverySessionCallback;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mSession:Landroid/net/wifi/aware/DiscoverySession;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMatch(I[B[B)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMatchCommon(II[B[BI)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMatchWithDistance(I[B[BI)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMessageReceived(I[B)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMessageSendFail(II)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMessageSendSuccess(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onProxySessionStarted(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onProxySessionTerminated(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionConfigFail(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionConfigSuccess()V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionStarted(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;-><init>(Landroid/net/wifi/aware/WifiAwareManager;Landroid/os/Looper;Landroid/os/Binder;Landroid/net/wifi/aware/AttachCallback;Landroid/net/wifi/aware/IdentityChangedListener;)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->CALLBACK_CONNECT_FAIL:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->CALLBACK_CONNECT_SUCCESS:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->CALLBACK_IDENTITY_CHANGED:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->mAwareManager:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->mBinder:Landroid/os/Binder;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->mLooper:Landroid/os/Looper;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->onConnectFail(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->onConnectSuccess(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->onIdentityChanged([B)V
-Landroid/net/wifi/aware/WifiAwareManager;-><init>(Landroid/content/Context;Landroid/net/wifi/aware/IWifiAwareManager;)V
-Landroid/net/wifi/aware/WifiAwareManager;->attach(Landroid/os/Handler;Landroid/net/wifi/aware/ConfigRequest;Landroid/net/wifi/aware/AttachCallback;Landroid/net/wifi/aware/IdentityChangedListener;)V
-Landroid/net/wifi/aware/WifiAwareManager;->createNetworkSpecifier(IIILandroid/net/wifi/aware/PeerHandle;[BLjava/lang/String;)Landroid/net/NetworkSpecifier;
-Landroid/net/wifi/aware/WifiAwareManager;->createNetworkSpecifier(II[B[BLjava/lang/String;)Landroid/net/NetworkSpecifier;
-Landroid/net/wifi/aware/WifiAwareManager;->DBG:Z
-Landroid/net/wifi/aware/WifiAwareManager;->disconnect(ILandroid/os/Binder;)V
-Landroid/net/wifi/aware/WifiAwareManager;->mContext:Landroid/content/Context;
-Landroid/net/wifi/aware/WifiAwareManager;->mLock:Ljava/lang/Object;
-Landroid/net/wifi/aware/WifiAwareManager;->mService:Landroid/net/wifi/aware/IWifiAwareManager;
-Landroid/net/wifi/aware/WifiAwareManager;->publish(ILandroid/os/Looper;Landroid/net/wifi/aware/PublishConfig;Landroid/net/wifi/aware/DiscoverySessionCallback;)V
-Landroid/net/wifi/aware/WifiAwareManager;->sendMessage(IILandroid/net/wifi/aware/PeerHandle;[BII)V
-Landroid/net/wifi/aware/WifiAwareManager;->subscribe(ILandroid/os/Looper;Landroid/net/wifi/aware/SubscribeConfig;Landroid/net/wifi/aware/DiscoverySessionCallback;)V
-Landroid/net/wifi/aware/WifiAwareManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareManager;->terminateSession(II)V
-Landroid/net/wifi/aware/WifiAwareManager;->updatePublish(IILandroid/net/wifi/aware/PublishConfig;)V
-Landroid/net/wifi/aware/WifiAwareManager;->updateSubscribe(IILandroid/net/wifi/aware/SubscribeConfig;)V
-Landroid/net/wifi/aware/WifiAwareManager;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;-><init>(IIIII[B[BLjava/lang/String;I)V
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->assertValidFromUid(I)V
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->clientId:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->isOutOfBand()Z
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_IB:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_IB_ANY_PEER:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_MAX_VALID:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_OOB:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_OOB_ANY_PEER:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->passphrase:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->peerId:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->peerMac:[B
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->pmk:[B
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->requestorUid:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->role:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->sessionId:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->type:I
-Landroid/net/wifi/aware/WifiAwareSession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;Landroid/os/Binder;I)V
-Landroid/net/wifi/aware/WifiAwareSession;->DBG:Z
-Landroid/net/wifi/aware/WifiAwareSession;->getClientId()I
-Landroid/net/wifi/aware/WifiAwareSession;->mBinder:Landroid/os/Binder;
-Landroid/net/wifi/aware/WifiAwareSession;->mClientId:I
-Landroid/net/wifi/aware/WifiAwareSession;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/aware/WifiAwareSession;->mMgr:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/aware/WifiAwareSession;->mTerminated:Z
-Landroid/net/wifi/aware/WifiAwareSession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareSession;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareUtils;-><init>()V
-Landroid/net/wifi/aware/WifiAwareUtils;->isLegacyVersion(Landroid/content/Context;I)Z
-Landroid/net/wifi/aware/WifiAwareUtils;->validatePassphrase(Ljava/lang/String;)Z
-Landroid/net/wifi/aware/WifiAwareUtils;->validatePmk([B)Z
-Landroid/net/wifi/aware/WifiAwareUtils;->validateServiceName([B)V
-Landroid/net/wifi/BatchedScanResult;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/BatchedScanResult;->TAG:Ljava/lang/String;
-Landroid/net/wifi/EAPConstants;-><init>()V
-Landroid/net/wifi/EAPConstants;->EAP_3Com:I
-Landroid/net/wifi/EAPConstants;->EAP_ActiontecWireless:I
-Landroid/net/wifi/EAPConstants;->EAP_AKA:I
-Landroid/net/wifi/EAPConstants;->EAP_AKA_PRIME:I
-Landroid/net/wifi/EAPConstants;->EAP_EKE:I
-Landroid/net/wifi/EAPConstants;->EAP_FAST:I
-Landroid/net/wifi/EAPConstants;->EAP_GPSK:I
-Landroid/net/wifi/EAPConstants;->EAP_HTTPDigest:I
-Landroid/net/wifi/EAPConstants;->EAP_IKEv2:I
-Landroid/net/wifi/EAPConstants;->EAP_KEA:I
-Landroid/net/wifi/EAPConstants;->EAP_KEA_VALIDATE:I
-Landroid/net/wifi/EAPConstants;->EAP_LEAP:I
-Landroid/net/wifi/EAPConstants;->EAP_Link:I
-Landroid/net/wifi/EAPConstants;->EAP_MD5:I
-Landroid/net/wifi/EAPConstants;->EAP_MOBAC:I
-Landroid/net/wifi/EAPConstants;->EAP_MSCHAPv2:I
-Landroid/net/wifi/EAPConstants;->EAP_OTP:I
-Landroid/net/wifi/EAPConstants;->EAP_PAX:I
-Landroid/net/wifi/EAPConstants;->EAP_PEAP:I
-Landroid/net/wifi/EAPConstants;->EAP_POTP:I
-Landroid/net/wifi/EAPConstants;->EAP_PSK:I
-Landroid/net/wifi/EAPConstants;->EAP_PWD:I
-Landroid/net/wifi/EAPConstants;->EAP_RSA:I
-Landroid/net/wifi/EAPConstants;->EAP_SAKE:I
-Landroid/net/wifi/EAPConstants;->EAP_SIM:I
-Landroid/net/wifi/EAPConstants;->EAP_SPEKE:I
-Landroid/net/wifi/EAPConstants;->EAP_TEAP:I
-Landroid/net/wifi/EAPConstants;->EAP_TLS:I
-Landroid/net/wifi/EAPConstants;->EAP_TTLS:I
-Landroid/net/wifi/EAPConstants;->EAP_ZLXEAP:I
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;-><init>()V
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->boundary:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->contentType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->encodingType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;-><init>()V
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;->data:[B
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;->isLast:Z
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;->type:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;-><init>()V
-Landroid/net/wifi/hotspot2/ConfigParser;->BOUNDARY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->CONTENT_TRANSFER_ENCODING:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->CONTENT_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->createPasspointConfig(Ljava/util/Map;)Landroid/net/wifi/hotspot2/PasspointConfiguration;
-Landroid/net/wifi/hotspot2/ConfigParser;->ENCODING_BASE64:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseCACert([B)Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseContentType(Ljava/lang/String;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseHeaders(Ljava/io/LineNumberReader;)Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseMimeMultipartMessage(Ljava/io/LineNumberReader;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseMimePart(Ljava/io/LineNumberReader;Ljava/lang/String;)Landroid/net/wifi/hotspot2/ConfigParser$MimePart;
-Landroid/net/wifi/hotspot2/ConfigParser;->parsePkcs12([B)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/ConfigParser;->readHeaders(Ljava/io/LineNumberReader;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/ConfigParser;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_CA_CERT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_MULTIPART_MIXED:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_PASSPOINT_PROFILE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_PKCS12:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_WIFI_CONFIG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->onProvisioningFailure(I)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->onProvisioningStatus(I)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;-><init>()V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/hotspot2/IProvisioningCallback;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->TRANSACTION_onProvisioningFailure:I
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->TRANSACTION_onProvisioningStatus:I
-Landroid/net/wifi/hotspot2/IProvisioningCallback;->onProvisioningFailure(I)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback;->onProvisioningStatus(I)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;-><init>(Ljava/lang/String;Ljava/util/List;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->getChildren()Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->getValue()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->isLeaf()Z
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->mChildren:Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->getChildren()Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->getValue()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->isLeaf()Z
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->mValue:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$ParsingException;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->getChildren()Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->getName()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->getValue()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->isLeaf()Z
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->mName:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;-><init>()V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->buildPpsNode(Landroid/net/wifi/hotspot2/omadm/XMLNode;)Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->convertFromLongList(Ljava/util/List;)[J
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->getPpsNodeValue(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_AAA_SERVER_TRUST_ROOT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_ABLE_TO_SHARE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CERTIFICATE_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CERT_SHA256_FINGERPRINT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CERT_URL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CHECK_AAA_SERVER_CERT_STATUS:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_COUNTRY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CREATION_DATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CREDENTIAL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CREDENTIAL_PRIORITY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_DATA_LIMIT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_DIGITAL_CERTIFICATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_DOWNLINK_BANDWIDTH:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_EAP_METHOD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_EAP_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_EXPIRATION_DATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_EXTENSION:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_FQDN:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_FQDN_MATCH:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_FRIENDLY_NAME:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HESSID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HOMESP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HOME_OI:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HOME_OI_LIST:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HOME_OI_REQUIRED:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_ICON_URL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_INNER_EAP_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_INNER_METHOD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_INNER_VENDOR_ID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_INNER_VENDOR_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_IP_PROTOCOL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_MACHINE_MANAGED:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_MAXIMUM_BSS_LOAD_VALUE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_MIN_BACKHAUL_THRESHOLD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_NETWORK_ID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_NETWORK_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_OTHER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_OTHER_HOME_PARTNERS:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PASSWORD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PER_PROVIDER_SUBSCRIPTION:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_POLICY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_POLICY_UPDATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PORT_NUMBER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PREFERRED_ROAMING_PARTNER_LIST:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PRIORITY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_REALM:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_REQUIRED_PROTO_PORT_TUPLE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_RESTRICTION:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_ROAMING_CONSORTIUM_OI:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SIM:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SIM_IMSI:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SOFT_TOKEN_APP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SP_EXCLUSION_LIST:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SSID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_START_DATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SUBSCRIPTION_PARAMETER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SUBSCRIPTION_UPDATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_TIME_LIMIT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_TRUST_ROOT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_TYPE_OF_SUBSCRIPTION:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_UPDATE_IDENTIFIER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_UPDATE_INTERVAL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_UPDATE_METHOD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_UPLINK_BANDWIDTH:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_URI:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_USAGE_LIMITS:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_USAGE_TIME_PERIOD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_USERNAME:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_USERNAME_PASSWORD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_VENDOR_ID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_VENDOR_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseAAAServerTrustRootList(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseCertificateCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Credential;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseDate(Ljava/lang/String;)J
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseEAPMethod(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseHexString(Ljava/lang/String;)[B
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseHomeOIInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseHomeOIList(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseHomeSP(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/HomeSp;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseInteger(Ljava/lang/String;)I
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseLong(Ljava/lang/String;I)J
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseMinBackhaulThreshold(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/pps/Policy;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseMinBackhaulThresholdInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/pps/Policy;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseNetworkIdInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseNetworkIds(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseOtherHomePartnerInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseOtherHomePartners(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePolicy(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Policy;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePpsInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/PasspointConfiguration;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePpsNode(Landroid/net/wifi/hotspot2/omadm/XMLNode;)Landroid/net/wifi/hotspot2/PasspointConfiguration;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePreferredRoamingPartner(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePreferredRoamingPartnerList(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseProtoPortTuple(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseRequiredProtoPortTuple(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseRoamingConsortiumOI(Ljava/lang/String;)[J
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseSimCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseSpExclusionInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseSpExclusionList(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseSubscriptionParameter(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/PasspointConfiguration;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseTrustRoot(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUpdateParameter(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUpdateUserCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUrn(Landroid/net/wifi/hotspot2/omadm/XMLNode;)Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUsageLimits(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/PasspointConfiguration;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUserCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->PPS_MO_URN:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_DDF_NAME:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_MANAGEMENT_TREE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_NODE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_NODE_NAME:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_RT_PROPERTIES:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_VALUE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_VER_DTD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;-><init>(Landroid/net/wifi/hotspot2/omadm/XMLNode;Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->addChild(Landroid/net/wifi/hotspot2/omadm/XMLNode;)V
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->addText(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->close()V
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->getChildren()Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->getParent()Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->getTag()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->getText()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mChildren:Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mParent:Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mTag:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mText:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mTextBuilder:Ljava/lang/StringBuilder;
-Landroid/net/wifi/hotspot2/omadm/XMLParser;-><init>()V
-Landroid/net/wifi/hotspot2/omadm/XMLParser;->mCurrent:Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/omadm/XMLParser;->mRoot:Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/omadm/XMLParser;->parse(Ljava/lang/String;)Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/OsuProvider;-><init>(Landroid/net/wifi/hotspot2/OsuProvider;)V
-Landroid/net/wifi/hotspot2/OsuProvider;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Ljava/util/List;Landroid/graphics/drawable/Icon;)V
-Landroid/net/wifi/hotspot2/OsuProvider;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/hotspot2/OsuProvider;->getFriendlyName()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->getIcon()Landroid/graphics/drawable/Icon;
-Landroid/net/wifi/hotspot2/OsuProvider;->getMethodList()Ljava/util/List;
-Landroid/net/wifi/hotspot2/OsuProvider;->getNetworkAccessIdentifier()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->getOsuSsid()Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/hotspot2/OsuProvider;->getServerUri()Landroid/net/Uri;
-Landroid/net/wifi/hotspot2/OsuProvider;->getServiceDescription()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->METHOD_OMA_DM:I
-Landroid/net/wifi/hotspot2/OsuProvider;->METHOD_SOAP_XML_SPP:I
-Landroid/net/wifi/hotspot2/OsuProvider;->mFriendlyName:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->mIcon:Landroid/graphics/drawable/Icon;
-Landroid/net/wifi/hotspot2/OsuProvider;->mMethodList:Ljava/util/List;
-Landroid/net/wifi/hotspot2/OsuProvider;->mNetworkAccessIdentifier:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->mOsuSsid:Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/hotspot2/OsuProvider;->mServerUri:Landroid/net/Uri;
-Landroid/net/wifi/hotspot2/OsuProvider;->mServiceDescription:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->CERTIFICATE_SHA256_BYTES:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getCredentialPriority()I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getPolicy()Landroid/net/wifi/hotspot2/pps/Policy;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getSubscriptionCreationTimeInMillis()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getSubscriptionExpirationTimeInMillis()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getSubscriptionType()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getSubscriptionUpdate()Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getTrustRootCertList()Ljava/util/Map;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUpdateIdentifier()I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUsageLimitDataLimit()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUsageLimitStartTimeInMillis()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUsageLimitTimeLimitInMinutes()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUsageLimitUsageTimePeriodInMinutes()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->isTrustRootCertListEquals(Ljava/util/Map;Ljava/util/Map;)Z
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->MAX_URL_BYTES:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mCredential:Landroid/net/wifi/hotspot2/pps/Credential;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mCredentialPriority:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mHomeSp:Landroid/net/wifi/hotspot2/pps/HomeSp;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mPolicy:Landroid/net/wifi/hotspot2/pps/Policy;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mSubscriptionCreationTimeInMillis:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mSubscriptionExpirationTimeInMillis:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mSubscriptionType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mSubscriptionUpdate:Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mTrustRootCertList:Ljava/util/Map;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUpdateIdentifier:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUsageLimitDataLimit:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUsageLimitStartTimeInMillis:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUsageLimitTimeLimitInMinutes:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUsageLimitUsageTimePeriodInMinutes:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->NULL_VALUE:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setCredentialPriority(I)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setPolicy(Landroid/net/wifi/hotspot2/pps/Policy;)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setSubscriptionCreationTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setSubscriptionExpirationTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setSubscriptionType(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setSubscriptionUpdate(Landroid/net/wifi/hotspot2/pps/UpdateParameter;)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setTrustRootCertList(Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUpdateIdentifier(I)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUsageLimitDataLimit(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUsageLimitStartTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUsageLimitTimeLimitInMinutes(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUsageLimitUsageTimePeriodInMinutes(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->validate()Z
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->writeTrustRootCerts(Landroid/os/Parcel;Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->CERT_SHA256_FINGER_PRINT_LENGTH:I
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->CERT_TYPE_X509V3:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->mCertSha256Fingerprint:[B
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->mCertType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->MAX_IMSI_LENGTH:I
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->mEapType:I
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->mImsi:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->verifyImsi()Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->AUTH_METHOD_MSCHAP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->AUTH_METHOD_MSCHAPV2:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->AUTH_METHOD_PAP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->getAbleToShare()Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->getMachineManaged()Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->getSoftTokenApp()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mAbleToShare:Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->MAX_PASSWORD_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->MAX_USERNAME_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mEapType:I
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mMachineManaged:Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mNonEapInnerMethod:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mPassword:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mSoftTokenApp:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mUsername:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->setAbleToShare(Z)V
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->setMachineManaged(Z)V
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->setSoftTokenApp(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->SUPPORTED_AUTH:Ljava/util/Set;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->getCheckAaaServerCertStatus()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->getCreationTimeInMillis()J
-Landroid/net/wifi/hotspot2/pps/Credential;->getExpirationTimeInMillis()J
-Landroid/net/wifi/hotspot2/pps/Credential;->isPrivateKeyEquals(Ljava/security/PrivateKey;Ljava/security/PrivateKey;)Z
-Landroid/net/wifi/hotspot2/pps/Credential;->isX509CertificateEquals(Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
-Landroid/net/wifi/hotspot2/pps/Credential;->isX509CertificatesEquals([Ljava/security/cert/X509Certificate;[Ljava/security/cert/X509Certificate;)Z
-Landroid/net/wifi/hotspot2/pps/Credential;->MAX_REALM_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Credential;->mCaCertificate:Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/hotspot2/pps/Credential;->mCertCredential:Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;
-Landroid/net/wifi/hotspot2/pps/Credential;->mCheckAaaServerCertStatus:Z
-Landroid/net/wifi/hotspot2/pps/Credential;->mClientCertificateChain:[Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/hotspot2/pps/Credential;->mClientPrivateKey:Ljava/security/PrivateKey;
-Landroid/net/wifi/hotspot2/pps/Credential;->mCreationTimeInMillis:J
-Landroid/net/wifi/hotspot2/pps/Credential;->mExpirationTimeInMillis:J
-Landroid/net/wifi/hotspot2/pps/Credential;->mRealm:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential;->mSimCredential:Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;
-Landroid/net/wifi/hotspot2/pps/Credential;->mUserCredential:Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;
-Landroid/net/wifi/hotspot2/pps/Credential;->setCheckAaaServerCertStatus(Z)V
-Landroid/net/wifi/hotspot2/pps/Credential;->setCreationTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/pps/Credential;->setExpirationTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/pps/Credential;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->verifyCertCredential()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->verifySha256Fingerprint([Ljava/security/cert/X509Certificate;[B)Z
-Landroid/net/wifi/hotspot2/pps/Credential;->verifySimCredential()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->verifyUserCredential()Z
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getHomeNetworkIds()Ljava/util/Map;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getIconUrl()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getMatchAllOis()[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getMatchAnyOis()[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getOtherHomePartners()[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->MAX_SSID_BYTES:I
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mFqdn:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mFriendlyName:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mHomeNetworkIds:Ljava/util/Map;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mIconUrl:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mMatchAllOis:[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mMatchAnyOis:[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mOtherHomePartners:[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mRoamingConsortiumOis:[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->NULL_VALUE:I
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setHomeNetworkIds(Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setIconUrl(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setMatchAllOis([J)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setMatchAnyOis([J)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setOtherHomePartners([Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->validate()Z
-Landroid/net/wifi/hotspot2/pps/HomeSp;->writeHomeNetworkIds(Landroid/os/Parcel;Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;-><init>()V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;-><init>(Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->getCountries()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->getFqdn()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->getFqdnExactMatch()Z
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->getPriority()I
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->mCountries:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->mFqdn:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->mFqdnExactMatch:Z
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->mPriority:I
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setCountries(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setFqdn(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setFqdnExactMatch(Z)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setPriority(I)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Policy;-><init>()V
-Landroid/net/wifi/hotspot2/pps/Policy;-><init>(Landroid/net/wifi/hotspot2/pps/Policy;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/hotspot2/pps/Policy;->getExcludedSsidList()[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy;->getMaximumBssLoadValue()I
-Landroid/net/wifi/hotspot2/pps/Policy;->getMinHomeDownlinkBandwidth()J
-Landroid/net/wifi/hotspot2/pps/Policy;->getMinHomeUplinkBandwidth()J
-Landroid/net/wifi/hotspot2/pps/Policy;->getMinRoamingDownlinkBandwidth()J
-Landroid/net/wifi/hotspot2/pps/Policy;->getMinRoamingUplinkBandwidth()J
-Landroid/net/wifi/hotspot2/pps/Policy;->getPolicyUpdate()Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/pps/Policy;->getPreferredRoamingPartnerList()Ljava/util/List;
-Landroid/net/wifi/hotspot2/pps/Policy;->getRequiredProtoPortMap()Ljava/util/Map;
-Landroid/net/wifi/hotspot2/pps/Policy;->MAX_EXCLUSION_SSIDS:I
-Landroid/net/wifi/hotspot2/pps/Policy;->MAX_PORT_STRING_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Policy;->MAX_SSID_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Policy;->mExcludedSsidList:[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy;->mMaximumBssLoadValue:I
-Landroid/net/wifi/hotspot2/pps/Policy;->mMinHomeDownlinkBandwidth:J
-Landroid/net/wifi/hotspot2/pps/Policy;->mMinHomeUplinkBandwidth:J
-Landroid/net/wifi/hotspot2/pps/Policy;->mMinRoamingDownlinkBandwidth:J
-Landroid/net/wifi/hotspot2/pps/Policy;->mMinRoamingUplinkBandwidth:J
-Landroid/net/wifi/hotspot2/pps/Policy;->mPolicyUpdate:Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/pps/Policy;->mPreferredRoamingPartnerList:Ljava/util/List;
-Landroid/net/wifi/hotspot2/pps/Policy;->mRequiredProtoPortMap:Ljava/util/Map;
-Landroid/net/wifi/hotspot2/pps/Policy;->NULL_VALUE:I
-Landroid/net/wifi/hotspot2/pps/Policy;->setExcludedSsidList([Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMaximumBssLoadValue(I)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMinHomeDownlinkBandwidth(J)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMinHomeUplinkBandwidth(J)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMinRoamingDownlinkBandwidth(J)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMinRoamingUplinkBandwidth(J)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setPolicyUpdate(Landroid/net/wifi/hotspot2/pps/UpdateParameter;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setPreferredRoamingPartnerList(Ljava/util/List;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setRequiredProtoPortMap(Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Policy;->writeProtoPortMap(Landroid/os/Parcel;Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->writeRoamingPartnerList(Landroid/os/Parcel;ILjava/util/List;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;-><init>()V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;-><init>(Landroid/net/wifi/hotspot2/pps/UpdateParameter;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->CERTIFICATE_SHA256_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getBase64EncodedPassword()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getRestriction()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getServerUri()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getTrustRootCertSha256Fingerprint()[B
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getTrustRootCertUrl()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getUpdateIntervalInMinutes()J
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getUpdateMethod()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getUsername()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->MAX_PASSWORD_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->MAX_URI_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->MAX_URL_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->MAX_USERNAME_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mBase64EncodedPassword:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mRestriction:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mServerUri:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mTrustRootCertSha256Fingerprint:[B
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mTrustRootCertUrl:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mUpdateIntervalInMinutes:J
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mUpdateMethod:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mUsername:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setBase64EncodedPassword(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setRestriction(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setServerUri(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setTrustRootCertSha256Fingerprint([B)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setTrustRootCertUrl(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setUpdateIntervalInMinutes(J)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setUpdateMethod(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setUsername(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_CHECK_INTERVAL_NEVER:J
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_METHOD_OMADM:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_METHOD_SSP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_RESTRICTION_HOMESP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_RESTRICTION_ROAMING_PARTNER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_RESTRICTION_UNRESTRICTED:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->validate()Z
Landroid/net/wifi/hotspot2/ProvisioningCallback;-><init>()V
Landroid/net/wifi/hotspot2/ProvisioningCallback;->onProvisioningFailure(I)V
Landroid/net/wifi/hotspot2/ProvisioningCallback;->onProvisioningStatus(I)V
@@ -39093,539 +38256,6 @@ Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_AP_CONNECTING:I
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_PROVIDER_VERIFIED:I
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_SERVER_CONNECTED:I
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_SERVER_VALIDATED:I
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->onNumClientsChanged(I)V
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->onStateChanged(II)V
-Landroid/net/wifi/ISoftApCallback$Stub;-><init>()V
-Landroid/net/wifi/ISoftApCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/ISoftApCallback;
-Landroid/net/wifi/ISoftApCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/ISoftApCallback$Stub;->TRANSACTION_onNumClientsChanged:I
-Landroid/net/wifi/ISoftApCallback$Stub;->TRANSACTION_onStateChanged:I
-Landroid/net/wifi/ISoftApCallback;->onNumClientsChanged(I)V
-Landroid/net/wifi/ISoftApCallback;->onStateChanged(II)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->addOrUpdatePasspointConfiguration(Landroid/net/wifi/hotspot2/PasspointConfiguration;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->deauthenticateNetwork(JZ)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->disableEphemeralNetwork(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->disableNetwork(ILjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->disconnect(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableNetwork(IZLjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableTdls(Ljava/lang/String;Z)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableTdlsWithMacAddress(Ljava/lang/String;Z)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableVerboseLogging(I)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableWifiConnectivityManager(Z)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->factoryReset(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getAllMatchingWifiConfigs(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getCountryCode()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getCurrentNetwork()Landroid/net/Network;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getCurrentNetworkWpsNfcConfigurationToken()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getDhcpInfo()Landroid/net/DhcpInfo;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getMatchingOsuProviders(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getMatchingWifiConfig(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getPasspointConfigurations()Ljava/util/List;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getPrivilegedConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getScanResults(Ljava/lang/String;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getSupportedFeatures()I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getVerboseLoggingLevel()I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApEnabledState()I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiEnabledState()I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiServiceMessenger(Ljava/lang/String;)Landroid/os/Messenger;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->initializeMulticastFiltering()V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->isDualBandSupported()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->isMulticastEnabled()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->isScanAlwaysAvailable()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->matchProviderWithCurrentNetwork(Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->needs5GHzToAnyApBandConversion()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->queryPasspointIcon(JLjava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->reassociate(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->reconnect(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->registerSoftApCallback(Landroid/os/IBinder;Landroid/net/wifi/ISoftApCallback;I)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->releaseMulticastLock()V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->releaseWifiLock(Landroid/os/IBinder;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->removeNetwork(ILjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->removePasspointConfiguration(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->requestActivityInfo(Landroid/os/ResultReceiver;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->restoreBackupData([B)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->restoreSupplicantBackupData([B[B)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->retrieveBackupData()[B
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->setCountryCode(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->setWifiApConfiguration(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->setWifiEnabled(Ljava/lang/String;Z)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startScan(Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startSoftAp(Landroid/net/wifi/WifiConfiguration;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startSubscriptionProvisioning(Landroid/net/wifi/hotspot2/OsuProvider;Landroid/net/wifi/hotspot2/IProvisioningCallback;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startWatchLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->stopLocalOnlyHotspot()V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->stopSoftAp()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->stopWatchLocalOnlyHotspot()V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->unregisterSoftApCallback(I)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->updateInterfaceIpState(Ljava/lang/String;I)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->updateWifiLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;)V
-Landroid/net/wifi/IWifiManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_acquireMulticastLock:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_acquireWifiLock:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_addOrUpdateNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_addOrUpdatePasspointConfiguration:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_deauthenticateNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_disableEphemeralNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_disableNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_disconnect:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableTdls:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableTdlsWithMacAddress:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableVerboseLogging:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableWifiConnectivityManager:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_factoryReset:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getAllMatchingWifiConfigs:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getConfiguredNetworks:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getConnectionInfo:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getCountryCode:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getCurrentNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getCurrentNetworkWpsNfcConfigurationToken:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getDhcpInfo:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getMatchingOsuProviders:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getMatchingWifiConfig:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getPasspointConfigurations:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getPrivilegedConfiguredNetworks:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getSupportedFeatures:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getVerboseLoggingLevel:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getWifiApConfiguration:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getWifiApEnabledState:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getWifiEnabledState:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getWifiServiceMessenger:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_initializeMulticastFiltering:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_isDualBandSupported:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_isMulticastEnabled:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_isScanAlwaysAvailable:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_matchProviderWithCurrentNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_needs5GHzToAnyApBandConversion:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_queryPasspointIcon:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_reassociate:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_reconnect:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_registerSoftApCallback:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_releaseMulticastLock:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_releaseWifiLock:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_removeNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_removePasspointConfiguration:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_reportActivityInfo:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_requestActivityInfo:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_restoreBackupData:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_restoreSupplicantBackupData:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_retrieveBackupData:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_setCountryCode:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_setWifiApConfiguration:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_setWifiEnabled:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startLocalOnlyHotspot:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startScan:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startSoftAp:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startSubscriptionProvisioning:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startWatchLocalOnlyHotspot:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_stopLocalOnlyHotspot:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_stopSoftAp:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_stopWatchLocalOnlyHotspot:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_unregisterSoftApCallback:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_updateInterfaceIpState:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_updateWifiLockWorkSource:I
-Landroid/net/wifi/IWifiManager;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
-Landroid/net/wifi/IWifiManager;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager;->addOrUpdatePasspointConfiguration(Landroid/net/wifi/hotspot2/PasspointConfiguration;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->deauthenticateNetwork(JZ)V
-Landroid/net/wifi/IWifiManager;->disableEphemeralNetwork(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->disableNetwork(ILjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->disconnect(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->enableNetwork(IZLjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->enableTdls(Ljava/lang/String;Z)V
-Landroid/net/wifi/IWifiManager;->enableTdlsWithMacAddress(Ljava/lang/String;Z)V
-Landroid/net/wifi/IWifiManager;->enableVerboseLogging(I)V
-Landroid/net/wifi/IWifiManager;->enableWifiConnectivityManager(Z)V
-Landroid/net/wifi/IWifiManager;->factoryReset(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->getAllMatchingWifiConfigs(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-Landroid/net/wifi/IWifiManager;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo;
-Landroid/net/wifi/IWifiManager;->getCountryCode()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager;->getCurrentNetworkWpsNfcConfigurationToken()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager;->getDhcpInfo()Landroid/net/DhcpInfo;
-Landroid/net/wifi/IWifiManager;->getMatchingOsuProviders(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager;->getMatchingWifiConfig(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/IWifiManager;->getPasspointConfigurations()Ljava/util/List;
-Landroid/net/wifi/IWifiManager;->getPrivilegedConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-Landroid/net/wifi/IWifiManager;->getScanResults(Ljava/lang/String;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager;->getSupportedFeatures()I
-Landroid/net/wifi/IWifiManager;->getVerboseLoggingLevel()I
-Landroid/net/wifi/IWifiManager;->getWifiEnabledState()I
-Landroid/net/wifi/IWifiManager;->getWifiServiceMessenger(Ljava/lang/String;)Landroid/os/Messenger;
-Landroid/net/wifi/IWifiManager;->initializeMulticastFiltering()V
-Landroid/net/wifi/IWifiManager;->isDualBandSupported()Z
-Landroid/net/wifi/IWifiManager;->isMulticastEnabled()Z
-Landroid/net/wifi/IWifiManager;->isScanAlwaysAvailable()Z
-Landroid/net/wifi/IWifiManager;->matchProviderWithCurrentNetwork(Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager;->needs5GHzToAnyApBandConversion()Z
-Landroid/net/wifi/IWifiManager;->queryPasspointIcon(JLjava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->reassociate(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->reconnect(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->registerSoftApCallback(Landroid/os/IBinder;Landroid/net/wifi/ISoftApCallback;I)V
-Landroid/net/wifi/IWifiManager;->releaseMulticastLock()V
-Landroid/net/wifi/IWifiManager;->releaseWifiLock(Landroid/os/IBinder;)Z
-Landroid/net/wifi/IWifiManager;->removeNetwork(ILjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->removePasspointConfiguration(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo;
-Landroid/net/wifi/IWifiManager;->requestActivityInfo(Landroid/os/ResultReceiver;)V
-Landroid/net/wifi/IWifiManager;->restoreBackupData([B)V
-Landroid/net/wifi/IWifiManager;->restoreSupplicantBackupData([B[B)V
-Landroid/net/wifi/IWifiManager;->retrieveBackupData()[B
-Landroid/net/wifi/IWifiManager;->setCountryCode(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->setWifiApConfiguration(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->setWifiEnabled(Ljava/lang/String;Z)Z
-Landroid/net/wifi/IWifiManager;->startLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager;->startScan(Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->startSoftAp(Landroid/net/wifi/WifiConfiguration;)Z
-Landroid/net/wifi/IWifiManager;->startSubscriptionProvisioning(Landroid/net/wifi/hotspot2/OsuProvider;Landroid/net/wifi/hotspot2/IProvisioningCallback;)V
-Landroid/net/wifi/IWifiManager;->startWatchLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;)V
-Landroid/net/wifi/IWifiManager;->stopLocalOnlyHotspot()V
-Landroid/net/wifi/IWifiManager;->stopSoftAp()Z
-Landroid/net/wifi/IWifiManager;->stopWatchLocalOnlyHotspot()V
-Landroid/net/wifi/IWifiManager;->unregisterSoftApCallback(I)V
-Landroid/net/wifi/IWifiManager;->updateInterfaceIpState(Ljava/lang/String;I)V
-Landroid/net/wifi/IWifiManager;->updateWifiLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;)V
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getAvailableChannels(I)Landroid/os/Bundle;
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/IWifiScanner$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/IWifiScanner$Stub;->TRANSACTION_getAvailableChannels:I
-Landroid/net/wifi/IWifiScanner$Stub;->TRANSACTION_getMessenger:I
-Landroid/net/wifi/IWifiScanner;->getAvailableChannels(I)Landroid/os/Bundle;
-Landroid/net/wifi/IWifiScanner;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->checkConfigureWifiDisplayPermission()V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->close(Landroid/os/IBinder;)V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->getMessenger(Landroid/os/IBinder;)Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->getP2pStateMachineMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->setMiracastMode(I)V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;-><init>()V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_checkConfigureWifiDisplayPermission:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_close:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_getMessenger:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_getP2pStateMachineMessenger:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_setMiracastMode:I
-Landroid/net/wifi/p2p/IWifiP2pManager;->checkConfigureWifiDisplayPermission()V
-Landroid/net/wifi/p2p/IWifiP2pManager;->close(Landroid/os/IBinder;)V
-Landroid/net/wifi/p2p/IWifiP2pManager;->getMessenger(Landroid/os/IBinder;)Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager;->getP2pStateMachineMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager;->setMiracastMode(I)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;-><init>(Ljava/util/List;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->compressDnsName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->createPtrServiceQuery(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->createTxtServiceQuery(Ljava/lang/String;Ljava/lang/String;Landroid/net/nsd/DnsSdTxtRecord;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->DNS_TYPE_PTR:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->DNS_TYPE_TXT:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->sVmPacket:Ljava/util/Map;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->VERSION_1:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>()V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>(Ljava/lang/String;II)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;-><init>(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getDnsQueryName()Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getDnsType()I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getInstanceName()Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getTxtRecord()Ljava/util/Map;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getVersion()I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mDnsQueryName:Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mDnsType:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mInstanceName:Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mTxtRecord:Ljava/util/HashMap;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mVersion:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->newInstance(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->parse()Z
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->readDnsName(Ljava/io/DataInputStream;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->readTxtData(Ljava/io/DataInputStream;)Z
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->sVmpack:Ljava/util/Map;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;->bin2HexStr([B)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;->getSupplicantQueryList()Ljava/util/List;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;->SERVICE_TYPE_WS_DISCOVERY:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;-><init>(IIILjava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->getSupplicantQuery()Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->getTransactionId()I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mLength:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mProtocolType:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mQuery:Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mTransId:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->setTransactionId(I)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->validateQuery(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;-><init>()V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->BAD_REQUEST:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->REQUESTED_INFORMATION_NOT_AVAILABLE:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->SERVICE_PROTOCOL_NOT_AVAILABLE:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->SUCCESS:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->toString(I)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;-><init>(IIILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getRawData()[B
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getServiceType()I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getSrcDevice()Landroid/net/wifi/p2p/WifiP2pDevice;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getStatus()I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getTransactionId()I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->hexStr2Bin(Ljava/lang/String;)[B
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->MAX_BUF_SIZE:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mData:[B
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mDevice:Landroid/net/wifi/p2p/WifiP2pDevice;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mServiceType:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mStatus:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mTransId:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->newInstance(Ljava/lang/String;[B)Ljava/util/List;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->setSrcDevice(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;-><init>(Ljava/util/List;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;->createSupplicantQuery(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;->VERSION_1_0:I
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;-><init>()V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;-><init>(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->getUniqueServiceNames()Ljava/util/List;
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->getVersion()I
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->mUniqueServiceNames:Ljava/util/List;
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->mVersion:I
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->newInstance(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->parse()Z
-Landroid/net/wifi/p2p/WifiP2pConfig;->invalidate()V
-Landroid/net/wifi/p2p/WifiP2pConfig;->MAX_GROUP_OWNER_INTENT:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->detailedDevicePattern:Ljava/util/regex/Pattern;
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_CLIENT_DISCOVERABILITY:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_CONCURRENT_OPER:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_DEVICE_LIMIT:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_INFRA_MANAGED:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_INVITATION_PROCEDURE:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_SERVICE_DISCOVERY:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_CROSS_CONN:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_GROUP_FORMATION:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_GROUP_LIMIT:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_GROUP_OWNER:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_INTRA_BSS_DIST:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_PERSISTENT_GROUP:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_PERSISTENT_RECONN:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->isDeviceLimit()Z
-Landroid/net/wifi/p2p/WifiP2pDevice;->isGroupLimit()Z
-Landroid/net/wifi/p2p/WifiP2pDevice;->isInvitationCapable()Z
-Landroid/net/wifi/p2p/WifiP2pDevice;->parseHex(Ljava/lang/String;)I
-Landroid/net/wifi/p2p/WifiP2pDevice;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pDevice;->threeTokenPattern:Ljava/util/regex/Pattern;
-Landroid/net/wifi/p2p/WifiP2pDevice;->twoTokenPattern:Ljava/util/regex/Pattern;
-Landroid/net/wifi/p2p/WifiP2pDevice;->updateSupplicantDetails(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pDevice;->WPS_CONFIG_DISPLAY:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->WPS_CONFIG_KEYPAD:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->WPS_CONFIG_PUSHBUTTON:I
-Landroid/net/wifi/p2p/WifiP2pDeviceList;-><init>(Ljava/util/ArrayList;)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->clear()Z
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->isGroupOwner(Ljava/lang/String;)Z
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->mDevices:Ljava/util/HashMap;
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->remove(Landroid/net/wifi/p2p/WifiP2pDevice;)Z
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->remove(Landroid/net/wifi/p2p/WifiP2pDeviceList;)Z
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->updateGroupCapability(Ljava/lang/String;I)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->updateStatus(Ljava/lang/String;I)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->updateSupplicantDetails(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->validateDevice(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->validateDeviceAddress(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->addClient(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->addClient(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->contains(Landroid/net/wifi/p2p/WifiP2pDevice;)Z
-Landroid/net/wifi/p2p/WifiP2pGroup;->groupStartedPattern:Ljava/util/regex/Pattern;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mClients:Ljava/util/List;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mInterface:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mIsGroupOwner:Z
-Landroid/net/wifi/p2p/WifiP2pGroup;->mNetId:I
-Landroid/net/wifi/p2p/WifiP2pGroup;->mNetworkName:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mOwner:Landroid/net/wifi/p2p/WifiP2pDevice;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mPassphrase:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pGroup;->PERSISTENT_NET_ID:I
-Landroid/net/wifi/p2p/WifiP2pGroup;->removeClient(Landroid/net/wifi/p2p/WifiP2pDevice;)Z
-Landroid/net/wifi/p2p/WifiP2pGroup;->removeClient(Ljava/lang/String;)Z
-Landroid/net/wifi/p2p/WifiP2pGroup;->setNetworkName(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->setOwner(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->setPassphrase(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;->onDeleteGroup(I)V
-Landroid/net/wifi/p2p/WifiP2pGroupList;-><init>()V
-Landroid/net/wifi/p2p/WifiP2pGroupList;->add(Landroid/net/wifi/p2p/WifiP2pGroup;)V
-Landroid/net/wifi/p2p/WifiP2pGroupList;->clear()Z
-Landroid/net/wifi/p2p/WifiP2pGroupList;->contains(I)Z
-Landroid/net/wifi/p2p/WifiP2pGroupList;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/p2p/WifiP2pGroupList;->CREDENTIAL_MAX_NUM:I
-Landroid/net/wifi/p2p/WifiP2pGroupList;->getNetworkId(Ljava/lang/String;)I
-Landroid/net/wifi/p2p/WifiP2pGroupList;->getNetworkId(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/net/wifi/p2p/WifiP2pGroupList;->getOwnerAddr(I)Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pGroupList;->isClearCalled:Z
-Landroid/net/wifi/p2p/WifiP2pGroupList;->mListener:Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;
-Landroid/net/wifi/p2p/WifiP2pGroupList;->remove(I)V
-Landroid/net/wifi/p2p/WifiP2pGroupList;->remove(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;-><init>(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;Landroid/os/Binder;Landroid/net/wifi/p2p/WifiP2pManager;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->getListener(I)Ljava/lang/Object;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->handleDnsSdServiceResponse(Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->handleServiceResponse(Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->handleUpnpServiceResponse(Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->INVALID_LISTENER_KEY:I
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mBinder:Landroid/os/Binder;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mChannelListener:Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mContext:Landroid/content/Context;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mDnsSdServRspListener:Landroid/net/wifi/p2p/WifiP2pManager$DnsSdServiceResponseListener;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mDnsSdTxtListener:Landroid/net/wifi/p2p/WifiP2pManager$DnsSdTxtRecordListener;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mHandler:Landroid/net/wifi/p2p/WifiP2pManager$Channel$P2pHandler;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mListenerKey:I
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mListenerMap:Ljava/util/HashMap;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mListenerMapLock:Ljava/lang/Object;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mP2pManager:Landroid/net/wifi/p2p/WifiP2pManager;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mServRspListener:Landroid/net/wifi/p2p/WifiP2pManager$ServiceResponseListener;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mUpnpServRspListener:Landroid/net/wifi/p2p/WifiP2pManager$UpnpServiceResponseListener;
-Landroid/net/wifi/p2p/WifiP2pManager$HandoverMessageListener;->onHandoverMessageAvailable(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pManager$PersistentGroupInfoListener;->onPersistentGroupInfoAvailable(Landroid/net/wifi/p2p/WifiP2pGroupList;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_LOCAL_SERVICE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_LOCAL_SERVICE_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_LOCAL_SERVICE_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_SERVICE_REQUEST:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_SERVICE_REQUEST_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_SERVICE_REQUEST_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->BASE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CALLING_PACKAGE:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pManager;->CANCEL_CONNECT:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CANCEL_CONNECT_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CANCEL_CONNECT_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->checkChannel(Landroid/net/wifi/p2p/WifiP2pManager$Channel;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->checkP2pConfig(Landroid/net/wifi/p2p/WifiP2pConfig;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->checkServiceInfo(Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->checkServiceRequest(Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_LOCAL_SERVICES:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_LOCAL_SERVICES_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_LOCAL_SERVICES_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_SERVICE_REQUESTS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_SERVICE_REQUESTS_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_SERVICE_REQUESTS_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CONNECT:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CONNECT_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CONNECT_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CREATE_GROUP_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CREATE_GROUP_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DELETE_PERSISTENT_GROUP:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DELETE_PERSISTENT_GROUP_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DELETE_PERSISTENT_GROUP_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_PEERS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_PEERS_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_PEERS_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_SERVICES:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_SERVICES_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_SERVICES_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->EXTRA_HANDOVER_MESSAGE:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pManager;->getMessenger(Landroid/os/Binder;)Landroid/os/Messenger;
-Landroid/net/wifi/p2p/WifiP2pManager;->getNfcHandoverRequest(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$HandoverMessageListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->getNfcHandoverSelect(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$HandoverMessageListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->getP2pStateMachineMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/WifiP2pManager;->GET_HANDOVER_REQUEST:I
-Landroid/net/wifi/p2p/WifiP2pManager;->GET_HANDOVER_SELECT:I
-Landroid/net/wifi/p2p/WifiP2pManager;->initalizeChannel(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;Landroid/os/Messenger;Landroid/os/Binder;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;
-Landroid/net/wifi/p2p/WifiP2pManager;->initializeInternal(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;
-Landroid/net/wifi/p2p/WifiP2pManager;->initiatorReportNfcHandover(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Ljava/lang/String;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->INITIATOR_REPORT_NFC_HANDOVER:I
-Landroid/net/wifi/p2p/WifiP2pManager;->listen(Landroid/net/wifi/p2p/WifiP2pManager$Channel;ZLandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->MIRACAST_DISABLED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->MIRACAST_SINK:I
-Landroid/net/wifi/p2p/WifiP2pManager;->MIRACAST_SOURCE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->mService:Landroid/net/wifi/p2p/IWifiP2pManager;
-Landroid/net/wifi/p2p/WifiP2pManager;->PING:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_GROUP:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_GROUP_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_GROUP_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_LOCAL_SERVICE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_LOCAL_SERVICE_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_LOCAL_SERVICE_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_SERVICE_REQUEST:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_SERVICE_REQUEST_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_SERVICE_REQUEST_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REPORT_NFC_HANDOVER_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REPORT_NFC_HANDOVER_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REQUEST_CONNECTION_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REQUEST_GROUP_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REQUEST_PEERS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REQUEST_PERSISTENT_GROUP_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->responderReportNfcHandover(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Ljava/lang/String;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONDER_REPORT_NFC_HANDOVER:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_CONNECTION_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_GET_HANDOVER_MESSAGE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_GROUP_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_PEERS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_PERSISTENT_GROUP_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_SERVICE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_CHANNEL:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_CHANNEL_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_CHANNEL_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_DEVICE_NAME:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_DEVICE_NAME_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_DEVICE_NAME_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_WFD_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_WFD_INFO_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_WFD_INFO_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_LISTEN:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_LISTEN_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_LISTEN_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_WPS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_WPS_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_WPS_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_DISCOVERY:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_DISCOVERY_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_DISCOVERY_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_LISTEN:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_LISTEN_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_LISTEN_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pManager;->WIFI_P2P_PERSISTENT_GROUPS_CHANGED_ACTION:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->ENTER_PIN:I
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->PBC_REQ:I
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->PBC_RSP:I
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->SHOW_PIN:I
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->COUPLED_SINK_SUPPORT_AT_SINK:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->COUPLED_SINK_SUPPORT_AT_SOURCE:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->DEVICE_TYPE:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->getControlPort()I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->getDeviceInfoHex()Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->getMaxThroughput()I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->isCoupledSinkSupportedAtSink()Z
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->isCoupledSinkSupportedAtSource()Z
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->isSessionAvailable()Z
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->mCtrlPort:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->mDeviceInfo:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->mMaxThroughput:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->mWfdEnabled:Z
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->PRIMARY_SINK:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SECONDARY_SINK:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SESSION_AVAILABLE:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SESSION_AVAILABLE_BIT1:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SESSION_AVAILABLE_BIT2:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->setCoupledSinkSupportAtSink(Z)V
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->setCoupledSinkSupportAtSource(Z)V
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SOURCE_OR_PRIMARY_SINK:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->WFD_SOURCE:I
-Landroid/net/wifi/ParcelUtil;-><init>()V
-Landroid/net/wifi/ParcelUtil;->readCertificate(Landroid/os/Parcel;)Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/ParcelUtil;->readCertificates(Landroid/os/Parcel;)[Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/ParcelUtil;->readPrivateKey(Landroid/os/Parcel;)Ljava/security/PrivateKey;
-Landroid/net/wifi/ParcelUtil;->writeCertificate(Landroid/os/Parcel;Ljava/security/cert/X509Certificate;)V
-Landroid/net/wifi/ParcelUtil;->writeCertificates(Landroid/os/Parcel;[Ljava/security/cert/X509Certificate;)V
-Landroid/net/wifi/ParcelUtil;->writePrivateKey(Landroid/os/Parcel;Ljava/security/PrivateKey;)V
Landroid/net/wifi/PasspointManagementObjectDefinition;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/wifi/PasspointManagementObjectDefinition;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/PasspointManagementObjectDefinition;->getBaseUri()Ljava/lang/String;
@@ -39641,121 +38271,6 @@ Landroid/net/wifi/RssiPacketCountInfo;->rssi:I
Landroid/net/wifi/RssiPacketCountInfo;->rxgood:I
Landroid/net/wifi/RssiPacketCountInfo;->txbad:I
Landroid/net/wifi/RssiPacketCountInfo;->txgood:I
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->onRangingFailure(I)V
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->onRangingResults(Ljava/util/List;)V
-Landroid/net/wifi/rtt/IRttCallback$Stub;-><init>()V
-Landroid/net/wifi/rtt/IRttCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/rtt/IRttCallback;
-Landroid/net/wifi/rtt/IRttCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/rtt/IRttCallback$Stub;->TRANSACTION_onRangingFailure:I
-Landroid/net/wifi/rtt/IRttCallback$Stub;->TRANSACTION_onRangingResults:I
-Landroid/net/wifi/rtt/IRttCallback;->onRangingFailure(I)V
-Landroid/net/wifi/rtt/IRttCallback;->onRangingResults(Ljava/util/List;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->cancelRanging(Landroid/os/WorkSource;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->isAvailable()Z
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->startRanging(Landroid/os/IBinder;Ljava/lang/String;Landroid/os/WorkSource;Landroid/net/wifi/rtt/RangingRequest;Landroid/net/wifi/rtt/IRttCallback;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;-><init>()V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/rtt/IWifiRttManager;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_cancelRanging:I
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_isAvailable:I
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_startRanging:I
-Landroid/net/wifi/rtt/IWifiRttManager;->cancelRanging(Landroid/os/WorkSource;)V
-Landroid/net/wifi/rtt/IWifiRttManager;->isAvailable()Z
-Landroid/net/wifi/rtt/IWifiRttManager;->startRanging(Landroid/os/IBinder;Ljava/lang/String;Landroid/os/WorkSource;Landroid/net/wifi/rtt/RangingRequest;Landroid/net/wifi/rtt/IRttCallback;)V
-Landroid/net/wifi/rtt/RangingRequest$Builder;->mRttPeers:Ljava/util/List;
-Landroid/net/wifi/rtt/RangingRequest;-><init>(Ljava/util/List;)V
-Landroid/net/wifi/rtt/RangingRequest;->enforceValidity(Z)V
-Landroid/net/wifi/rtt/RangingRequest;->MAX_PEERS:I
-Landroid/net/wifi/rtt/RangingRequest;->mRttPeers:Ljava/util/List;
-Landroid/net/wifi/rtt/RangingResult;-><init>(ILandroid/net/MacAddress;IIIII[B[BJ)V
-Landroid/net/wifi/rtt/RangingResult;-><init>(ILandroid/net/wifi/aware/PeerHandle;IIIII[B[BJ)V
-Landroid/net/wifi/rtt/RangingResult;->EMPTY_BYTE_ARRAY:[B
-Landroid/net/wifi/rtt/RangingResult;->mDistanceMm:I
-Landroid/net/wifi/rtt/RangingResult;->mDistanceStdDevMm:I
-Landroid/net/wifi/rtt/RangingResult;->mLci:[B
-Landroid/net/wifi/rtt/RangingResult;->mLcr:[B
-Landroid/net/wifi/rtt/RangingResult;->mMac:Landroid/net/MacAddress;
-Landroid/net/wifi/rtt/RangingResult;->mNumAttemptedMeasurements:I
-Landroid/net/wifi/rtt/RangingResult;->mNumSuccessfulMeasurements:I
-Landroid/net/wifi/rtt/RangingResult;->mPeerHandle:Landroid/net/wifi/aware/PeerHandle;
-Landroid/net/wifi/rtt/RangingResult;->mRssi:I
-Landroid/net/wifi/rtt/RangingResult;->mStatus:I
-Landroid/net/wifi/rtt/RangingResult;->mTimestamp:J
-Landroid/net/wifi/rtt/RangingResult;->TAG:Ljava/lang/String;
-Landroid/net/wifi/rtt/ResponderConfig;-><init>(Landroid/net/MacAddress;Landroid/net/wifi/aware/PeerHandle;IZIIIII)V
-Landroid/net/wifi/rtt/ResponderConfig;->AWARE_BAND_2_DISCOVERY_CHANNEL:I
-Landroid/net/wifi/rtt/ResponderConfig;->isValid(Z)Z
-Landroid/net/wifi/rtt/ResponderConfig;->TAG:Ljava/lang/String;
-Landroid/net/wifi/rtt/ResponderConfig;->translateScanResultChannelWidth(I)I
-Landroid/net/wifi/rtt/WifiRttManager;-><init>(Landroid/content/Context;Landroid/net/wifi/rtt/IWifiRttManager;)V
-Landroid/net/wifi/rtt/WifiRttManager;->mContext:Landroid/content/Context;
-Landroid/net/wifi/rtt/WifiRttManager;->mService:Landroid/net/wifi/rtt/IWifiRttManager;
-Landroid/net/wifi/rtt/WifiRttManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/rtt/WifiRttManager;->VDBG:Z
-Landroid/net/wifi/RttManager$ParcelableRttParams;-><init>([Landroid/net/wifi/RttManager$RttParams;)V
-Landroid/net/wifi/RttManager$ParcelableRttParams;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/RttManager$ParcelableRttResults;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/RttManager$RttCapabilities;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/RttManager;-><init>(Landroid/content/Context;Landroid/net/wifi/rtt/WifiRttManager;)V
-Landroid/net/wifi/RttManager;->CMD_OP_REG_BINDER:I
-Landroid/net/wifi/RttManager;->DBG:Z
-Landroid/net/wifi/RttManager;->mContext:Landroid/content/Context;
-Landroid/net/wifi/RttManager;->mNewService:Landroid/net/wifi/rtt/WifiRttManager;
-Landroid/net/wifi/RttManager;->mRttCapabilities:Landroid/net/wifi/RttManager$RttCapabilities;
-Landroid/net/wifi/RttManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/ScanResult$InformationElement;-><init>()V
-Landroid/net/wifi/ScanResult$InformationElement;-><init>(Landroid/net/wifi/ScanResult$InformationElement;)V
-Landroid/net/wifi/ScanResult$InformationElement;->EID_HT_CAPABILITIES:I
-Landroid/net/wifi/ScanResult$InformationElement;->EID_VHT_CAPABILITIES:I
-Landroid/net/wifi/ScanResult$RadioChainInfo;-><init>()V
-Landroid/net/wifi/ScanResult$RadioChainInfo;->id:I
-Landroid/net/wifi/ScanResult$RadioChainInfo;->level:I
-Landroid/net/wifi/ScanResult;-><init>()V
-Landroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;JI[BLjava/lang/String;IIJ)V
-Landroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;IIJII)V
-Landroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;JILjava/lang/String;IIJIIIIIZ)V
-Landroid/net/wifi/ScanResult;-><init>(Ljava/lang/String;Ljava/lang/String;JILjava/lang/String;IIJIIIIIZ)V
-Landroid/net/wifi/ScanResult;->anqpElements:[Landroid/net/wifi/AnqpInformationElement;
-Landroid/net/wifi/ScanResult;->carrierApEapType:I
-Landroid/net/wifi/ScanResult;->carrierName:Ljava/lang/String;
-Landroid/net/wifi/ScanResult;->CIPHER_CCMP:I
-Landroid/net/wifi/ScanResult;->CIPHER_NONE:I
-Landroid/net/wifi/ScanResult;->CIPHER_NO_GROUP_ADDRESSED:I
-Landroid/net/wifi/ScanResult;->CIPHER_TKIP:I
-Landroid/net/wifi/ScanResult;->clearFlag(J)V
-Landroid/net/wifi/ScanResult;->FLAG_80211mc_RESPONDER:J
-Landroid/net/wifi/ScanResult;->FLAG_PASSPOINT_NETWORK:J
-Landroid/net/wifi/ScanResult;->is24GHz()Z
-Landroid/net/wifi/ScanResult;->is24GHz(I)Z
-Landroid/net/wifi/ScanResult;->is5GHz()Z
-Landroid/net/wifi/ScanResult;->is5GHz(I)Z
-Landroid/net/wifi/ScanResult;->isCarrierAp:Z
-Landroid/net/wifi/ScanResult;->KEY_MGMT_EAP:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_EAP_SHA256:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_FT_EAP:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_FT_PSK:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_NONE:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_OSEN:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_PSK:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_PSK_SHA256:I
-Landroid/net/wifi/ScanResult;->PROTOCOL_NONE:I
-Landroid/net/wifi/ScanResult;->PROTOCOL_OSEN:I
-Landroid/net/wifi/ScanResult;->PROTOCOL_WPA2:I
-Landroid/net/wifi/ScanResult;->PROTOCOL_WPA:I
-Landroid/net/wifi/ScanResult;->radioChainInfos:[Landroid/net/wifi/ScanResult$RadioChainInfo;
-Landroid/net/wifi/ScanResult;->setFlag(J)V
-Landroid/net/wifi/ScanResult;->UNSPECIFIED:I
-Landroid/net/wifi/SupplicantState;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/SupplicantState;->isConnecting(Landroid/net/wifi/SupplicantState;)Z
-Landroid/net/wifi/SupplicantState;->isDriverActive(Landroid/net/wifi/SupplicantState;)Z
-Landroid/net/wifi/SupplicantState;->isHandshakeState(Landroid/net/wifi/SupplicantState;)Z
Landroid/net/wifi/WifiActivityEnergyInfo;-><init>(JIJ[JJJJJ)V
Landroid/net/wifi/WifiActivityEnergyInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/WifiActivityEnergyInfo;->getControllerEnergyUsed()J
@@ -39779,460 +38294,6 @@ Landroid/net/wifi/WifiActivityEnergyInfo;->STACK_STATE_INVALID:I
Landroid/net/wifi/WifiActivityEnergyInfo;->STACK_STATE_STATE_ACTIVE:I
Landroid/net/wifi/WifiActivityEnergyInfo;->STACK_STATE_STATE_IDLE:I
Landroid/net/wifi/WifiActivityEnergyInfo;->STACK_STATE_STATE_SCANNING:I
-Landroid/net/wifi/WifiConfiguration$AuthAlgorithm;-><init>()V
-Landroid/net/wifi/WifiConfiguration$GroupCipher;-><init>()V
-Landroid/net/wifi/WifiConfiguration$GroupCipher;->GTK_NOT_USED:I
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;-><init>()V
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;->FT_EAP:I
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;->FT_PSK:I
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;->OSEN:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;-><init>()V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter()V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->CONNECT_CHOICE_EXISTS:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->CONNECT_CHOICE_NOT_EXISTS:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->copy(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_ASSOCIATION_REJECTION:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_AUTHENTICATION_FAILURE:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_AUTHENTICATION_NO_CREDENTIALS:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_BAD_LINK:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_BY_WIFI_MANAGER:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_BY_WRONG_PASSWORD:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_DHCP_FAILURE:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_DNS_FAILURE:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_DUE_TO_USER_SWITCH:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_NO_INTERNET_PERMANENT:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_NO_INTERNET_TEMPORARY:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_TLS_VERSION_MISMATCH:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_WPS_START:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidate()Landroid/net/wifi/ScanResult;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidateScore()I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getConnectChoice()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getConnectChoiceTimestamp()J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getDisableReasonCounter(I)I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getDisableTime()J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getHasEverConnected()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkDisableReasonString()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkDisableReasonString(I)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionBSSID()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionDisableReason()I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionStatus()I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkStatusString()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getSeenInLastQualifiedNetworkSelection()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->incrementDisableReasonCounter(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP:J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isDisabledByReason(I)Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkEnabled()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkPermanentlyDisabled()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkTemporaryDisabled()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNotRecommended()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mCandidate:Landroid/net/wifi/ScanResult;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mCandidateScore:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mConnectChoice:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mConnectChoiceTimestamp:J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mHasEverConnected:Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mNetworkSeclectionDisableCounter:[I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mNetworkSelectionBSSID:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mNetworkSelectionDisableReason:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mNotRecommended:Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mSeenInLastQualifiedNetworkSelection:Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mStatus:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mTemporarilyDisabledTimestamp:J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_DISABLED_MAX:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_DISABLED_STARTING_INDEX:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_ENABLE:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_ENABLED:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_PERMANENTLY_DISABLED:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_STATUS_MAX:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_TEMPORARY_DISABLED:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->QUALITY_NETWORK_SELECTION_DISABLE_REASON:[Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->QUALITY_NETWORK_SELECTION_STATUS:[Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setCandidate(Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setCandidateScore(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setConnectChoice(Ljava/lang/String;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setConnectChoiceTimestamp(J)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setDisableReasonCounter(II)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setDisableTime(J)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setHasEverConnected(Z)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionBSSID(Ljava/lang/String;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionDisableReason(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionStatus(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNotRecommended(Z)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setSeenInLastQualifiedNetworkSelection(Z)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->writeToParcel(Landroid/os/Parcel;)V
-Landroid/net/wifi/WifiConfiguration$PairwiseCipher;-><init>()V
-Landroid/net/wifi/WifiConfiguration$Protocol;-><init>()V
-Landroid/net/wifi/WifiConfiguration$Protocol;->OSEN:I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;-><init>()V
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->clear()V
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->getAssociationStatus()I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->mAssociationStatus:I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->NONE:I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->setAssociationStatus(I)V
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->STATUS_AP_UNABLE_TO_HANDLE_NEW_STA:I
-Landroid/net/wifi/WifiConfiguration$Status;-><init>()V
-Landroid/net/wifi/WifiConfiguration;->AP_BAND_2GHZ:I
-Landroid/net/wifi/WifiConfiguration;->AP_BAND_5GHZ:I
-Landroid/net/wifi/WifiConfiguration;->AP_BAND_ANY:I
-Landroid/net/wifi/WifiConfiguration;->BACKUP_VERSION:I
-Landroid/net/wifi/WifiConfiguration;->bssidVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->configKey()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->configKey(Z)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->creationTime:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->dhcpServer:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->didSelfAdd:Z
-Landroid/net/wifi/WifiConfiguration;->dtimInterval:I
-Landroid/net/wifi/WifiConfiguration;->ephemeral:Z
-Landroid/net/wifi/WifiConfiguration;->getBytesForBackup()[B
-Landroid/net/wifi/WifiConfiguration;->getKeyIdForCredentials(Landroid/net/wifi/WifiConfiguration;)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->getMoTree()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->getNetworkSelectionStatus()Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;
-Landroid/net/wifi/WifiConfiguration;->getOrCreateRandomizedMacAddress()Landroid/net/MacAddress;
-Landroid/net/wifi/WifiConfiguration;->getRandomizedMacAddress()Landroid/net/MacAddress;
-Landroid/net/wifi/WifiConfiguration;->getWifiConfigFromBackup(Ljava/io/DataInputStream;)Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/WifiConfiguration;->hiddenSSIDVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->HOME_NETWORK_RSSI_BOOST:I
-Landroid/net/wifi/WifiConfiguration;->INVALID_NETWORK_ID:I
-Landroid/net/wifi/WifiConfiguration;->isLegacyPasspointConfig:Z
-Landroid/net/wifi/WifiConfiguration;->isLinked(Landroid/net/wifi/WifiConfiguration;)Z
-Landroid/net/wifi/WifiConfiguration;->isMetered(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiInfo;)Z
-Landroid/net/wifi/WifiConfiguration;->isOpenNetwork()Z
-Landroid/net/wifi/WifiConfiguration;->isValidMacAddressForRandomization(Landroid/net/MacAddress;)Z
-Landroid/net/wifi/WifiConfiguration;->lastConnected:J
-Landroid/net/wifi/WifiConfiguration;->lastDisconnected:J
-Landroid/net/wifi/WifiConfiguration;->linkedConfigurations:Ljava/util/HashMap;
-Landroid/net/wifi/WifiConfiguration;->LOCAL_ONLY_NETWORK_ID:I
-Landroid/net/wifi/WifiConfiguration;->MAXIMUM_RANDOM_MAC_GENERATION_RETRY:I
-Landroid/net/wifi/WifiConfiguration;->mCachedConfigKey:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->meteredOverride:I
-Landroid/net/wifi/WifiConfiguration;->METERED_OVERRIDE_METERED:I
-Landroid/net/wifi/WifiConfiguration;->METERED_OVERRIDE_NONE:I
-Landroid/net/wifi/WifiConfiguration;->METERED_OVERRIDE_NOT_METERED:I
-Landroid/net/wifi/WifiConfiguration;->mNetworkSelectionStatus:Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;
-Landroid/net/wifi/WifiConfiguration;->mPasspointManagementObjectTree:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->mRandomizedMacAddress:Landroid/net/MacAddress;
-Landroid/net/wifi/WifiConfiguration;->peerWifiConfiguration:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->pmfVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->priorityVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->pskVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->readBitSet(Landroid/os/Parcel;)Ljava/util/BitSet;
-Landroid/net/wifi/WifiConfiguration;->recentFailure:Landroid/net/wifi/WifiConfiguration$RecentFailure;
-Landroid/net/wifi/WifiConfiguration;->requirePMF:Z
-Landroid/net/wifi/WifiConfiguration;->setNetworkSelectionStatus(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V
-Landroid/net/wifi/WifiConfiguration;->setPasspointManagementObjectTree(Ljava/lang/String;)V
-Landroid/net/wifi/WifiConfiguration;->setRandomizedMacAddress(Landroid/net/MacAddress;)V
-Landroid/net/wifi/WifiConfiguration;->ssidVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->trimStringForKeyId(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->UNKNOWN_UID:I
-Landroid/net/wifi/WifiConfiguration;->updateIdentiferVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->updateIdentifier:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->updateTime:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->userApproved:I
-Landroid/net/wifi/WifiConfiguration;->userApprovedAsString(I)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->USER_APPROVED:I
-Landroid/net/wifi/WifiConfiguration;->USER_BANNED:I
-Landroid/net/wifi/WifiConfiguration;->USER_PENDING:I
-Landroid/net/wifi/WifiConfiguration;->USER_UNSPECIFIED:I
-Landroid/net/wifi/WifiConfiguration;->wepTxKeyIdxVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->writeBitSet(Landroid/os/Parcel;Ljava/util/BitSet;)V
-Landroid/net/wifi/WifiEnterpriseConfig$Eap;-><init>()V
-Landroid/net/wifi/WifiEnterpriseConfig$Eap;->strings:[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$Phase2;-><init>()V
-Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->AUTHEAP_PREFIX:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->AUTH_PREFIX:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->strings:[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$SupplicantLoader;->loadValue(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$SupplicantSaver;->saveValue(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/net/wifi/WifiEnterpriseConfig;->ALTSUBJECT_MATCH_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ANON_IDENTITY_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CA_CERT_ALIAS_DELIMITER:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CA_CERT_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CA_CERT_PREFIX:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CA_PATH_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CLIENT_CERT_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CLIENT_CERT_PREFIX:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->convertToQuotedString(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->copyFrom(Landroid/net/wifi/WifiEnterpriseConfig;ZLjava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->copyFromExternal(Landroid/net/wifi/WifiEnterpriseConfig;Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->decodeCaCertificateAlias(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->DOM_SUFFIX_MATCH_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->EAP_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->EMPTY_VALUE:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->encodeCaCertificateAlias(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_DISABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_ENABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_ID_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_ID_KEYSTORE:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getCaCertificateAliases()[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getCaPath()Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getClientPrivateKey()Ljava/security/PrivateKey;
-Landroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getKeyId(Landroid/net/wifi/WifiEnterpriseConfig;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getStringIndex([Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/net/wifi/WifiEnterpriseConfig;->IDENTITY_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->isEapMethodValid()Z
-Landroid/net/wifi/WifiEnterpriseConfig;->KEYSTORES_URI:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->KEYSTORE_URI:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->loadFromSupplicant(Landroid/net/wifi/WifiEnterpriseConfig$SupplicantLoader;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->mCaCerts:[Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/WifiEnterpriseConfig;->mClientCertificateChain:[Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/WifiEnterpriseConfig;->mClientPrivateKey:Ljava/security/PrivateKey;
-Landroid/net/wifi/WifiEnterpriseConfig;->mEapMethod:I
-Landroid/net/wifi/WifiEnterpriseConfig;->mPhase2Method:I
-Landroid/net/wifi/WifiEnterpriseConfig;->OPP_KEY_CACHING:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->PASSWORD_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->PHASE2_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->PLMN_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->PRIVATE_KEY_ID_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->REALM_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->removeDoubleQuotes(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->resetCaCertificate()V
-Landroid/net/wifi/WifiEnterpriseConfig;->resetClientKeyEntry()V
-Landroid/net/wifi/WifiEnterpriseConfig;->saveToSupplicant(Landroid/net/wifi/WifiEnterpriseConfig$SupplicantSaver;)Z
-Landroid/net/wifi/WifiEnterpriseConfig;->setCaCertificateAliases([Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->setCaPath(Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->setFieldValue(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->setFieldValue(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->SUBJECT_MATCH_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->SUPPLICANT_CONFIG_KEYS:[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->UNQUOTED_KEYS:Ljava/util/List;
-Landroid/net/wifi/WifiInfo;-><init>(Landroid/net/wifi/WifiInfo;)V
-Landroid/net/wifi/WifiInfo;->hasRealMacAddress()Z
-Landroid/net/wifi/WifiInfo;->is24GHz()Z
-Landroid/net/wifi/WifiInfo;->MAX_RSSI:I
-Landroid/net/wifi/WifiInfo;->mEphemeral:Z
-Landroid/net/wifi/WifiInfo;->mFrequency:I
-Landroid/net/wifi/WifiInfo;->MIN_RSSI:I
-Landroid/net/wifi/WifiInfo;->mLinkSpeed:I
-Landroid/net/wifi/WifiInfo;->mMeteredHint:Z
-Landroid/net/wifi/WifiInfo;->mNetworkId:I
-Landroid/net/wifi/WifiInfo;->mRssi:I
-Landroid/net/wifi/WifiInfo;->mSupplicantState:Landroid/net/wifi/SupplicantState;
-Landroid/net/wifi/WifiInfo;->reset()V
-Landroid/net/wifi/WifiInfo;->rxSuccess:J
-Landroid/net/wifi/WifiInfo;->rxSuccessRate:D
-Landroid/net/wifi/WifiInfo;->setEphemeral(Z)V
-Landroid/net/wifi/WifiInfo;->setFrequency(I)V
-Landroid/net/wifi/WifiInfo;->setInetAddress(Ljava/net/InetAddress;)V
-Landroid/net/wifi/WifiInfo;->setMeteredHint(Z)V
-Landroid/net/wifi/WifiInfo;->setSSID(Landroid/net/wifi/WifiSsid;)V
-Landroid/net/wifi/WifiInfo;->stateMap:Ljava/util/EnumMap;
-Landroid/net/wifi/WifiInfo;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiInfo;->txBad:J
-Landroid/net/wifi/WifiInfo;->txBadRate:D
-Landroid/net/wifi/WifiInfo;->txRetries:J
-Landroid/net/wifi/WifiInfo;->txRetriesRate:D
-Landroid/net/wifi/WifiInfo;->txSuccess:J
-Landroid/net/wifi/WifiInfo;->txSuccessRate:D
-Landroid/net/wifi/WifiInfo;->valueOf(Ljava/lang/String;)Landroid/net/wifi/SupplicantState;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallback;->REQUEST_REGISTERED:I
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;-><init>(Landroid/net/wifi/WifiManager;Landroid/os/Looper;Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallback;)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mLooper:Landroid/os/Looper;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mMessenger:Landroid/os/Messenger;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mWifiManager:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->notifyFailed(I)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;-><init>()V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onRegistered(Landroid/net/wifi/WifiManager$LocalOnlyHotspotSubscription;)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onStarted(Landroid/net/wifi/WifiConfiguration;)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onStopped()V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;-><init>(Landroid/net/wifi/WifiManager;Landroid/os/Looper;Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mLooper:Landroid/os/Looper;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mMessenger:Landroid/os/Messenger;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mWifiManager:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->registered()V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotReservation;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotReservation;->mConfig:Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotSubscription;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/WifiManager$MulticastLock;->mBinder:Landroid/os/IBinder;
-Landroid/net/wifi/WifiManager$MulticastLock;->mHeld:Z
-Landroid/net/wifi/WifiManager$MulticastLock;->mRefCount:I
-Landroid/net/wifi/WifiManager$MulticastLock;->mRefCounted:Z
-Landroid/net/wifi/WifiManager$MulticastLock;->mTag:Ljava/lang/String;
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;-><init>(Landroid/os/Looper;Landroid/net/wifi/hotspot2/ProvisioningCallback;)V
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->mCallback:Landroid/net/wifi/hotspot2/ProvisioningCallback;
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->onProvisioningFailure(I)V
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->onProvisioningStatus(I)V
-Landroid/net/wifi/WifiManager$ServiceHandler;->dispatchMessageToListeners(Landroid/os/Message;)V
-Landroid/net/wifi/WifiManager$SoftApCallback;->onNumClientsChanged(I)V
-Landroid/net/wifi/WifiManager$SoftApCallback;->onStateChanged(II)V
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;-><init>(Landroid/os/Looper;Landroid/net/wifi/WifiManager$SoftApCallback;)V
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->mCallback:Landroid/net/wifi/WifiManager$SoftApCallback;
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->onNumClientsChanged(I)V
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->onStateChanged(II)V
-Landroid/net/wifi/WifiManager$TxPacketCountListener;->onFailure(I)V
-Landroid/net/wifi/WifiManager$TxPacketCountListener;->onSuccess(I)V
-Landroid/net/wifi/WifiManager$WifiLock;->mBinder:Landroid/os/IBinder;
-Landroid/net/wifi/WifiManager$WifiLock;->mHeld:Z
-Landroid/net/wifi/WifiManager$WifiLock;->mLockType:I
-Landroid/net/wifi/WifiManager$WifiLock;->mRefCount:I
-Landroid/net/wifi/WifiManager$WifiLock;->mRefCounted:Z
-Landroid/net/wifi/WifiManager$WifiLock;->mTag:Ljava/lang/String;
-Landroid/net/wifi/WifiManager$WifiLock;->mWorkSource:Landroid/os/WorkSource;
-Landroid/net/wifi/WifiManager;-><init>(Landroid/content/Context;Landroid/net/wifi/IWifiManager;Landroid/os/Looper;)V
-Landroid/net/wifi/WifiManager;->ACTION_PASSPOINT_DEAUTH_IMMINENT:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_PASSPOINT_ICON:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_PASSPOINT_OSU_PROVIDERS_LIST:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_PASSPOINT_SUBSCRIPTION_REMEDIATION:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_REQUEST_DISABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_REQUEST_ENABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;)I
-Landroid/net/wifi/WifiManager;->BASE:I
-Landroid/net/wifi/WifiManager;->BATCHED_SCAN_RESULTS_AVAILABLE_ACTION:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->BUSY:I
-Landroid/net/wifi/WifiManager;->CANCEL_WPS:I
-Landroid/net/wifi/WifiManager;->CANCEL_WPS_FAILED:I
-Landroid/net/wifi/WifiManager;->CANCEL_WPS_SUCCEDED:I
-Landroid/net/wifi/WifiManager;->CONNECT_NETWORK:I
-Landroid/net/wifi/WifiManager;->CONNECT_NETWORK_FAILED:I
-Landroid/net/wifi/WifiManager;->CONNECT_NETWORK_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_IN:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_INOUT:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_NONE:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_NOTIFICATION:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_OUT:I
-Landroid/net/wifi/WifiManager;->deauthenticateNetwork(JZ)V
-Landroid/net/wifi/WifiManager;->DEFAULT_POOR_NETWORK_AVOIDANCE_ENABLED:Z
-Landroid/net/wifi/WifiManager;->disableEphemeralNetwork(Ljava/lang/String;)V
-Landroid/net/wifi/WifiManager;->DISABLE_NETWORK:I
-Landroid/net/wifi/WifiManager;->DISABLE_NETWORK_FAILED:I
-Landroid/net/wifi/WifiManager;->DISABLE_NETWORK_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->enableWifiConnectivityManager(Z)V
-Landroid/net/wifi/WifiManager;->ERROR:I
-Landroid/net/wifi/WifiManager;->ERROR_AUTH_FAILURE_EAP_FAILURE:I
-Landroid/net/wifi/WifiManager;->ERROR_AUTH_FAILURE_NONE:I
-Landroid/net/wifi/WifiManager;->ERROR_AUTH_FAILURE_TIMEOUT:I
-Landroid/net/wifi/WifiManager;->ERROR_AUTH_FAILURE_WRONG_PSWD:I
-Landroid/net/wifi/WifiManager;->EXTRA_ANQP_ELEMENT_DATA:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_BSSID_LONG:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_DELAY:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_ESS:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_FILENAME:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_ICON:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_LINK_PROPERTIES:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_NETWORK_CAPABILITIES:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_SCAN_AVAILABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_SUBSCRIPTION_REMEDIATION_METHOD:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_SUPPLICANT_ERROR_REASON:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_URL:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_FAILURE_REASON:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_INTERFACE_NAME:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_MODE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->factoryReset()V
-Landroid/net/wifi/WifiManager;->FORGET_NETWORK:I
-Landroid/net/wifi/WifiManager;->FORGET_NETWORK_FAILED:I
-Landroid/net/wifi/WifiManager;->FORGET_NETWORK_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->getAllMatchingWifiConfigs(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/WifiManager;->getChannel()Lcom/android/internal/util/AsyncChannel;
-Landroid/net/wifi/WifiManager;->getControllerActivityEnergyInfo(I)Landroid/net/wifi/WifiActivityEnergyInfo;
-Landroid/net/wifi/WifiManager;->getCurrentNetworkWpsNfcConfigurationToken()Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->getEnableAutoJoinWhenAssociated()Z
-Landroid/net/wifi/WifiManager;->getMatchingOsuProviders(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/WifiManager;->getSupportedFeatures()I
-Landroid/net/wifi/WifiManager;->getTxPacketCount(Landroid/net/wifi/WifiManager$TxPacketCountListener;)V
-Landroid/net/wifi/WifiManager;->HOTSPOT_FAILED:I
-Landroid/net/wifi/WifiManager;->HOTSPOT_OBSERVER_REGISTERED:I
-Landroid/net/wifi/WifiManager;->HOTSPOT_STARTED:I
-Landroid/net/wifi/WifiManager;->HOTSPOT_STOPPED:I
-Landroid/net/wifi/WifiManager;->IFACE_IP_MODE_CONFIGURATION_ERROR:I
-Landroid/net/wifi/WifiManager;->IFACE_IP_MODE_LOCAL_ONLY:I
-Landroid/net/wifi/WifiManager;->IFACE_IP_MODE_TETHERED:I
-Landroid/net/wifi/WifiManager;->IFACE_IP_MODE_UNSPECIFIED:I
-Landroid/net/wifi/WifiManager;->INVALID_ARGS:I
-Landroid/net/wifi/WifiManager;->INVALID_KEY:I
-Landroid/net/wifi/WifiManager;->IN_PROGRESS:I
-Landroid/net/wifi/WifiManager;->isAdditionalStaSupported()Z
-Landroid/net/wifi/WifiManager;->isDualModeSupported()Z
-Landroid/net/wifi/WifiManager;->isFeatureSupported(I)Z
-Landroid/net/wifi/WifiManager;->isMulticastEnabled()Z
-Landroid/net/wifi/WifiManager;->isOffChannelTdlsSupported()Z
-Landroid/net/wifi/WifiManager;->isPasspointSupported()Z
-Landroid/net/wifi/WifiManager;->isWifiAwareSupported()Z
-Landroid/net/wifi/WifiManager;->mAsyncChannel:Lcom/android/internal/util/AsyncChannel;
-Landroid/net/wifi/WifiManager;->matchProviderWithCurrentNetwork(Ljava/lang/String;)I
-Landroid/net/wifi/WifiManager;->MAX_ACTIVE_LOCKS:I
-Landroid/net/wifi/WifiManager;->mConnected:Ljava/util/concurrent/CountDownLatch;
-Landroid/net/wifi/WifiManager;->mContext:Landroid/content/Context;
-Landroid/net/wifi/WifiManager;->mListenerKey:I
-Landroid/net/wifi/WifiManager;->mListenerMap:Landroid/util/SparseArray;
-Landroid/net/wifi/WifiManager;->mListenerMapLock:Ljava/lang/Object;
-Landroid/net/wifi/WifiManager;->mLock:Ljava/lang/Object;
-Landroid/net/wifi/WifiManager;->mLOHSCallbackProxy:Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;
-Landroid/net/wifi/WifiManager;->mLOHSObserverProxy:Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;
-Landroid/net/wifi/WifiManager;->mLooper:Landroid/os/Looper;
-Landroid/net/wifi/WifiManager;->mTargetSdkVersion:I
-Landroid/net/wifi/WifiManager;->NOT_AUTHORIZED:I
-Landroid/net/wifi/WifiManager;->putListener(Ljava/lang/Object;)I
-Landroid/net/wifi/WifiManager;->queryPasspointIcon(JLjava/lang/String;)V
-Landroid/net/wifi/WifiManager;->registerSoftApCallback(Landroid/net/wifi/WifiManager$SoftApCallback;Landroid/os/Handler;)V
-Landroid/net/wifi/WifiManager;->removeListener(I)Ljava/lang/Object;
-Landroid/net/wifi/WifiManager;->restoreBackupData([B)V
-Landroid/net/wifi/WifiManager;->restoreSupplicantBackupData([B[B)V
-Landroid/net/wifi/WifiManager;->retrieveBackupData()[B
-Landroid/net/wifi/WifiManager;->RSSI_PKTCNT_FETCH:I
-Landroid/net/wifi/WifiManager;->RSSI_PKTCNT_FETCH_FAILED:I
-Landroid/net/wifi/WifiManager;->RSSI_PKTCNT_FETCH_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->SAP_START_FAILURE_GENERAL:I
-Landroid/net/wifi/WifiManager;->SAP_START_FAILURE_NO_CHANNEL:I
-Landroid/net/wifi/WifiManager;->SAVE_NETWORK:I
-Landroid/net/wifi/WifiManager;->SAVE_NETWORK_FAILED:I
-Landroid/net/wifi/WifiManager;->SAVE_NETWORK_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->setCountryCode(Ljava/lang/String;)V
-Landroid/net/wifi/WifiManager;->setEnableAutoJoinWhenAssociated(Z)Z
-Landroid/net/wifi/WifiManager;->sServiceHandlerDispatchLock:Ljava/lang/Object;
-Landroid/net/wifi/WifiManager;->startSoftAp(Landroid/net/wifi/WifiConfiguration;)Z
-Landroid/net/wifi/WifiManager;->startSubscriptionProvisioning(Landroid/net/wifi/hotspot2/OsuProvider;Landroid/net/wifi/hotspot2/ProvisioningCallback;Landroid/os/Handler;)V
-Landroid/net/wifi/WifiManager;->START_WPS:I
-Landroid/net/wifi/WifiManager;->START_WPS_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->stopLocalOnlyHotspot()V
-Landroid/net/wifi/WifiManager;->stopSoftAp()Z
-Landroid/net/wifi/WifiManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->unregisterLocalOnlyHotspotObserver()V
-Landroid/net/wifi/WifiManager;->unregisterSoftApCallback(Landroid/net/wifi/WifiManager$SoftApCallback;)V
-Landroid/net/wifi/WifiManager;->updateInterfaceIpState(Ljava/lang/String;I)V
-Landroid/net/wifi/WifiManager;->watchLocalOnlyHotspot(Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;Landroid/os/Handler;)V
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_ADDITIONAL_STA:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_AP_STA:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_AWARE:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_BATCH_SCAN:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_CONFIG_NDO:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_CONTROL_ROAMING:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_D2AP_RTT:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_D2D_RTT:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_EPR:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_HAL_EPNO:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_IE_WHITELIST:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_INFRA:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_INFRA_5G:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_LINK_LAYER_STATS:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_LOGGER:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_MKEEP_ALIVE:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_MOBILE_HOTSPOT:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_P2P:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_PASSPOINT:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_PNO:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_RSSI_MONITOR:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_SCANNER:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_SCAN_RAND:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_TDLS:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_TDLS_OFFCHANNEL:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_TRANSMIT_POWER:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_TX_POWER_LIMIT:I
-Landroid/net/wifi/WifiManager;->WIFI_MODE_NO_LOCKS_HELD:I
-Landroid/net/wifi/WifiManager;->WIFI_SCAN_AVAILABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->WPS_COMPLETED:I
-Landroid/net/wifi/WifiManager;->WPS_FAILED:I
-Landroid/net/wifi/WifiNetworkConnectionStatistics;->TAG:Ljava/lang/String;
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;-><init>(Landroid/os/Handler;)V
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;->mHandler:Landroid/os/Handler;
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;->networkCacheUpdated(Ljava/util/List;)V
@@ -40262,116 +38323,6 @@ Landroid/net/wifi/WifiNetworkScoreCache;->registerListener(Landroid/net/wifi/Wif
Landroid/net/wifi/WifiNetworkScoreCache;->TAG:Ljava/lang/String;
Landroid/net/wifi/WifiNetworkScoreCache;->unregisterListener()V
Landroid/net/wifi/WifiNetworkScoreCache;->updateScores(Ljava/util/List;)V
-Landroid/net/wifi/WifiScanner$ChannelSpec;->dwellTimeMS:I
-Landroid/net/wifi/WifiScanner$ChannelSpec;->passive:Z
-Landroid/net/wifi/WifiScanner$HotlistSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$OperationResult;-><init>(ILjava/lang/String;)V
-Landroid/net/wifi/WifiScanner$OperationResult;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$OperationResult;->description:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner$OperationResult;->reason:I
-Landroid/net/wifi/WifiScanner$ParcelableScanData;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$ParcelableScanResults;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$PnoScanListener;->onPnoNetworkFound([Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->authBitField:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->AUTH_CODE_EAPOL:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->AUTH_CODE_OPEN:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->AUTH_CODE_PSK:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->flags:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_A_BAND:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_DIRECTED_SCAN:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_G_BAND:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_SAME_NETWORK:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_STRICT_MATCH:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->ssid:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner$PnoSettings;-><init>()V
-Landroid/net/wifi/WifiScanner$PnoSettings;->band5GHzBonus:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$PnoSettings;->currentConnectionBonus:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->initialScoreMax:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->isConnected:Z
-Landroid/net/wifi/WifiScanner$PnoSettings;->min24GHzRssi:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->min5GHzRssi:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->networkList:[Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;
-Landroid/net/wifi/WifiScanner$PnoSettings;->sameNetworkBonus:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->secureBonus:I
-Landroid/net/wifi/WifiScanner$ScanData;-><init>()V
-Landroid/net/wifi/WifiScanner$ScanData;-><init>(IIIZ[Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/WifiScanner$ScanData;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$ScanData;->getBucketsScanned()I
-Landroid/net/wifi/WifiScanner$ScanData;->isAllChannelsScanned()Z
-Landroid/net/wifi/WifiScanner$ScanData;->mAllChannelsScanned:Z
-Landroid/net/wifi/WifiScanner$ScanData;->mBucketsScanned:I
-Landroid/net/wifi/WifiScanner$ScanData;->mFlags:I
-Landroid/net/wifi/WifiScanner$ScanData;->mId:I
-Landroid/net/wifi/WifiScanner$ScanData;->mResults:[Landroid/net/wifi/ScanResult;
-Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;->ssid:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner$ScanSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$ScanSettings;->hiddenNetworks:[Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;
-Landroid/net/wifi/WifiScanner$ScanSettings;->isPnoScan:Z
-Landroid/net/wifi/WifiScanner$ScanSettings;->type:I
-Landroid/net/wifi/WifiScanner$WifiChangeSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner;-><init>(Landroid/content/Context;Landroid/net/wifi/IWifiScanner;Landroid/os/Looper;)V
-Landroid/net/wifi/WifiScanner;->addListener(Landroid/net/wifi/WifiScanner$ActionListener;)I
-Landroid/net/wifi/WifiScanner;->BASE:I
-Landroid/net/wifi/WifiScanner;->CMD_DEREGISTER_SCAN_LISTENER:I
-Landroid/net/wifi/WifiScanner;->CMD_FULL_SCAN_RESULT:I
-Landroid/net/wifi/WifiScanner;->CMD_GET_SCAN_RESULTS:I
-Landroid/net/wifi/WifiScanner;->CMD_GET_SINGLE_SCAN_RESULTS:I
-Landroid/net/wifi/WifiScanner;->CMD_OP_FAILED:I
-Landroid/net/wifi/WifiScanner;->CMD_OP_SUCCEEDED:I
-Landroid/net/wifi/WifiScanner;->CMD_PNO_NETWORK_FOUND:I
-Landroid/net/wifi/WifiScanner;->CMD_REGISTER_SCAN_LISTENER:I
-Landroid/net/wifi/WifiScanner;->CMD_SCAN_RESULT:I
-Landroid/net/wifi/WifiScanner;->CMD_SINGLE_SCAN_COMPLETED:I
-Landroid/net/wifi/WifiScanner;->CMD_START_BACKGROUND_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_START_PNO_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_START_SINGLE_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_STOP_BACKGROUND_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_STOP_PNO_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_STOP_SINGLE_SCAN:I
-Landroid/net/wifi/WifiScanner;->DBG:Z
-Landroid/net/wifi/WifiScanner;->deregisterScanListener(Landroid/net/wifi/WifiScanner$ScanListener;)V
-Landroid/net/wifi/WifiScanner;->getAvailableChannels(I)Ljava/util/List;
-Landroid/net/wifi/WifiScanner;->getListener(I)Ljava/lang/Object;
-Landroid/net/wifi/WifiScanner;->getListenerKey(Ljava/lang/Object;)I
-Landroid/net/wifi/WifiScanner;->getSingleScanResults()Ljava/util/List;
-Landroid/net/wifi/WifiScanner;->GET_AVAILABLE_CHANNELS_EXTRA:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->INVALID_KEY:I
-Landroid/net/wifi/WifiScanner;->mAsyncChannel:Lcom/android/internal/util/AsyncChannel;
-Landroid/net/wifi/WifiScanner;->mContext:Landroid/content/Context;
-Landroid/net/wifi/WifiScanner;->mInternalHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiScanner;->mListenerKey:I
-Landroid/net/wifi/WifiScanner;->mListenerMap:Landroid/util/SparseArray;
-Landroid/net/wifi/WifiScanner;->mListenerMapLock:Ljava/lang/Object;
-Landroid/net/wifi/WifiScanner;->mService:Landroid/net/wifi/IWifiScanner;
-Landroid/net/wifi/WifiScanner;->PNO_PARAMS_PNO_SETTINGS_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->PNO_PARAMS_SCAN_SETTINGS_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->putListener(Ljava/lang/Object;)I
-Landroid/net/wifi/WifiScanner;->registerScanListener(Landroid/net/wifi/WifiScanner$ScanListener;)V
-Landroid/net/wifi/WifiScanner;->removeListener(I)Ljava/lang/Object;
-Landroid/net/wifi/WifiScanner;->removeListener(Ljava/lang/Object;)I
-Landroid/net/wifi/WifiScanner;->SCAN_PARAMS_SCAN_SETTINGS_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->SCAN_PARAMS_WORK_SOURCE_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->startConnectedPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;Landroid/net/wifi/WifiScanner$PnoScanListener;)V
-Landroid/net/wifi/WifiScanner;->startDisconnectedPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;Landroid/net/wifi/WifiScanner$PnoScanListener;)V
-Landroid/net/wifi/WifiScanner;->startPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;I)V
-Landroid/net/wifi/WifiScanner;->stopPnoScan(Landroid/net/wifi/WifiScanner$ScanListener;)V
-Landroid/net/wifi/WifiScanner;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->TYPE_HIGH_ACCURACY:I
-Landroid/net/wifi/WifiScanner;->TYPE_LOW_LATENCY:I
-Landroid/net/wifi/WifiScanner;->TYPE_LOW_POWER:I
-Landroid/net/wifi/WifiScanner;->validateChannel()V
-Landroid/net/wifi/WifiSsid;-><init>()V
-Landroid/net/wifi/WifiSsid;->convertToBytes(Ljava/lang/String;)V
-Landroid/net/wifi/WifiSsid;->createFromByteArray([B)Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/WifiSsid;->createFromHex(Ljava/lang/String;)Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/WifiSsid;->getHexString()Ljava/lang/String;
-Landroid/net/wifi/WifiSsid;->HEX_RADIX:I
-Landroid/net/wifi/WifiSsid;->isArrayAllZeroes([B)Z
-Landroid/net/wifi/WifiSsid;->isHidden()Z
-Landroid/net/wifi/WifiSsid;->TAG:Ljava/lang/String;
Landroid/net/wifi/WifiWakeReasonAndCounts;-><init>()V
Landroid/net/wifi/WifiWakeReasonAndCounts;->cmdEventWakeCntArray:[I
Landroid/net/wifi/WifiWakeReasonAndCounts;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -48619,33 +46570,6 @@ Landroid/provider/FontsContract;->SYNC_FONT_FETCH_TIMEOUT_MS:J
Landroid/provider/FontsContract;->TAG:Ljava/lang/String;
Landroid/provider/FontsContract;->THREAD_RENEWAL_THRESHOLD_MS:I
Landroid/provider/LiveFolders;-><init>()V
-Landroid/provider/MediaStore$Audio$AudioColumns;->ALBUM_ARTIST:Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$AudioColumns;->COMPILATION:Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$AudioColumns;->GENRE:Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$AudioColumns;->TITLE_RESOURCE_URI:Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$Media;->EXTERNAL_PATHS:[Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$Radio;-><init>()V
-Landroid/provider/MediaStore$Files;->getDirectoryUri(Ljava/lang/String;)Landroid/net/Uri;
-Landroid/provider/MediaStore$Images$Media;->StoreThumbnail(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;JFFI)Landroid/graphics/Bitmap;
-Landroid/provider/MediaStore$InternalThumbnails;-><init>()V
-Landroid/provider/MediaStore$InternalThumbnails;->cancelThumbnailRequest(Landroid/content/ContentResolver;JLandroid/net/Uri;J)V
-Landroid/provider/MediaStore$InternalThumbnails;->DEFAULT_GROUP_ID:I
-Landroid/provider/MediaStore$InternalThumbnails;->FULL_SCREEN_KIND:I
-Landroid/provider/MediaStore$InternalThumbnails;->getMiniThumbFromFile(Landroid/database/Cursor;Landroid/net/Uri;Landroid/content/ContentResolver;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
-Landroid/provider/MediaStore$InternalThumbnails;->getThumbnail(Landroid/content/ContentResolver;JJILandroid/graphics/BitmapFactory$Options;Landroid/net/Uri;Z)Landroid/graphics/Bitmap;
-Landroid/provider/MediaStore$InternalThumbnails;->MICRO_KIND:I
-Landroid/provider/MediaStore$InternalThumbnails;->MINI_KIND:I
-Landroid/provider/MediaStore$InternalThumbnails;->PROJECTION:[Ljava/lang/String;
-Landroid/provider/MediaStore$InternalThumbnails;->sThumbBuf:[B
-Landroid/provider/MediaStore$InternalThumbnails;->sThumbBufLock:Ljava/lang/Object;
-Landroid/provider/MediaStore$MediaColumns;->MEDIA_SCANNER_NEW_OBJECT_ID:Ljava/lang/String;
-Landroid/provider/MediaStore;->CONTENT_AUTHORITY_SLASH:Ljava/lang/String;
-Landroid/provider/MediaStore;->getDocumentUri(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Landroid/net/Uri;
-Landroid/provider/MediaStore;->getFilePath(Landroid/content/ContentResolver;Landroid/net/Uri;)Ljava/lang/String;
-Landroid/provider/MediaStore;->PARAM_DELETE_DATA:Ljava/lang/String;
-Landroid/provider/MediaStore;->RETRANSLATE_CALL:Ljava/lang/String;
-Landroid/provider/MediaStore;->TAG:Ljava/lang/String;
-Landroid/provider/MediaStore;->UNHIDE_CALL:Ljava/lang/String;
Landroid/provider/MetadataReader;-><init>()V
Landroid/provider/MetadataReader;->DEFAULT_EXIF_TAGS:[Ljava/lang/String;
Landroid/provider/MetadataReader;->getExifData(Ljava/io/InputStream;[Ljava/lang/String;)Landroid/os/Bundle;
diff --git a/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt b/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt
index 246eeea35a19..19dcead2ef9f 100644
--- a/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt
+++ b/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt
@@ -23,8 +23,6 @@ Landroid/media/IVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroi
Landroid/net/INetworkPolicyListener$Stub;-><init>()V
Landroid/net/nsd/INsdManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/nsd/INsdManager;
Landroid/net/sip/ISipSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/sip/ISipSession;
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getScanResults:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/p2p/IWifiP2pManager;
Landroid/nfc/INfcAdapter$Stub;->TRANSACTION_enable:I
Landroid/os/IPowerManager$Stub;->TRANSACTION_acquireWakeLock:I
Landroid/os/IPowerManager$Stub;->TRANSACTION_goToSleep:I
diff --git a/boot/hiddenapi/hiddenapi-unsupported.txt b/boot/hiddenapi/hiddenapi-unsupported.txt
index 48a9782c83df..02298dcad8f7 100644
--- a/boot/hiddenapi/hiddenapi-unsupported.txt
+++ b/boot/hiddenapi/hiddenapi-unsupported.txt
@@ -183,12 +183,6 @@ Landroid/net/INetworkScoreService$Stub;->asInterface(Landroid/os/IBinder;)Landro
Landroid/net/INetworkStatsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkStatsService$Stub$Proxy;->getMobileIfaces()[Ljava/lang/String;
Landroid/net/INetworkStatsService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStatsService;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/IWifiManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiManager;
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/IWifiScanner$Stub;-><init>()V
-Landroid/net/wifi/IWifiScanner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScanner;
Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IDeviceIdentifiersPolicyService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdentifiersPolicyService;
Landroid/os/IDeviceIdleController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdleController;
diff --git a/cmds/bootanimation/OWNERS b/cmds/bootanimation/OWNERS
new file mode 100644
index 000000000000..b6fb007bea52
--- /dev/null
+++ b/cmds/bootanimation/OWNERS
@@ -0,0 +1,3 @@
+dupin@google.com
+shanh@google.com
+jreck@google.com
diff --git a/cmds/idmap2/Android.bp b/cmds/idmap2/Android.bp
index 5212d8081401..5370dc360be6 100644
--- a/cmds/idmap2/Android.bp
+++ b/cmds/idmap2/Android.bp
@@ -35,8 +35,10 @@ cc_defaults {
tidy_checks_as_errors: [
"modernize-*",
"-modernize-avoid-c-arrays",
+ "-modernize-concat-nested-namespaces",
"-modernize-pass-by-value",
"-modernize-replace-disallow-copy-and-assign-macro",
+ "-modernize-return-braced-init-list",
"-modernize-use-equals-default",
"-modernize-use-nodiscard",
"-modernize-use-override",
@@ -54,9 +56,6 @@ cc_defaults {
"-readability-redundant-access-specifiers",
"-readability-uppercase-literal-suffix",
],
- tidy_flags: [
- "-system-headers",
- ],
}
cc_library {
diff --git a/core/api/current.txt b/core/api/current.txt
index fb7d986a3138..64976fac21f2 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -40287,12 +40287,6 @@ package android.telephony {
field public static final int SCAN_TYPE_PERIODIC = 1; // 0x1
}
- public final class PhoneCapability implements android.os.Parcelable {
- method public int describeContents();
- method public void writeToParcel(@NonNull android.os.Parcel, int);
- field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneCapability> CREATOR;
- }
-
public class PhoneNumberFormattingTextWatcher implements android.text.TextWatcher {
ctor public PhoneNumberFormattingTextWatcher();
ctor public PhoneNumberFormattingTextWatcher(String);
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 5d23eb20a81a..bfa5a7b6af51 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -121,7 +121,7 @@ package android.os {
}
public static class Build.VERSION {
- field public static final int FIRST_SDK_INT;
+ field public static final int DEVICE_INITIAL_SDK_INT;
}
public interface Parcelable {
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 9a8591d0e531..efde6f1ea254 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -6823,6 +6823,10 @@ package android.os {
public final class BatteryStatsManager {
method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.CellularBatteryStats getCellularBatteryStats();
method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.os.connectivity.WifiBatteryStats getWifiBatteryStats();
+ method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportBleScanReset();
+ method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportBleScanResults(@NonNull android.os.WorkSource, int);
+ method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportBleScanStarted(@NonNull android.os.WorkSource, boolean);
+ method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportBleScanStopped(@NonNull android.os.WorkSource, boolean);
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource);
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource);
method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportMobileRadioPowerState(boolean, int);
@@ -7269,8 +7273,10 @@ package android.os {
method public boolean bind(android.os.UpdateEngineCallback);
method public void cancel();
method @WorkerThread public int cleanupAppliedPayload();
+ method public void resetShouldSwitchSlotOnReboot();
method public void resetStatus();
method public void resume();
+ method public void setShouldSwitchSlotOnReboot(@NonNull String);
method public void suspend();
method public boolean unbind();
method public boolean verifyPayloadMetadata(String);
@@ -9749,6 +9755,17 @@ package android.telephony {
field public static final int REASON_UNSPECIFIED = 0; // 0x0
}
+ public final class PhoneCapability implements android.os.Parcelable {
+ method public int describeContents();
+ method @NonNull public int[] getDeviceNrCapabilities();
+ method @IntRange(from=1) public int getMaxActiveDataSubscriptions();
+ method @IntRange(from=1) public int getMaxActiveVoiceSubscriptions();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneCapability> CREATOR;
+ field public static final int DEVICE_NR_CAPABILITY_NSA = 1; // 0x1
+ field public static final int DEVICE_NR_CAPABILITY_SA = 2; // 0x2
+ }
+
public final class PhoneNumberRange implements android.os.Parcelable {
ctor public PhoneNumberRange(@NonNull String, @NonNull String, @NonNull String, @NonNull String);
method public int describeContents();
@@ -10268,6 +10285,7 @@ package android.telephony {
method public int getMaxNumberOfSimultaneouslyActiveSims();
method public static long getMaxNumberVerificationTimeoutMillis();
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String[] getMergedImsisFromGroup();
+ method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.PhoneCapability getPhoneCapability();
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask();
method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState();
method public int getSimApplicationState();
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 3b759a2f69d0..661394732a12 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1037,7 +1037,7 @@ package android.os {
public static class Build.VERSION {
field public static final String[] ACTIVE_CODENAMES;
- field public static final int FIRST_SDK_INT;
+ field public static final int DEVICE_INITIAL_SDK_INT;
field public static final int RESOURCES_SDK_INT;
}
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 193f7754f974..41170a4c2749 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -352,11 +352,12 @@ public final class ActivityThread extends ClientTransactionHandler {
@UnsupportedAppUsage
Configuration mConfiguration;
Configuration mCompatConfiguration;
+ @GuardedBy("this")
+ private boolean mUpdateHttpProxyOnBind = false;
@UnsupportedAppUsage
Application mInitialApplication;
@UnsupportedAppUsage
- final ArrayList<Application> mAllApplications
- = new ArrayList<Application>();
+ final ArrayList<Application> mAllApplications = new ArrayList<>();
/**
* Bookkeeping of instantiated backup agents indexed first by user id, then by package name.
* Indexing by user id supports parallel backups across users on system packages as they run in
@@ -1127,8 +1128,18 @@ public final class ActivityThread extends ClientTransactionHandler {
}
public void updateHttpProxy() {
- ActivityThread.updateHttpProxy(
- getApplication() != null ? getApplication() : getSystemContext());
+ final Application app;
+ synchronized (ActivityThread.this) {
+ app = getApplication();
+ if (null == app) {
+ // The app is not bound yet. Make a note to update the HTTP proxy when the
+ // app is bound.
+ mUpdateHttpProxyOnBind = true;
+ return;
+ }
+ }
+ // App is present, update the proxy inline.
+ ActivityThread.updateHttpProxy(app);
}
public void processInBackground() {
@@ -6697,6 +6708,15 @@ public final class ActivityThread extends ClientTransactionHandler {
app.setContentCaptureOptions(data.contentCaptureOptions);
mInitialApplication = app;
+ final boolean updateHttpProxy;
+ synchronized (this) {
+ updateHttpProxy = mUpdateHttpProxyOnBind;
+ // This synchronized block ensures that any subsequent call to updateHttpProxy()
+ // will see a non-null mInitialApplication.
+ }
+ if (updateHttpProxy) {
+ ActivityThread.updateHttpProxy(app);
+ }
// don't bring up providers in restricted mode; they may depend on the
// app's custom Application class
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index ce384868d446..d487025631c7 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -3289,22 +3289,22 @@ public final class BluetoothAdapter {
}
/**
- * Determines whether a String Bluetooth address, such as "00:43:A8:23:10:F0"
+ * Determines whether a String Bluetooth address, such as "F0:43:A8:23:10:00"
* is a RANDOM STATIC address.
*
- * RANDOM STATIC: (addr & 0b11) == 0b11
- * RANDOM RESOLVABLE: (addr & 0b11) == 0b10
- * RANDOM non-RESOLVABLE: (addr & 0b11) == 0b00
+ * RANDOM STATIC: (addr & 0xC0) == 0xC0
+ * RANDOM RESOLVABLE: (addr & 0xC0) == 0x40
+ * RANDOM non-RESOLVABLE: (addr & 0xC0) == 0x00
*
* @param address Bluetooth address as string
- * @return true if the 2 Least Significant Bits of the address equals 0b11.
+ * @return true if the 2 Most Significant Bits of the address equals 0xC0.
*
* @hide
*/
public static boolean isAddressRandomStatic(@NonNull String address) {
requireNonNull(address);
return checkBluetoothAddress(address)
- && (Integer.parseInt(address.split(":")[5], 16) & 0b11) == 0b11;
+ && (Integer.parseInt(address.split(":")[0], 16) & 0xC0) == 0xC0;
}
@UnsupportedAppUsage
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java
index 07dbe52a2c66..0969ec2269b1 100644
--- a/core/java/android/bluetooth/BluetoothDevice.java
+++ b/core/java/android/bluetooth/BluetoothDevice.java
@@ -1035,6 +1035,8 @@ public final class BluetoothDevice implements Parcelable {
/** Address is either resolvable, non-resolvable or static. */
public static final int ADDRESS_TYPE_RANDOM = 1;
+ private static final String NULL_MAC_ADDRESS = "00:00:00:00:00:00";
+
/**
* Lazy initialization. Guaranteed final after first object constructed, or
* getService() called.
@@ -1371,6 +1373,10 @@ public final class BluetoothDevice implements Parcelable {
Log.w(TAG, "BT not enabled, createBondOutOfBand failed");
return false;
}
+ if (NULL_MAC_ADDRESS.equals(mAddress)) {
+ Log.e(TAG, "Unable to create bond, invalid address " + mAddress);
+ return false;
+ }
try {
return service.createBond(this, transport, remoteP192Data, remoteP256Data);
} catch (RemoteException e) {
diff --git a/core/java/android/bluetooth/le/ScanFilter.java b/core/java/android/bluetooth/le/ScanFilter.java
index ddc93327b697..9da6ff3b2752 100644
--- a/core/java/android/bluetooth/le/ScanFilter.java
+++ b/core/java/android/bluetooth/le/ScanFilter.java
@@ -168,6 +168,15 @@ public final class ScanFilter implements Parcelable {
dest.writeByteArray(mManufacturerDataMask);
}
}
+
+ // IRK
+ if (mDeviceAddress != null) {
+ dest.writeInt(mAddressType);
+ dest.writeInt(mIrk == null ? 0 : 1);
+ if (mIrk != null) {
+ dest.writeByteArray(mIrk);
+ }
+ }
}
/**
@@ -187,8 +196,10 @@ public final class ScanFilter implements Parcelable {
if (in.readInt() == 1) {
builder.setDeviceName(in.readString());
}
+ String address = null;
+ // If we have a non-null address
if (in.readInt() == 1) {
- builder.setDeviceAddress(in.readString());
+ address = in.readString();
}
if (in.readInt() == 1) {
ParcelUuid uuid = in.readParcelable(ParcelUuid.class.getClassLoader());
@@ -245,6 +256,17 @@ public final class ScanFilter implements Parcelable {
}
}
+ // IRK
+ if (address != null) {
+ final int addressType = in.readInt();
+ if (in.readInt() == 1) {
+ final byte[] irk = new byte[16];
+ in.readByteArray(irk);
+ builder.setDeviceAddress(address, addressType, irk);
+ } else {
+ builder.setDeviceAddress(address, addressType);
+ }
+ }
return builder.build();
}
};
diff --git a/core/java/android/debug/PairDevice.aidl b/core/java/android/debug/PairDevice.aidl
new file mode 100644
index 000000000000..c72a5ede3bd4
--- /dev/null
+++ b/core/java/android/debug/PairDevice.aidl
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.debug;
+
+/**
+ * Contains information about the client in an ADB connection.
+ * @see {@link android.debug.IAdbManager#getPairedDevices()}
+ * @hide
+ */
+parcelable PairDevice {
+ /**
+ * The human-readable name of the device.
+ */
+ String name;
+
+ /**
+ * The device's guid.
+ */
+ String guid;
+
+ /**
+ * Indicates whether the device is currently connected to adbd.
+ */
+ boolean connected;
+} \ No newline at end of file
diff --git a/core/java/android/debug/PairDevice.java b/core/java/android/debug/PairDevice.java
deleted file mode 100644
index 2d5b446b4f8f..000000000000
--- a/core/java/android/debug/PairDevice.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.debug;
-
-import android.annotation.NonNull;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.android.internal.annotations.Immutable;
-import com.android.internal.util.Preconditions;
-
-/**
- * Contains information about the client in an ADB connection.
- * @hide
- */
-@Immutable
-public class PairDevice implements Parcelable {
- /**
- * The human-readable name of the device.
- */
- @NonNull private final String mName;
-
- /**
- * The device's guid.
- */
- @NonNull private final String mGuid;
-
- /**
- * Indicates whether the device is currently connected to adbd.
- */
- private final boolean mConnected;
-
- public PairDevice(@NonNull String name, @NonNull String guid, boolean connected) {
- Preconditions.checkStringNotEmpty(name);
- Preconditions.checkStringNotEmpty(guid);
- mName = name;
- mGuid = guid;
- mConnected = connected;
- }
-
- /**
- * @return the device name.
- */
- @NonNull
- public String getDeviceName() {
- return mName;
- }
-
- /**
- * @return the device GUID.
- */
- @NonNull
- public String getGuid() {
- return mGuid;
- }
-
- /**
- * @return the adb connection state of the device.
- */
- public boolean isConnected() {
- return mConnected;
- }
-
- @Override
- public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeString(mName);
- dest.writeString(mGuid);
- dest.writeBoolean(mConnected);
- }
-
- /**
- * @return Human-readable info about the object.
- */
- @Override
- public String toString() {
- return "\n" + mName + "\n" + mGuid + "\n" + mConnected;
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @NonNull
- public static final Parcelable.Creator<PairDevice> CREATOR =
- new Creator<PairDevice>() {
- @Override
- public PairDevice createFromParcel(Parcel source) {
- return new PairDevice(source.readString(), source.readString(),
- source.readBoolean());
- }
-
- @Override
- public PairDevice[] newArray(int size) {
- return new PairDevice[size];
- }
- };
-}
diff --git a/core/java/android/net/IpSecAlgorithm.java b/core/java/android/net/IpSecAlgorithm.java
index 8f1e2defd215..7ef5bac092f6 100644
--- a/core/java/android/net/IpSecAlgorithm.java
+++ b/core/java/android/net/IpSecAlgorithm.java
@@ -354,7 +354,7 @@ public final class IpSecAlgorithm implements Parcelable {
}
for (Entry<String, Integer> entry : ALGO_TO_REQUIRED_FIRST_SDK.entrySet()) {
- if (Build.VERSION.FIRST_SDK_INT >= entry.getValue()) {
+ if (Build.VERSION.DEVICE_INITIAL_SDK_INT >= entry.getValue()) {
enabledAlgos.add(entry.getKey());
}
}
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java
index 288b06ee52c8..46c83df96b04 100644
--- a/core/java/android/net/NetworkStats.java
+++ b/core/java/android/net/NetworkStats.java
@@ -16,6 +16,8 @@
package android.net;
+import static com.android.internal.net.NetworkUtilsInternal.multiplySafeByRational;
+
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -1581,32 +1583,37 @@ public final class NetworkStats implements Parcelable {
// processes this every time device has transmitted/received amount equivalent to
// global threshold alert (~ 2MB) across all interfaces.
final long rxBytesAcrossUnderlyingIfaces =
- underlyingIfacesTotal.rxBytes * rxBytes[i] / tunIfaceTotal.rxBytes;
+ multiplySafeByRational(underlyingIfacesTotal.rxBytes,
+ rxBytes[i], tunIfaceTotal.rxBytes);
// app must not be blamed for more than it consumed on tunIface
totalRxBytes = Math.min(rxBytes[i], rxBytesAcrossUnderlyingIfaces);
}
long totalRxPackets = 0;
if (tunIfaceTotal.rxPackets > 0) {
final long rxPacketsAcrossUnderlyingIfaces =
- underlyingIfacesTotal.rxPackets * rxPackets[i] / tunIfaceTotal.rxPackets;
+ multiplySafeByRational(underlyingIfacesTotal.rxPackets,
+ rxPackets[i], tunIfaceTotal.rxPackets);
totalRxPackets = Math.min(rxPackets[i], rxPacketsAcrossUnderlyingIfaces);
}
long totalTxBytes = 0;
if (tunIfaceTotal.txBytes > 0) {
final long txBytesAcrossUnderlyingIfaces =
- underlyingIfacesTotal.txBytes * txBytes[i] / tunIfaceTotal.txBytes;
+ multiplySafeByRational(underlyingIfacesTotal.txBytes,
+ txBytes[i], tunIfaceTotal.txBytes);
totalTxBytes = Math.min(txBytes[i], txBytesAcrossUnderlyingIfaces);
}
long totalTxPackets = 0;
if (tunIfaceTotal.txPackets > 0) {
final long txPacketsAcrossUnderlyingIfaces =
- underlyingIfacesTotal.txPackets * txPackets[i] / tunIfaceTotal.txPackets;
+ multiplySafeByRational(underlyingIfacesTotal.txPackets,
+ txPackets[i], tunIfaceTotal.txPackets);
totalTxPackets = Math.min(txPackets[i], txPacketsAcrossUnderlyingIfaces);
}
long totalOperations = 0;
if (tunIfaceTotal.operations > 0) {
final long operationsAcrossUnderlyingIfaces =
- underlyingIfacesTotal.operations * operations[i] / tunIfaceTotal.operations;
+ multiplySafeByRational(underlyingIfacesTotal.operations,
+ operations[i], tunIfaceTotal.operations);
totalOperations = Math.min(operations[i], operationsAcrossUnderlyingIfaces);
}
// In a second pass, distribute these values across interfaces in the proportion that
@@ -1618,37 +1625,37 @@ public final class NetworkStats implements Parcelable {
tmpEntry.set = set[i];
if (underlyingIfacesTotal.rxBytes > 0) {
tmpEntry.rxBytes =
- totalRxBytes
- * perInterfaceTotal[j].rxBytes
- / underlyingIfacesTotal.rxBytes;
+ multiplySafeByRational(totalRxBytes,
+ perInterfaceTotal[j].rxBytes,
+ underlyingIfacesTotal.rxBytes);
}
tmpEntry.rxPackets = 0;
if (underlyingIfacesTotal.rxPackets > 0) {
tmpEntry.rxPackets =
- totalRxPackets
- * perInterfaceTotal[j].rxPackets
- / underlyingIfacesTotal.rxPackets;
+ multiplySafeByRational(totalRxPackets,
+ perInterfaceTotal[j].rxPackets,
+ underlyingIfacesTotal.rxPackets);
}
tmpEntry.txBytes = 0;
if (underlyingIfacesTotal.txBytes > 0) {
tmpEntry.txBytes =
- totalTxBytes
- * perInterfaceTotal[j].txBytes
- / underlyingIfacesTotal.txBytes;
+ multiplySafeByRational(totalTxBytes,
+ perInterfaceTotal[j].txBytes,
+ underlyingIfacesTotal.txBytes);
}
tmpEntry.txPackets = 0;
if (underlyingIfacesTotal.txPackets > 0) {
tmpEntry.txPackets =
- totalTxPackets
- * perInterfaceTotal[j].txPackets
- / underlyingIfacesTotal.txPackets;
+ multiplySafeByRational(totalTxPackets,
+ perInterfaceTotal[j].txPackets,
+ underlyingIfacesTotal.txPackets);
}
tmpEntry.operations = 0;
if (underlyingIfacesTotal.operations > 0) {
tmpEntry.operations =
- totalOperations
- * perInterfaceTotal[j].operations
- / underlyingIfacesTotal.operations;
+ multiplySafeByRational(totalOperations,
+ perInterfaceTotal[j].operations,
+ underlyingIfacesTotal.operations);
}
// tmpEntry now contains the migrated data of the i-th entry for the j-th underlying
// interface. Add that data usage to this object.
diff --git a/core/java/android/os/BatteryStatsManager.java b/core/java/android/os/BatteryStatsManager.java
index f5172cf0fb69..16034df942db 100644
--- a/core/java/android/os/BatteryStatsManager.java
+++ b/core/java/android/os/BatteryStatsManager.java
@@ -219,7 +219,7 @@ public final class BatteryStatsManager {
/**
* Indicates that a new wifi scan has started.
*
- * @param ws Worksource (to be used for battery blaming).
+ * @param ws worksource (to be used for battery blaming).
*/
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
public void reportWifiScanStartedFromSource(@NonNull WorkSource ws) {
@@ -233,7 +233,7 @@ public final class BatteryStatsManager {
/**
* Indicates that an ongoing wifi scan has stopped.
*
- * @param ws Worksource (to be used for battery blaming).
+ * @param ws worksource (to be used for battery blaming).
*/
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
public void reportWifiScanStoppedFromSource(@NonNull WorkSource ws) {
@@ -247,7 +247,7 @@ public final class BatteryStatsManager {
/**
* Indicates that a new wifi batched scan has started.
*
- * @param ws Worksource (to be used for battery blaming).
+ * @param ws worksource (to be used for battery blaming).
* @param csph Channels scanned per hour.
*/
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
@@ -263,7 +263,7 @@ public final class BatteryStatsManager {
/**
* Indicates that an ongoing wifi batched scan has stopped.
*
- * @param ws Worksource (to be used for battery blaming).
+ * @param ws worksource (to be used for battery blaming).
*/
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
public void reportWifiBatchedScanStoppedFromSource(@NonNull WorkSource ws) {
@@ -307,7 +307,7 @@ public final class BatteryStatsManager {
/**
* Indicates an app acquiring full wifi lock.
*
- * @param ws Worksource (to be used for battery blaming).
+ * @param ws worksource (to be used for battery blaming).
*/
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
public void reportFullWifiLockAcquiredFromSource(@NonNull WorkSource ws) {
@@ -321,7 +321,7 @@ public final class BatteryStatsManager {
/**
* Indicates an app releasing full wifi lock.
*
- * @param ws Worksource (to be used for battery blaming).
+ * @param ws worksource (to be used for battery blaming).
*/
@RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
public void reportFullWifiLockReleasedFromSource(@NonNull WorkSource ws) {
@@ -436,6 +436,63 @@ public final class BatteryStatsManager {
}
}
+ /**
+ * Indicates that a new Bluetooth LE scan has started.
+ *
+ * @param ws worksource (to be used for battery blaming).
+ * @param isUnoptimized whether or not the scan has a filter.
+ */
+ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
+ public void reportBleScanStarted(@NonNull WorkSource ws, boolean isUnoptimized) {
+ try {
+ mBatteryStats.noteBleScanStarted(ws, isUnoptimized);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Indicates that an ongoing Bluetooth LE scan has stopped.
+ *
+ * @param ws worksource (to be used for battery blaming).
+ * @param isUnoptimized whether or not the scan has a filter.
+ */
+ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
+ public void reportBleScanStopped(@NonNull WorkSource ws, boolean isUnoptimized) {
+ try {
+ mBatteryStats.noteBleScanStopped(ws, isUnoptimized);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Indicates that Bluetooth LE has been reset.
+ */
+ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
+ public void reportBleScanReset() {
+ try {
+ mBatteryStats.noteBleScanReset();
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Indicates that Bluetooth LE scan has received new results.
+ *
+ * @param ws worksource (to be used for battery blaming).
+ * @param numNewResults number of results received since last update.
+ */
+ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
+ public void reportBleScanResults(@NonNull WorkSource ws, int numNewResults) {
+ try {
+ mBatteryStats.noteBleScanResults(ws, numNewResults);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
private static int getDataConnectionPowerState(boolean isActive) {
// TODO: DataConnectionRealTimeInfo is under telephony package but the constants are used
// for both Wifi and mobile. It would make more sense to separate the constants to a
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 5017d9e8d905..de1304478124 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -333,7 +333,7 @@ public class Build {
*/
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
@TestApi
- public static final int FIRST_SDK_INT = SystemProperties
+ public static final int DEVICE_INITIAL_SDK_INT = SystemProperties
.getInt("ro.product.first_api_level", 0);
/**
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index a7516a428ff0..8f15bff87b45 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -2593,11 +2593,11 @@ public final class Debug
public static native long getIonPoolsSizeKb();
/**
- * Return GPU DMA buffer usage in kB or -1 on error.
+ * Returns the global total GPU-private memory in kB or -1 on error.
*
* @hide
*/
- public static native long getGpuDmaBufUsageKb();
+ public static native long getGpuPrivateMemoryKb();
/**
* Return DMA-BUF memory mapped by processes in kB.
diff --git a/core/java/android/os/OWNERS b/core/java/android/os/OWNERS
index cd02d297270a..a870c04f9cd3 100644
--- a/core/java/android/os/OWNERS
+++ b/core/java/android/os/OWNERS
@@ -66,3 +66,6 @@ per-file *Recovery* = file:/services/core/java/com/android/server/recoverysystem
# Bugreporting
per-file Bugreport* = file:/platform/frameworks/native:/cmds/dumpstate/OWNERS
+
+# UpdateEngine
+per-file *UpdateEngine* = file:/platform/system/update_engine:/OWNERS
diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java
index c8cbc517b226..ddb6533547bb 100644
--- a/core/java/android/os/Trace.java
+++ b/core/java/android/os/Trace.java
@@ -102,8 +102,6 @@ public final class Trace {
/** @hide */
public static final long TRACE_TAG_RRO = 1L << 26;
/** @hide */
- public static final long TRACE_TAG_SYSPROP = 1L << 27;
- /** @hide */
public static final long TRACE_TAG_APEX_MANAGER = 1L << 18;
private static final long TRACE_TAG_NOT_READY = 1L << 63;
diff --git a/core/java/android/os/UpdateEngine.java b/core/java/android/os/UpdateEngine.java
index 5a48242f26ea..3e01c53f0469 100644
--- a/core/java/android/os/UpdateEngine.java
+++ b/core/java/android/os/UpdateEngine.java
@@ -409,10 +409,11 @@ public class UpdateEngine {
/**
* Resets the bootable flag on the non-current partition and all internal
- * update_engine state. This can be used after an unwanted payload has been
- * successfully applied and the device has not yet been rebooted to signal
- * that we no longer want to boot into that updated system. After this call
- * completes, update_engine will no longer report
+ * update_engine state. Note this call will clear the entire update
+ * progress. So a subsequent {@link #applyPayload} will apply the update
+ * from scratch.
+ *
+ * <p>After this call completes, update_engine will no longer report
* {@code UPDATED_NEED_REBOOT}, so your callback can remove any outstanding
* notification that rebooting into the new system is possible.
*/
@@ -425,6 +426,39 @@ public class UpdateEngine {
}
/**
+ * Sets the A/B slot switch for the next boot after applying an ota update. If
+ * {@link #applyPayload} hasn't switched the slot, the updater APP can call
+ * this API to switch the slot and apply the update on next boot.
+ *
+ * @param payloadMetadataFilename the location of the metadata without the
+ * {@code file://} prefix.
+ */
+ public void setShouldSwitchSlotOnReboot(@NonNull String payloadMetadataFilename) {
+ try {
+ mUpdateEngine.setShouldSwitchSlotOnReboot(payloadMetadataFilename);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Resets the boot slot to the source/current slot, without cancelling the
+ * update progress. This can be called after the update is installed, and to
+ * prevent the device from accidentally taking the update when it reboots.
+ *
+ * This is useful when users don't want to take the update immediately; or
+ * the updater determines some condition hasn't met, e.g. insufficient space
+ * for boot.
+ */
+ public void resetShouldSwitchSlotOnReboot() {
+ try {
+ mUpdateEngine.resetShouldSwitchSlotOnReboot();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Unbinds the last bound callback function.
*/
public boolean unbind() {
diff --git a/core/java/android/util/apk/ApkSignatureSchemeV2Verifier.java b/core/java/android/util/apk/ApkSignatureSchemeV2Verifier.java
index 346fe293d7ae..077115769374 100644
--- a/core/java/android/util/apk/ApkSignatureSchemeV2Verifier.java
+++ b/core/java/android/util/apk/ApkSignatureSchemeV2Verifier.java
@@ -210,7 +210,7 @@ public class ApkSignatureSchemeV2Verifier {
if (contentDigests.containsKey(CONTENT_DIGEST_VERITY_CHUNKED_SHA256)) {
byte[] verityDigest = contentDigests.get(CONTENT_DIGEST_VERITY_CHUNKED_SHA256);
verityRootHash = ApkSigningBlockUtils.parseVerityDigestAndVerifySourceLength(
- verityDigest, apk.length(), signatureInfo);
+ verityDigest, apk.getChannel().size(), signatureInfo);
}
byte[] digest = pickBestDigestForV4(contentDigests);
diff --git a/core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java b/core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java
index 4ab541b616ed..44f01a4f9759 100644
--- a/core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java
+++ b/core/java/android/util/apk/ApkSignatureSchemeV3Verifier.java
@@ -209,7 +209,7 @@ public class ApkSignatureSchemeV3Verifier {
if (contentDigests.containsKey(CONTENT_DIGEST_VERITY_CHUNKED_SHA256)) {
byte[] verityDigest = contentDigests.get(CONTENT_DIGEST_VERITY_CHUNKED_SHA256);
result.verityRootHash = ApkSigningBlockUtils.parseVerityDigestAndVerifySourceLength(
- verityDigest, apk.length(), signatureInfo);
+ verityDigest, apk.getChannel().size(), signatureInfo);
}
result.digest = pickBestDigestForV4(contentDigests);
diff --git a/core/java/android/util/apk/ApkSigningBlockUtils.java b/core/java/android/util/apk/ApkSigningBlockUtils.java
index 6efe95cb9e92..f79b5b99b7e6 100644
--- a/core/java/android/util/apk/ApkSigningBlockUtils.java
+++ b/core/java/android/util/apk/ApkSigningBlockUtils.java
@@ -349,7 +349,7 @@ final class ApkSigningBlockUtils {
SignatureInfo signatureInfo) throws SecurityException {
try {
byte[] expectedRootHash = parseVerityDigestAndVerifySourceLength(expectedDigest,
- apk.length(), signatureInfo);
+ apk.getChannel().size(), signatureInfo);
VerityBuilder.VerityResult verity = VerityBuilder.generateApkVerityTree(apk,
signatureInfo, new ByteBufferFactory() {
@Override
diff --git a/core/java/android/util/apk/VerityBuilder.java b/core/java/android/util/apk/VerityBuilder.java
index e81e3f7b38d6..3dfa4cd1a0d2 100644
--- a/core/java/android/util/apk/VerityBuilder.java
+++ b/core/java/android/util/apk/VerityBuilder.java
@@ -90,7 +90,7 @@ public abstract class VerityBuilder {
throws IOException, SecurityException, NoSuchAlgorithmException, DigestException {
long signingBlockSize =
signatureInfo.centralDirOffset - signatureInfo.apkSigningBlockOffset;
- long dataSize = apk.length() - signingBlockSize;
+ long dataSize = apk.getChannel().size() - signingBlockSize;
int[] levelOffset = calculateVerityLevelOffset(dataSize);
int merkleTreeSize = levelOffset[levelOffset.length - 1];
@@ -108,7 +108,7 @@ public abstract class VerityBuilder {
@NonNull SignatureInfo signatureInfo, @NonNull ByteBuffer footerOutput)
throws IOException {
footerOutput.order(ByteOrder.LITTLE_ENDIAN);
- generateApkVerityHeader(footerOutput, apk.length(), DEFAULT_SALT);
+ generateApkVerityHeader(footerOutput, apk.getChannel().size(), DEFAULT_SALT);
long signingBlockSize =
signatureInfo.centralDirOffset - signatureInfo.apkSigningBlockOffset;
generateApkVerityExtensions(footerOutput, signatureInfo.apkSigningBlockOffset,
@@ -310,11 +310,11 @@ public abstract class VerityBuilder {
eocdCdOffsetFieldPosition + ZIP_EOCD_CENTRAL_DIR_OFFSET_FIELD_SIZE;
consumeByChunk(digester,
new MemoryMappedFileDataSource(apk.getFD(), offsetAfterEocdCdOffsetField,
- apk.length() - offsetAfterEocdCdOffsetField),
+ apk.getChannel().size() - offsetAfterEocdCdOffsetField),
MMAP_REGION_SIZE_BYTES);
// 5. Pad 0s up to the nearest 4096-byte block before hashing.
- int lastIncompleteChunkSize = (int) (apk.length() % CHUNK_SIZE_BYTES);
+ int lastIncompleteChunkSize = (int) (apk.getChannel().size() % CHUNK_SIZE_BYTES);
if (lastIncompleteChunkSize != 0) {
digester.consume(ByteBuffer.allocate(CHUNK_SIZE_BYTES - lastIncompleteChunkSize));
}
diff --git a/core/java/android/util/apk/ZipUtils.java b/core/java/android/util/apk/ZipUtils.java
index fa5477e4190b..3ca3fc0f6338 100644
--- a/core/java/android/util/apk/ZipUtils.java
+++ b/core/java/android/util/apk/ZipUtils.java
@@ -63,7 +63,8 @@ abstract class ZipUtils {
// exactly the remaining bytes in the buffer. The search is bounded because the maximum
// size of the comment field is 65535 bytes because the field is an unsigned 16-bit number.
- long fileSize = zip.length();
+ // TODO(b/193592496) RandomAccessFile#length
+ long fileSize = zip.getChannel().size();
if (fileSize < ZIP_EOCD_REC_MIN_SIZE) {
return null;
}
@@ -110,7 +111,8 @@ abstract class ZipUtils {
throw new IllegalArgumentException("maxCommentSize: " + maxCommentSize);
}
- long fileSize = zip.length();
+ // TODO(b/193592496) RandomAccessFile#length
+ long fileSize = zip.getChannel().size();
if (fileSize < ZIP_EOCD_REC_MIN_SIZE) {
// No space for EoCD record in the file.
return null;
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
index 0b78a2b6d22f..fcbcf6cfb4a7 100644
--- a/core/java/com/android/internal/app/IBatteryStats.aidl
+++ b/core/java/com/android/internal/app/IBatteryStats.aidl
@@ -140,7 +140,7 @@ interface IBatteryStats {
void noteBleScanStarted(in WorkSource ws, boolean isUnoptimized);
void noteBleScanStopped(in WorkSource ws, boolean isUnoptimized);
- void noteResetBleScan();
+ void noteBleScanReset();
void noteBleScanResults(in WorkSource ws, int numNewResults);
/** {@hide} */
diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java
index d6e2c2f6d783..59e95c98499e 100644
--- a/core/java/com/android/server/SystemConfig.java
+++ b/core/java/com/android/server/SystemConfig.java
@@ -484,7 +484,7 @@ public class SystemConfig {
// Vendors are only allowed to customize these
int vendorPermissionFlag = ALLOW_LIBS | ALLOW_FEATURES | ALLOW_PRIVAPP_PERMISSIONS
| ALLOW_ASSOCIATIONS;
- if (Build.VERSION.FIRST_SDK_INT <= Build.VERSION_CODES.O_MR1) {
+ if (Build.VERSION.DEVICE_INITIAL_SDK_INT <= Build.VERSION_CODES.O_MR1) {
// For backward compatibility
vendorPermissionFlag |= (ALLOW_PERMISSIONS | ALLOW_APP_CONFIGS);
}
@@ -1252,7 +1252,7 @@ public class SystemConfig {
addFeature(PackageManager.FEATURE_APP_ENUMERATION, 0);
}
- if (Build.VERSION.FIRST_SDK_INT >= Build.VERSION_CODES.Q) {
+ if (Build.VERSION.DEVICE_INITIAL_SDK_INT >= Build.VERSION_CODES.Q) {
addFeature(PackageManager.FEATURE_IPSEC_TUNNELS, 0);
}
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index b236385768b5..de707d7401e4 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -225,7 +225,6 @@ cc_library_shared {
],
shared_libs: [
- "android.hardware.memtrack-V1-ndk_platform",
"libandroidicu",
"libandroid_net",
"libbpf_android",
@@ -297,6 +296,7 @@ cc_library_shared {
header_libs: [
"bionic_libc_platform_headers",
"dnsproxyd_protocol_headers",
+ "libandroid_runtime_vm_headers",
],
},
host: {
@@ -338,3 +338,29 @@ cc_library_shared {
never: true,
},
}
+
+cc_library_headers {
+ name: "libandroid_runtime_vm_headers",
+ host_supported: true,
+ vendor_available: true,
+ // TODO(b/153609531): remove when libbinder is not native_bridge_supported
+ native_bridge_supported: true,
+ // Allow only modules from the following list to create threads that can be
+ // attached to the JVM. This list should be a subset of the dependencies of
+ // libandroid_runtime.
+ visibility: [
+ "//frameworks/native/libs/binder",
+ ],
+ export_include_dirs: ["include_vm"],
+ header_libs: [
+ "jni_headers",
+ ],
+ export_header_lib_headers: [
+ "jni_headers",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.media",
+ "com.android.media.swcodec",
+ ],
+}
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index f4a10ef61585..f377608a6d3c 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -22,6 +22,7 @@
#include <android-base/properties.h>
#include <android/graphics/jni_runtime.h>
#include <android_runtime/AndroidRuntime.h>
+#include <android_runtime/vm.h>
#include <assert.h>
#include <binder/IBinder.h>
#include <binder/IPCThreadState.h>
@@ -1322,6 +1323,10 @@ void AndroidRuntime::onVmCreated(JNIEnv* env)
return AndroidRuntime::mJavaVM;
}
+extern "C" JavaVM* AndroidRuntimeGetJavaVM() {
+ return AndroidRuntime::getJavaVM();
+}
+
/*
* Get the JNIEnv pointer for this thread.
*
diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp
index 5814a187506f..03508d33cdf7 100644
--- a/core/jni/android_os_Debug.cpp
+++ b/core/jni/android_os_Debug.cpp
@@ -33,7 +33,6 @@
#include <string>
#include <vector>
-#include <aidl/android/hardware/memtrack/DeviceInfo.h>
#include <android-base/logging.h>
#include <bionic/malloc.h>
#include <debuggerd/client.h>
@@ -46,7 +45,6 @@
#include "jni.h"
#include <dmabufinfo/dmabuf_sysfs_stats.h>
#include <dmabufinfo/dmabufinfo.h>
-#include <dmabufinfo/dmabuf_sysfs_stats.h>
#include <meminfo/procmeminfo.h>
#include <meminfo/sysmeminfo.h>
#include <memtrack/memtrack.h>
@@ -858,29 +856,24 @@ static jlong android_os_Debug_getDmabufHeapPoolsSizeKb(JNIEnv* env, jobject claz
return poolsSizeKb;
}
-static jlong android_os_Debug_getGpuDmaBufUsageKb(JNIEnv* env, jobject clazz) {
- std::vector<aidl::android::hardware::memtrack::DeviceInfo> gpu_device_info;
- if (!memtrack_gpu_device_info(&gpu_device_info)) {
+static jlong android_os_Debug_getGpuPrivateMemoryKb(JNIEnv* env, jobject clazz) {
+ struct memtrack_proc* p = memtrack_proc_new();
+ if (p == nullptr) {
+ LOG(ERROR) << "getGpuPrivateMemoryKb: Failed to create memtrack_proc";
return -1;
}
- dmabufinfo::DmabufSysfsStats stats;
- if (!GetDmabufSysfsStats(&stats)) {
+ // Memtrack hal defines PID 0 as global total for GPU-private (GL) memory.
+ if (memtrack_proc_get(p, 0) != 0) {
+ // The memtrack HAL may not be available, avoid flooding the log.
+ memtrack_proc_destroy(p);
return -1;
}
- jlong sizeKb = 0;
- const auto& importer_stats = stats.importer_info();
- for (const auto& dev_info : gpu_device_info) {
- const auto& importer_info = importer_stats.find(dev_info.name);
- if (importer_info == importer_stats.end()) {
- continue;
- }
-
- sizeKb += importer_info->second.size / 1024;
- }
+ ssize_t gpuPrivateMem = memtrack_proc_gl_pss(p);
- return sizeKb;
+ memtrack_proc_destroy(p);
+ return gpuPrivateMem / 1024;
}
static jlong android_os_Debug_getDmabufMappedSizeKb(JNIEnv* env, jobject clazz) {
@@ -991,8 +984,8 @@ static const JNINativeMethod gMethods[] = {
(void*)android_os_Debug_getIonHeapsSizeKb },
{ "getDmabufTotalExportedKb", "()J",
(void*)android_os_Debug_getDmabufTotalExportedKb },
- { "getGpuDmaBufUsageKb", "()J",
- (void*)android_os_Debug_getGpuDmaBufUsageKb },
+ { "getGpuPrivateMemoryKb", "()J",
+ (void*)android_os_Debug_getGpuPrivateMemoryKb },
{ "getDmabufHeapTotalExportedKb", "()J",
(void*)android_os_Debug_getDmabufHeapTotalExportedKb },
{ "getIonPoolsSizeKb", "()J",
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index 292ba4791f02..8b9a688a63e7 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -874,7 +874,7 @@ static void DetachDescriptors(JNIEnv* env,
for (int fd : fds_to_close) {
ALOGV("Switching descriptor %d to /dev/null", fd);
- if (dup3(devnull_fd, fd, O_CLOEXEC) == -1) {
+ if (TEMP_FAILURE_RETRY(dup3(devnull_fd, fd, O_CLOEXEC)) == -1) {
fail_fn(StringPrintf("Failed dup3() on descriptor %d: %s", fd, strerror(errno)));
}
}
diff --git a/core/jni/com_android_internal_os_ZygoteCommandBuffer.cpp b/core/jni/com_android_internal_os_ZygoteCommandBuffer.cpp
index 5fe96ede202e..248db76da71d 100644
--- a/core/jni/com_android_internal_os_ZygoteCommandBuffer.cpp
+++ b/core/jni/com_android_internal_os_ZygoteCommandBuffer.cpp
@@ -426,7 +426,7 @@ jboolean com_android_internal_os_ZygoteCommandBuffer_nativeForkRepeatedly(
tmp_pid >>= 8;
}
pid_buf[4] = 0; // Process is not wrapped.
- int res = write(session_socket, pid_buf, 5);
+ int res = TEMP_FAILURE_RETRY(write(session_socket, pid_buf, 5));
if (res != 5) {
if (res == -1) {
(first_time ? fail_fn_1 : fail_fn_n)
@@ -451,18 +451,18 @@ jboolean com_android_internal_os_ZygoteCommandBuffer_nativeForkRepeatedly(
}
// We've now seen either a disconnect or connect request.
close(session_socket);
- int new_fd = accept(zygote_socket_fd, nullptr, nullptr);
+ int new_fd = TEMP_FAILURE_RETRY(accept(zygote_socket_fd, nullptr, nullptr));
if (new_fd == -1) {
fail_fn_z(CREATE_ERROR("Accept(%d) failed: %s", zygote_socket_fd, strerror(errno)));
}
if (new_fd != session_socket) {
// Move new_fd back to the old value, so that we don't have to change Java-level data
// structures to reflect a change. This implicitly closes the old one.
- if (dup2(new_fd, session_socket) != session_socket) {
+ if (TEMP_FAILURE_RETRY(dup2(new_fd, session_socket)) != session_socket) {
fail_fn_z(CREATE_ERROR("Failed to move fd %d to %d: %s",
new_fd, session_socket, strerror(errno)));
}
- close(new_fd);
+ close(new_fd); // On Linux, fd is closed even if EINTR is returned.
}
// If we ever return, we effectively reuse the old Java ZygoteConnection.
// None of its state needs to change.
diff --git a/core/jni/include_vm/android_runtime/vm.h b/core/jni/include_vm/android_runtime/vm.h
new file mode 100644
index 000000000000..a6e7c162d6ed
--- /dev/null
+++ b/core/jni/include_vm/android_runtime/vm.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <jni.h>
+
+// Get the Java VM. If the symbol doesn't exist at runtime, it means libandroid_runtime
+// is not loaded in the current process. If the symbol exists but it returns nullptr, it
+// means JavaVM is not yet started.
+extern "C" JavaVM* AndroidRuntimeGetJavaVM();
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index a761d02cc334..0135e45c9b54 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -3226,6 +3226,13 @@
<permission android:name="android.permission.TRIGGER_SHELL_BUGREPORT"
android:protectionLevel="signature" />
+ <!-- Allows an application to trigger profcollect report upload via shell.
+ <p>Not for use by third-party applications.
+ @hide
+ -->
+ <permission android:name="android.permission.TRIGGER_SHELL_PROFCOLLECT_UPLOAD"
+ android:protectionLevel="signature" />
+
<!-- Allows an application to be the status bar. Currently used only by SystemUI.apk
@hide -->
<permission android:name="android.permission.STATUS_BAR_SERVICE"
diff --git a/core/res/OWNERS b/core/res/OWNERS
index 7a8da36d8a7d..684202bdb29e 100644
--- a/core/res/OWNERS
+++ b/core/res/OWNERS
@@ -25,3 +25,6 @@ svetoslavganov@google.com
toddke@google.com
tsuji@google.com
yamasani@google.com
+
+# Multiuser
+per-file res/xml/config_user_types.xml = file:/MULTIUSER_OWNERS
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 6f5fbae65be6..14d314775482 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -4310,6 +4310,15 @@
<!-- The package name for the default bug report handler app from power menu short press. This app must be allowlisted. -->
<string name="config_defaultBugReportHandlerApp" translatable="false"></string>
+ <!-- When true, enables the allowlisted app to upload profcollect reports. -->
+ <bool name="config_profcollectReportUploaderEnabled">false</bool>
+
+ <!-- The package name for the default profcollect report uploader app. This app must be allowlisted. -->
+ <string name="config_defaultProfcollectReportUploaderApp" translatable="false"></string>
+
+ <!-- The action name for the default profcollect report uploader app. -->
+ <string name="config_defaultProfcollectReportUploaderAction" translatable="false"></string>
+
<!-- The default value used for RawContacts.ACCOUNT_NAME when contacts are inserted without this
column set. These contacts are stored locally on the device and will not be removed even
if no android.account.Account with this name exists. A null string will be used if the
@@ -4426,4 +4435,9 @@
<!-- Whether to allow the caching of the SIM PIN for verification after unattended reboot -->
<bool name="config_allow_pin_storage_for_unattended_reboot">true</bool>
+
+ <!-- Whether the device enable the standalone (SA) mode of 5G NR.-->
+ <bool name="config_telephony5gStandalone">false</bool>
+ <!-- Whether the device enable the non-standalone (NSA) mode of 5G NR.-->
+ <bool name="config_telephony5gNonStandalone">false</bool>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index c50c494f5656..2be5152ce2d9 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3876,6 +3876,11 @@
<java-symbol type="bool" name="config_bugReportHandlerEnabled" />
<java-symbol type="string" name="config_defaultBugReportHandlerApp" />
+ <!-- For profcollect report uploader -->
+ <java-symbol type="bool" name="config_profcollectReportUploaderEnabled" />
+ <java-symbol type="string" name="config_defaultProfcollectReportUploaderApp" />
+ <java-symbol type="string" name="config_defaultProfcollectReportUploaderAction" />
+
<java-symbol type="string" name="usb_device_resolve_prompt_warn" />
<!-- For Accessibility system actions -->
@@ -4075,4 +4080,7 @@
<java-symbol type="array" name="config_keep_warming_services" />
<java-symbol type="bool" name="config_voice_data_sms_auto_fallback" />
+
+ <java-symbol type="bool" name="config_telephony5gStandalone" />
+ <java-symbol type="bool" name="config_telephony5gNonStandalone" />
</resources>
diff --git a/core/res/res/xml/sms_short_codes.xml b/core/res/res/xml/sms_short_codes.xml
index 2be5c4746345..37d059a575f0 100644
--- a/core/res/res/xml/sms_short_codes.xml
+++ b/core/res/res/xml/sms_short_codes.xml
@@ -88,9 +88,12 @@
<!-- Cyprus: 4-6 digits (not confirmed), known premium codes listed, plus EU -->
<shortcode country="cy" pattern="\\d{4,6}" premium="7510" free="116\\d{3}" />
- <!-- Czechia: 7-8 digits, starting with 9, plus EU:
- http://www.o2.cz/osobni/en/services-by-alphabet/91670-premium_sms.html -->
- <shortcode country="cz" premium="9\\d{6,7}" free="116\\d{3}" />
+ <!-- Czechia: Premium numbers start with 90, and are either 5 or 7 digits (5 digits is a
+ subscription request, you will be charged for the messages received, but it's necessary
+ to warn on the _request_ as that's the last chance to stop), plus EU:
+ https://www.t-mobile.cz/platebni-a-premium-sms
+ https://www.vodafone.cz/pece/vyuctovani-platby-kredit/platby-mobilem/cena-premium-sms/ -->
+ <shortcode country="cz" premium="90\\d{5}|90\\d{3}" free="116\\d{3}" />
<!-- Germany: 4-5 digits plus 1232xxx (premium codes from http://www.vodafone.de/infofaxe/537.pdf and http://premiumdienste.eplus.de/pdf/kodex.pdf), plus EU. To keep the premium regex from being too large, it only includes payment processors that have been used by SMS malware, with the regular pattern matching the other premium short codes. -->
<shortcode country="de" pattern="\\d{4,5}|1232\\d{3}" premium="11(?:111|833)|1232(?:013|021|060|075|286|358)|118(?:44|80|86)|20[25]00|220(?:21|22|88|99)|221(?:14|21)|223(?:44|53|77)|224[13]0|225(?:20|59|90)|226(?:06|10|20|26|30|40|56|70)|227(?:07|33|39|66|76|78|79|88|99)|228(?:08|11|66|77)|23300|30030|3[12347]000|330(?:33|55|66)|33(?:233|331|366|533)|34(?:34|567)|37000|40(?:040|123|444|[3568]00)|41(?:010|414)|44(?:000|044|344|44[24]|544)|50005|50100|50123|50555|51000|52(?:255|783)|54(?:100|2542)|55(?:077|[24]00|222|333|55|[12369]55)|56(?:789|886)|60800|6[13]000|66(?:[12348]66|566|766|777|88|999)|68888|70(?:07|123|777)|76766|77(?:007|070|222|444|[567]77)|80(?:008|123|888)|82(?:002|[378]00|323|444|472|474|488|727)|83(?:005|[169]00|333|830)|84(?:141|300|32[34]|343|488|499|777|888)|85888|86(?:188|566|640|644|650|677|868|888)|870[24]9|871(?:23|[49]9)|872(?:1[0-8]|49|99)|87499|875(?:49|55|99)|876(?:0[1367]|1[1245678]|54|99)|877(?:00|99)|878(?:15|25|3[567]|8[12])|87999|880(?:08|44|55|77|99)|88688|888(?:03|10|8|89)|8899|90(?:009|999)|99999" free="116\\d{3}|81214|81215|47529|70296|83782|3011|73240|72438" />
diff --git a/core/tests/BroadcastRadioTests/OWNERS b/core/tests/BroadcastRadioTests/OWNERS
index ea4421eae96a..3e360e7e992c 100644
--- a/core/tests/BroadcastRadioTests/OWNERS
+++ b/core/tests/BroadcastRadioTests/OWNERS
@@ -1,2 +1,3 @@
+keunyoung@google.com
+oscarazu@google.com
twasilczyk@google.com
-randolphs@google.com
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 0e9b56dab1dc..b701fa414c51 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -197,6 +197,8 @@ applications that come with the platform
<permission name="android.permission.READ_PRECISE_PHONE_STATE"/>
<permission name="com.android.voicemail.permission.READ_VOICEMAIL"/>
<permission name="com.android.voicemail.permission.WRITE_VOICEMAIL"/>
+ <permission name="android.permission.LOG_COMPAT_CHANGE"/>
+ <permission name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
</privapp-permissions>
<privapp-permissions package="com.android.providers.calendar">
diff --git a/libs/hwui/Readback.cpp b/libs/hwui/Readback.cpp
index 25d57f61654d..e08b99d52cdb 100644
--- a/libs/hwui/Readback.cpp
+++ b/libs/hwui/Readback.cpp
@@ -189,8 +189,10 @@ CopyResult Readback::copySurfaceInto(ANativeWindow* window, const Rect& inSrcRec
if (srcRect.width() != bitmap->width() || srcRect.height() != bitmap->height()) {
paint.setFilterQuality(kLow_SkFilterQuality);
}
- canvas->drawImageRect(image, imageSrcRect, imageDstRect, &paint,
- SkCanvas::kFast_SrcRectConstraint);
+ const bool hasBufferCrop = cropRect.left < cropRect.right && cropRect.top < cropRect.bottom;
+ auto constraint =
+ hasBufferCrop ? SkCanvas::kStrict_SrcRectConstraint : SkCanvas::kFast_SrcRectConstraint;
+ canvas->drawImageRect(image, imageSrcRect, imageDstRect, &paint, constraint);
canvas->restore();
if (!tmpSurface->readPixels(*bitmap, 0, 0)) {
diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
index 11d1b0a9ef2a..087275e73ee8 100644
--- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
+++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
@@ -322,6 +322,11 @@ public class ExternalStorageProvider extends FileSystemProvider {
return true;
}
+ if (TextUtils.equals(Environment.DIRECTORY_ANDROID.toLowerCase(),
+ path.toLowerCase())) {
+ return true;
+ }
+
return false;
} catch (IOException e) {
throw new IllegalArgumentException(
diff --git a/packages/SettingsLib/tests/robotests/OWNERS b/packages/SettingsLib/tests/robotests/OWNERS
new file mode 100644
index 000000000000..8a7a27ee4e21
--- /dev/null
+++ b/packages/SettingsLib/tests/robotests/OWNERS
@@ -0,0 +1,2 @@
+# We do not guard tests - everyone is welcomed to contribute to tests.
+per-file *.java=* \ No newline at end of file
diff --git a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
index d1c3a02c6761..1c614a02757e 100644
--- a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
@@ -114,7 +114,6 @@ class UiAutomationManager {
mUiAutomationFlags = flags;
mUiAutomationServiceInfo = accessibilityServiceInfo;
mUiAutomationService.mServiceInterface = serviceClient;
- mUiAutomationService.onAdded();
try {
mUiAutomationService.mServiceInterface.asBinder().linkToDeath(mUiAutomationService,
0);
@@ -124,6 +123,8 @@ class UiAutomationManager {
return;
}
+ mUiAutomationService.onAdded();
+
mUiAutomationService.connectServiceUnknownThread();
}
}
diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java
index 70b0fc126ed1..41983b68c923 100644
--- a/services/core/java/com/android/server/VcnManagementService.java
+++ b/services/core/java/com/android/server/VcnManagementService.java
@@ -24,6 +24,7 @@ import static android.net.vcn.VcnManager.VCN_STATUS_CODE_ACTIVE;
import static android.net.vcn.VcnManager.VCN_STATUS_CODE_INACTIVE;
import static android.net.vcn.VcnManager.VCN_STATUS_CODE_NOT_CONFIGURED;
import static android.net.vcn.VcnManager.VCN_STATUS_CODE_SAFE_MODE;
+import static android.telephony.SubscriptionManager.isValidSubscriptionId;
import static com.android.server.vcn.TelephonySubscriptionTracker.TelephonySubscriptionSnapshot;
import static com.android.server.vcn.TelephonySubscriptionTracker.TelephonySubscriptionTrackerCallback;
@@ -436,6 +437,15 @@ public class VcnManagementService extends IVcnManagementService.Stub {
}
}
+ private boolean isActiveSubGroup(
+ @NonNull ParcelUuid subGrp, @NonNull TelephonySubscriptionSnapshot snapshot) {
+ if (subGrp == null || snapshot == null) {
+ return false;
+ }
+
+ return Objects.equals(subGrp, snapshot.getActiveDataSubscriptionGroup());
+ }
+
private class VcnSubscriptionTrackerCallback implements TelephonySubscriptionTrackerCallback {
/**
* Handles subscription group changes, as notified by {@link TelephonySubscriptionTracker}
@@ -453,28 +463,49 @@ public class VcnManagementService extends IVcnManagementService.Stub {
// Start any VCN instances as necessary
for (Entry<ParcelUuid, VcnConfig> entry : mConfigs.entrySet()) {
+ final ParcelUuid subGrp = entry.getKey();
+
+ // TODO(b/193687515): Support multiple VCNs active at the same time
if (snapshot.packageHasPermissionsForSubscriptionGroup(
- entry.getKey(), entry.getValue().getProvisioningPackageName())) {
- if (!mVcns.containsKey(entry.getKey())) {
- startVcnLocked(entry.getKey(), entry.getValue());
+ subGrp, entry.getValue().getProvisioningPackageName())
+ && isActiveSubGroup(subGrp, snapshot)) {
+ if (!mVcns.containsKey(subGrp)) {
+ startVcnLocked(subGrp, entry.getValue());
}
// Cancel any scheduled teardowns for active subscriptions
- mHandler.removeCallbacksAndMessages(mVcns.get(entry.getKey()));
+ mHandler.removeCallbacksAndMessages(mVcns.get(subGrp));
}
}
// Schedule teardown of any VCN instances that have lost carrier privileges (after a
// delay)
for (Entry<ParcelUuid, Vcn> entry : mVcns.entrySet()) {
- final VcnConfig config = mConfigs.get(entry.getKey());
+ final ParcelUuid subGrp = entry.getKey();
+ final VcnConfig config = mConfigs.get(subGrp);
+
+ final boolean isActiveSubGrp = isActiveSubGroup(subGrp, snapshot);
+ final boolean isValidActiveDataSubIdNotInVcnSubGrp =
+ isValidSubscriptionId(snapshot.getActiveDataSubscriptionId())
+ && !isActiveSubGroup(subGrp, snapshot);
+ // TODO(b/193687515): Support multiple VCNs active at the same time
if (config == null
|| !snapshot.packageHasPermissionsForSubscriptionGroup(
- entry.getKey(), config.getProvisioningPackageName())) {
- final ParcelUuid uuidToTeardown = entry.getKey();
+ subGrp, config.getProvisioningPackageName())
+ || !isActiveSubGrp) {
+ final ParcelUuid uuidToTeardown = subGrp;
final Vcn instanceToTeardown = entry.getValue();
+ // TODO(b/193687515): Support multiple VCNs active at the same time
+ // If directly switching to a subscription not in the current group,
+ // teardown immediately to prevent other subscription's network from being
+ // outscored by the VCN. Otherwise, teardown after a delay to ensure that
+ // SIM profile switches do not trigger the VCN to cycle.
+ final long teardownDelayMs =
+ isValidActiveDataSubIdNotInVcnSubGrp
+ ? 0
+ : CARRIER_PRIVILEGES_LOST_TEARDOWN_DELAY_MS;
mHandler.postDelayed(() -> {
synchronized (mLock) {
// Guard against case where this is run after a old instance was
@@ -490,7 +521,7 @@ public class VcnManagementService extends IVcnManagementService.Stub {
uuidToTeardown, VCN_STATUS_CODE_INACTIVE);
}
}
- }, instanceToTeardown, CARRIER_PRIVILEGES_LOST_TEARDOWN_DELAY_MS);
+ }, instanceToTeardown, teardownDelayMs);
} else {
// If this VCN's status has not changed, update it with the new snapshot
entry.getValue().updateSubscriptionSnapshot(mLastSnapshot);
@@ -520,12 +551,14 @@ public class VcnManagementService extends IVcnManagementService.Stub {
@GuardedBy("mLock")
private void stopVcnLocked(@NonNull ParcelUuid uuidToTeardown) {
- final Vcn vcnToTeardown = mVcns.remove(uuidToTeardown);
+ // Remove in 2 steps. Make sure teardownAsync is triggered before removing from the map.
+ final Vcn vcnToTeardown = mVcns.get(uuidToTeardown);
if (vcnToTeardown == null) {
return;
}
vcnToTeardown.teardownAsynchronously();
+ mVcns.remove(uuidToTeardown);
// Now that the VCN is removed, notify all registered listeners to refresh their
// UnderlyingNetworkPolicy.
@@ -554,8 +587,13 @@ public class VcnManagementService extends IVcnManagementService.Stub {
private void startVcnLocked(@NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) {
logDbg("Starting VCN config for subGrp: " + subscriptionGroup);
- // TODO(b/176939047): Support multiple VCNs active at the same time, or limit to one active
- // VCN.
+ // TODO(b/193687515): Support multiple VCNs active at the same time
+ if (!mVcns.isEmpty()) {
+ // Only one VCN supported at a time; teardown all others before starting new one
+ for (ParcelUuid uuidToTeardown : mVcns.keySet()) {
+ stopVcnLocked(uuidToTeardown);
+ }
+ }
final VcnCallbackImpl vcnCallback = new VcnCallbackImpl(subscriptionGroup);
@@ -583,7 +621,10 @@ public class VcnManagementService extends IVcnManagementService.Stub {
final Vcn vcn = mVcns.get(subscriptionGroup);
vcn.updateConfig(config);
} else {
- startVcnLocked(subscriptionGroup, config);
+ // TODO(b/193687515): Support multiple VCNs active at the same time
+ if (isActiveSubGroup(subscriptionGroup, mLastSnapshot)) {
+ startVcnLocked(subscriptionGroup, config);
+ }
}
}
@@ -1008,21 +1049,23 @@ public class VcnManagementService extends IVcnManagementService.Stub {
}
}
+ @VisibleForTesting(visibility = Visibility.PRIVATE)
+ void setLastSnapshot(@NonNull TelephonySubscriptionSnapshot snapshot) {
+ mLastSnapshot = Objects.requireNonNull(snapshot);
+ }
+
private void logVdbg(String msg) {
if (VDBG) {
Slog.v(TAG, msg);
- LOCAL_LOG.log(TAG + " VDBG: " + msg);
}
}
private void logDbg(String msg) {
Slog.d(TAG, msg);
- LOCAL_LOG.log(TAG + " DBG: " + msg);
}
private void logDbg(String msg, Throwable tr) {
Slog.d(TAG, msg, tr);
- LOCAL_LOG.log(TAG + " DBG: " + msg + tr);
}
private void logErr(String msg) {
diff --git a/services/core/java/com/android/server/adb/AdbDebuggingManager.java b/services/core/java/com/android/server/adb/AdbDebuggingManager.java
index ed83a644cbfb..bfc4fe70aa2c 100644
--- a/services/core/java/com/android/server/adb/AdbDebuggingManager.java
+++ b/services/core/java/com/android/server/adb/AdbDebuggingManager.java
@@ -1362,7 +1362,10 @@ public class AdbDebuggingManager {
if (args.length > 1) {
hostname = args[1];
}
- PairDevice device = new PairDevice(fingerprints, hostname, false);
+ PairDevice device = new PairDevice();
+ device.name = fingerprints;
+ device.guid = hostname;
+ device.connected = false;
intent.putExtra(AdbManager.WIRELESS_PAIR_DEVICE_EXTRA, device);
mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
// Add the key into the keystore
@@ -1844,8 +1847,11 @@ public class AdbDebuggingManager {
if (args.length > 1) {
hostname = args[1];
}
- pairedDevices.put(keyEntry.getKey(), new PairDevice(
- hostname, fingerprints, mWifiConnectedKeys.contains(keyEntry.getKey())));
+ PairDevice pairDevice = new PairDevice();
+ pairDevice.name = hostname;
+ pairDevice.guid = fingerprints;
+ pairDevice.connected = mWifiConnectedKeys.contains(keyEntry.getKey());
+ pairedDevices.put(keyEntry.getKey(), pairDevice);
}
return pairedDevices;
}
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index b886dc182201..b1ffaeb50912 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -935,7 +935,18 @@ public final class ActiveServices {
void killMisbehavingService(ServiceRecord r,
int appUid, int appPid, String localPackageName) {
synchronized (mAm) {
- stopServiceLocked(r);
+ if (!r.destroying) {
+ // This service is still alive, stop it.
+ stopServiceLocked(r);
+ } else {
+ // Check if there is another instance of it being started in parallel,
+ // if so, stop that too to avoid spamming the system.
+ final ServiceMap smap = getServiceMapLocked(r.userId);
+ final ServiceRecord found = smap.mServicesByInstanceName.remove(r.instanceName);
+ if (found != null) {
+ stopServiceLocked(found);
+ }
+ }
mAm.crashApplication(appUid, appPid, localPackageName, -1,
"Bad notification for startForeground", true /*force*/);
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index eed3141621a8..82bd123cd2fd 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -4133,7 +4133,7 @@ public class ActivityManagerService extends IActivityManager.Stub
// control of all writes to the file in question.
// We must complete all stack dumps within 20 seconds.
- long remainingTime = 20 * 1000;
+ long remainingTime = 20 * 1000 * Build.HW_TIMEOUT_MULTIPLIER;
// As applications are usually interested with the ANR stack traces, but we can't share with
// them the stack traces other than their own stacks. So after the very first PID is
@@ -13831,9 +13831,9 @@ public class ActivityManagerService extends IActivityManager.Stub
}
final long gpuUsage = Debug.getGpuTotalUsageKb();
if (gpuUsage >= 0) {
- final long gpuDmaBufUsage = Debug.getGpuDmaBufUsageKb();
- if (gpuDmaBufUsage >= 0) {
- final long gpuPrivateUsage = gpuUsage - gpuDmaBufUsage;
+ final long gpuPrivateUsage = Debug.getGpuPrivateMemoryKb();
+ if (gpuPrivateUsage >= 0) {
+ final long gpuDmaBufUsage = gpuUsage - gpuPrivateUsage;
pw.print(" GPU: ");
pw.print(stringifyKBSize(gpuUsage));
pw.print(" (");
@@ -14701,9 +14701,9 @@ public class ActivityManagerService extends IActivityManager.Stub
final long gpuUsage = Debug.getGpuTotalUsageKb();
if (gpuUsage >= 0) {
- final long gpuDmaBufUsage = Debug.getGpuDmaBufUsageKb();
- if (gpuDmaBufUsage >= 0) {
- final long gpuPrivateUsage = gpuUsage - gpuDmaBufUsage;
+ final long gpuPrivateUsage = Debug.getGpuPrivateMemoryKb();
+ if (gpuPrivateUsage >= 0) {
+ final long gpuDmaBufUsage = gpuUsage - gpuPrivateUsage;
memInfoBuilder.append(" GPU: ");
memInfoBuilder.append(stringifyKBSize(gpuUsage));
memInfoBuilder.append(" (");
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index b45237caec26..580ceca3b197 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -1164,7 +1164,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
}
@Override
- public void noteResetBleScan() {
+ public void noteBleScanReset() {
enforceCallingPermission();
synchronized (mStats) {
mStats.noteResetBluetoothScanLocked();
diff --git a/services/core/java/com/android/server/am/LmkdConnection.java b/services/core/java/com/android/server/am/LmkdConnection.java
index 1ecb9eb81709..598f086db94d 100644
--- a/services/core/java/com/android/server/am/LmkdConnection.java
+++ b/services/core/java/com/android/server/am/LmkdConnection.java
@@ -50,7 +50,7 @@ public class LmkdConnection {
* Used to hold the data for the statsd atoms logging
* Must be in sync with statslog.h
*/
- private static final int LMKD_REPLY_MAX_SIZE = 214;
+ private static final int LMKD_REPLY_MAX_SIZE = 222;
// connection listener interface
interface LmkdConnectionListener {
diff --git a/services/core/java/com/android/server/am/LmkdStatsReporter.java b/services/core/java/com/android/server/am/LmkdStatsReporter.java
index c702d780bd6b..91588913c33c 100644
--- a/services/core/java/com/android/server/am/LmkdStatsReporter.java
+++ b/services/core/java/com/android/server/am/LmkdStatsReporter.java
@@ -43,6 +43,7 @@ public final class LmkdStatsReporter {
private static final int LOW_MEM_AND_THRASHING = 4;
private static final int DIRECT_RECL_AND_THRASHING = 5;
private static final int LOW_MEM_AND_SWAP_UTIL = 6;
+ private static final int LOW_FILECACHE_AFTER_THRASHING = 7;
/**
* Processes the LMK_KILL_OCCURRED packet data
@@ -63,11 +64,14 @@ public final class LmkdStatsReporter {
final int freeMemKb = inputData.readInt();
final int freeSwapKb = inputData.readInt();
final int killReason = inputData.readInt();
+ final int thrashing = inputData.readInt();
+ final int maxThrashing = inputData.readInt();
final String procName = inputData.readUTF();
FrameworkStatsLog.write(FrameworkStatsLog.LMK_KILL_OCCURRED, uid, procName, oomScore,
pgFault, pgMajFault, rssInBytes, cacheInBytes, swapInBytes, processStartTimeNS,
- minOomScore, freeMemKb, freeSwapKb, mapKillReason(killReason));
+ minOomScore, freeMemKb, freeSwapKb, mapKillReason(killReason), thrashing,
+ maxThrashing);
} catch (IOException e) {
Slog.e(TAG, "Invalid buffer data. Failed to log LMK_KILL_OCCURRED");
return;
@@ -100,6 +104,8 @@ public final class LmkdStatsReporter {
return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__DIRECT_RECL_AND_THRASHING;
case LOW_MEM_AND_SWAP_UTIL:
return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__LOW_MEM_AND_SWAP_UTIL;
+ case LOW_FILECACHE_AFTER_THRASHING:
+ return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__LOW_FILECACHE_AFTER_THRASHING;
default:
return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__UNKNOWN;
}
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
index a90fee6788a8..90f84cafda4d 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
@@ -860,7 +860,7 @@ public class FingerprintService extends BiometricServiceBase {
try {
userId = getUserOrWorkProfileId(clientPackage, userId);
if (userId != mCurrentUserId) {
- int firstSdkInt = Build.VERSION.FIRST_SDK_INT;
+ int firstSdkInt = Build.VERSION.DEVICE_INITIAL_SDK_INT;
if (firstSdkInt < Build.VERSION_CODES.BASE) {
Slog.e(TAG, "First SDK version " + firstSdkInt + " is invalid; must be " +
"at least VERSION_CODES.BASE");
diff --git a/services/core/java/com/android/server/broadcastradio/OWNERS b/services/core/java/com/android/server/broadcastradio/OWNERS
index ea4421eae96a..3e360e7e992c 100644
--- a/services/core/java/com/android/server/broadcastradio/OWNERS
+++ b/services/core/java/com/android/server/broadcastradio/OWNERS
@@ -1,2 +1,3 @@
+keunyoung@google.com
+oscarazu@google.com
twasilczyk@google.com
-randolphs@google.com
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 4ee867b7d051..097b0711eff7 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -289,8 +289,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
private String mActiveIface;
/** Set of any ifaces associated with mobile networks since boot. */
- @GuardedBy("mStatsLock")
- private String[] mMobileIfaces = new String[0];
+ private volatile String[] mMobileIfaces = new String[0];
/** Set of all ifaces currently used by traffic that does not explicitly specify a Network. */
@GuardedBy("mStatsLock")
@@ -935,7 +934,12 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
@Override
public String[] getMobileIfaces() {
- return mMobileIfaces;
+ // TODO (b/192758557): Remove debug log.
+ if (ArrayUtils.contains(mMobileIfaces, null)) {
+ throw new NullPointerException(
+ "null element in mMobileIfaces: " + Arrays.toString(mMobileIfaces));
+ }
+ return mMobileIfaces.clone();
}
@Override
@@ -1084,7 +1088,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
}
@Override
- public long getIfaceStats(String iface, int type) {
+ public long getIfaceStats(@NonNull String iface, int type) {
+ Objects.requireNonNull(iface);
long nativeIfaceStats = nativeGetIfaceStat(iface, type, checkBpfStatsEnable());
if (nativeIfaceStats == -1) {
return nativeIfaceStats;
@@ -1382,7 +1387,12 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
}
}
- mMobileIfaces = mobileIfaces.toArray(new String[mobileIfaces.size()]);
+ mMobileIfaces = mobileIfaces.toArray(new String[0]);
+ // TODO (b/192758557): Remove debug log.
+ if (ArrayUtils.contains(mMobileIfaces, null)) {
+ throw new NullPointerException(
+ "null element in mMobileIfaces: " + Arrays.toString(mMobileIfaces));
+ }
}
private static int getSubIdForMobile(@NonNull NetworkStateSnapshot state) {
diff --git a/services/core/java/com/android/server/pm/OWNERS b/services/core/java/com/android/server/pm/OWNERS
index 43c5d5e4015e..3233819b543f 100644
--- a/services/core/java/com/android/server/pm/OWNERS
+++ b/services/core/java/com/android/server/pm/OWNERS
@@ -42,7 +42,7 @@ per-file KeySetHandle.java = cbrubaker@google.com, nnk@google.com
per-file KeySetManagerService.java = cbrubaker@google.com, nnk@google.com
per-file PackageKeySetData.java = cbrubaker@google.com, nnk@google.com
per-file PackageSignatures.java = cbrubaker@google.com, nnk@google.com
-per-file SELinuxMMAC.java = cbrubaker@google.com, jeffv@google.com, jgalenson@google.com, nnk@google.com
+per-file SELinuxMMAC* = alanstokes@google.com, cbrubaker@google.com, jeffv@google.com, jgalenson@google.com
# shortcuts
per-file LauncherAppsService.java = omakoto@google.com, yamasani@google.com, sunnygoyal@google.com, mett@google.com, pinyaoting@google.com
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
index de0e4b53adab..b658fe0b10f3 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
@@ -596,7 +596,7 @@ public class PackageManagerServiceUtils {
/** Returns true if standard APK Verity is enabled. */
static boolean isApkVerityEnabled() {
- return Build.VERSION.FIRST_SDK_INT >= Build.VERSION_CODES.R
+ return Build.VERSION.DEVICE_INITIAL_SDK_INT >= Build.VERSION_CODES.R
|| SystemProperties.getInt("ro.apk_verity.mode", FSVERITY_DISABLED)
== FSVERITY_ENABLED;
}
diff --git a/services/core/java/com/android/server/security/FileIntegrityService.java b/services/core/java/com/android/server/security/FileIntegrityService.java
index 225bd82e9a21..a690647d8c9e 100644
--- a/services/core/java/com/android/server/security/FileIntegrityService.java
+++ b/services/core/java/com/android/server/security/FileIntegrityService.java
@@ -60,7 +60,7 @@ public class FileIntegrityService extends SystemService {
private final IBinder mService = new IFileIntegrityService.Stub() {
@Override
public boolean isApkVeritySupported() {
- return Build.VERSION.FIRST_SDK_INT >= Build.VERSION_CODES.R
+ return Build.VERSION.DEVICE_INITIAL_SDK_INT >= Build.VERSION_CODES.R
|| SystemProperties.getInt("ro.apk_verity.mode", 0) == 2;
}
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
index 5decf5efd876..03900150cfae 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -3362,7 +3362,11 @@ public class StatsPullAtomService extends SystemService {
int pullFaceSettingsLocked(int atomTag, List<StatsEvent> pulledData) {
final long callingToken = Binder.clearCallingIdentity();
try {
- List<UserInfo> users = mContext.getSystemService(UserManager.class).getUsers();
+ UserManager manager = mContext.getSystemService(UserManager.class);
+ if (manager == null) {
+ return StatsManager.PULL_SKIP;
+ }
+ List<UserInfo> users = manager.getUsers();
int numUsers = users.size();
FaceManager faceManager = mContext.getSystemService(FaceManager.class);
diff --git a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java
index fca706b707fa..a31c56a3b737 100644
--- a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java
+++ b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java
@@ -36,6 +36,7 @@ import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
+import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -85,6 +86,8 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
@NonNull private final SubscriptionManager mSubscriptionManager;
@NonNull private final CarrierConfigManager mCarrierConfigManager;
+ @NonNull private final ActiveDataSubscriptionIdListener mActiveDataSubIdListener;
+
// TODO (Android T+): Add ability to handle multiple subIds per slot.
@NonNull private final Map<Integer, Integer> mReadySubIdsBySlotId = new HashMap<>();
@NonNull private final OnSubscriptionsChangedListener mSubscriptionChangedListener;
@@ -112,6 +115,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
+ mActiveDataSubIdListener = new ActiveDataSubscriptionIdListener();
mSubscriptionChangedListener =
new OnSubscriptionsChangedListener() {
@@ -124,16 +128,20 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
/** Registers the receivers, and starts tracking subscriptions. */
public void register() {
+ final HandlerExecutor executor = new HandlerExecutor(mHandler);
+
mContext.registerReceiver(
this, new IntentFilter(ACTION_CARRIER_CONFIG_CHANGED), null, mHandler);
mSubscriptionManager.addOnSubscriptionsChangedListener(
- new HandlerExecutor(mHandler), mSubscriptionChangedListener);
+ executor, mSubscriptionChangedListener);
+ mTelephonyManager.registerTelephonyCallback(executor, mActiveDataSubIdListener);
}
/** Unregisters the receivers, and stops tracking subscriptions. */
public void unregister() {
mContext.unregisterReceiver(this);
mSubscriptionManager.removeOnSubscriptionsChangedListener(mSubscriptionChangedListener);
+ mTelephonyManager.unregisterTelephonyCallback(mActiveDataSubIdListener);
}
/**
@@ -185,7 +193,8 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
}
final TelephonySubscriptionSnapshot newSnapshot =
- new TelephonySubscriptionSnapshot(newSubIdToInfoMap, privilegedPackages);
+ new TelephonySubscriptionSnapshot(
+ mDeps.getActiveDataSubscriptionId(), newSubIdToInfoMap, privilegedPackages);
// If snapshot was meaningfully updated, fire the callback
if (!newSnapshot.equals(mCurrentSnapshot)) {
@@ -242,16 +251,20 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
/** TelephonySubscriptionSnapshot is a class containing info about active subscriptions */
public static class TelephonySubscriptionSnapshot {
+ private final int mActiveDataSubId;
private final Map<Integer, SubscriptionInfo> mSubIdToInfoMap;
private final Map<ParcelUuid, Set<String>> mPrivilegedPackages;
public static final TelephonySubscriptionSnapshot EMPTY_SNAPSHOT =
- new TelephonySubscriptionSnapshot(Collections.emptyMap(), Collections.emptyMap());
+ new TelephonySubscriptionSnapshot(
+ INVALID_SUBSCRIPTION_ID, Collections.emptyMap(), Collections.emptyMap());
@VisibleForTesting(visibility = Visibility.PRIVATE)
TelephonySubscriptionSnapshot(
+ int activeDataSubId,
@NonNull Map<Integer, SubscriptionInfo> subIdToInfoMap,
@NonNull Map<ParcelUuid, Set<String>> privilegedPackages) {
+ mActiveDataSubId = activeDataSubId;
Objects.requireNonNull(subIdToInfoMap, "subIdToInfoMap was null");
Objects.requireNonNull(privilegedPackages, "privilegedPackages was null");
@@ -265,6 +278,22 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
mPrivilegedPackages = Collections.unmodifiableMap(unmodifiableInnerSets);
}
+ /** Returns the active subscription ID. May be INVALID_SUBSCRIPTION_ID */
+ public int getActiveDataSubscriptionId() {
+ return mActiveDataSubId;
+ }
+
+ /** Returns the active subscription group */
+ @Nullable
+ public ParcelUuid getActiveDataSubscriptionGroup() {
+ final SubscriptionInfo info = mSubIdToInfoMap.get(getActiveDataSubscriptionId());
+ if (info == null) {
+ return null;
+ }
+
+ return info.getGroupUuid();
+ }
+
/** Returns the active subscription groups */
@NonNull
public Set<ParcelUuid> getActiveSubscriptionGroups() {
@@ -313,7 +342,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
@Override
public int hashCode() {
- return Objects.hash(mSubIdToInfoMap, mPrivilegedPackages);
+ return Objects.hash(mActiveDataSubId, mSubIdToInfoMap, mPrivilegedPackages);
}
@Override
@@ -324,7 +353,8 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
final TelephonySubscriptionSnapshot other = (TelephonySubscriptionSnapshot) obj;
- return mSubIdToInfoMap.equals(other.mSubIdToInfoMap)
+ return mActiveDataSubId == other.mActiveDataSubId
+ && mSubIdToInfoMap.equals(other.mSubIdToInfoMap)
&& mPrivilegedPackages.equals(other.mPrivilegedPackages);
}
@@ -333,6 +363,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
pw.println("TelephonySubscriptionSnapshot:");
pw.increaseIndent();
+ pw.println("mActiveDataSubId: " + mActiveDataSubId);
pw.println("mSubIdToInfoMap: " + mSubIdToInfoMap);
pw.println("mPrivilegedPackages: " + mPrivilegedPackages);
@@ -342,7 +373,8 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
@Override
public String toString() {
return "TelephonySubscriptionSnapshot{ "
- + "mSubIdToInfoMap=" + mSubIdToInfoMap
+ + "mActiveDataSubId=" + mActiveDataSubId
+ + ", mSubIdToInfoMap=" + mSubIdToInfoMap
+ ", mPrivilegedPackages=" + mPrivilegedPackages
+ " }";
}
@@ -362,6 +394,14 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
void onNewSnapshot(@NonNull TelephonySubscriptionSnapshot snapshot);
}
+ private class ActiveDataSubscriptionIdListener extends TelephonyCallback
+ implements TelephonyCallback.ActiveDataSubscriptionIdListener {
+ @Override
+ public void onActiveDataSubscriptionIdChanged(int subId) {
+ handleSubscriptionsChanged();
+ }
+ }
+
/** External static dependencies for test injection */
@VisibleForTesting(visibility = Visibility.PRIVATE)
public static class Dependencies {
@@ -369,5 +409,10 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
public boolean isConfigForIdentifiedCarrier(PersistableBundle bundle) {
return CarrierConfigManager.isConfigForIdentifiedCarrier(bundle);
}
+
+ /** Gets the active Subscription ID */
+ public int getActiveDataSubscriptionId() {
+ return SubscriptionManager.getActiveDataSubscriptionId();
+ }
}
}
diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java
index 44a6d13153fd..382398a210bb 100644
--- a/services/core/java/com/android/server/vcn/Vcn.java
+++ b/services/core/java/com/android/server/vcn/Vcn.java
@@ -528,18 +528,15 @@ public class Vcn extends Handler {
private void logVdbg(String msg) {
if (VDBG) {
Slog.v(TAG, getLogPrefix() + msg);
- LOCAL_LOG.log(getLogPrefix() + "VDBG: " + msg);
}
}
private void logDbg(String msg) {
Slog.d(TAG, getLogPrefix() + msg);
- LOCAL_LOG.log(getLogPrefix() + "DBG: " + msg);
}
private void logDbg(String msg, Throwable tr) {
Slog.d(TAG, getLogPrefix() + msg, tr);
- LOCAL_LOG.log(getLogPrefix() + "DBG: " + msg + tr);
}
private void logErr(String msg) {
@@ -599,7 +596,12 @@ public class Vcn extends Handler {
/** Retrieves the network score for a VCN Network */
// Package visibility for use in VcnGatewayConnection and VcnNetworkProvider
static NetworkScore getNetworkScore() {
- return new NetworkScore.Builder().setLegacyInt(VCN_LEGACY_SCORE_INT).build();
+ // TODO(b/193687515): Stop setting TRANSPORT_PRIMARY, define a TRANSPORT_VCN, and set in
+ // NetworkOffer/NetworkAgent.
+ return new NetworkScore.Builder()
+ .setLegacyInt(VCN_LEGACY_SCORE_INT)
+ .setTransportPrimary(true)
+ .build();
}
/** Callback used for passing status signals from a VcnGatewayConnection to its managing Vcn. */
diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
index 38427697a9cd..450257fcdecb 100644
--- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
+++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java
@@ -92,6 +92,7 @@ import com.android.server.vcn.UnderlyingNetworkTracker.UnderlyingNetworkTrackerC
import com.android.server.vcn.Vcn.VcnGatewayStatusCallback;
import com.android.server.vcn.util.LogUtils;
import com.android.server.vcn.util.MtuUtils;
+import com.android.server.vcn.util.OneWayBoolean;
import java.io.IOException;
import java.net.Inet4Address;
@@ -194,6 +195,7 @@ public class VcnGatewayConnection extends StateMachine {
@VisibleForTesting(visibility = Visibility.PRIVATE)
static final int SAFEMODE_TIMEOUT_SECONDS = 30;
+ private static final int SAFEMODE_TIMEOUT_SECONDS_TEST_MODE = 10;
private interface EventInfo {}
@@ -551,8 +553,13 @@ public class VcnGatewayConnection extends StateMachine {
* <p>This variable is false for the lifecycle of the VcnGatewayConnection, until a command to
* teardown has been received. This may be flipped due to events such as the Network becoming
* unwanted, the owning VCN entering safe mode, or an irrecoverable internal failure.
+ *
+ * <p>WARNING: Assignments to this MUST ALWAYS (except for testing) use the or operator ("|="),
+ * otherwise the flag may be flipped back to false after having been set to true. This could
+ * lead to a case where the Vcn parent instance has commanded a teardown, but a spurious
+ * non-quitting disconnect request could flip this back to true.
*/
- private boolean mIsQuitting = false;
+ private OneWayBoolean mIsQuitting = new OneWayBoolean();
/**
* Whether the VcnGatewayConnection is in safe mode.
@@ -794,7 +801,7 @@ public class VcnGatewayConnection extends StateMachine {
private void acquireWakeLock() {
mVcnContext.ensureRunningOnLooperThread();
- if (!mIsQuitting) {
+ if (!mIsQuitting.getValue()) {
mWakeLock.acquire();
logVdbg("Wakelock acquired: " + mWakeLock);
@@ -1076,7 +1083,9 @@ public class VcnGatewayConnection extends StateMachine {
createScheduledAlarm(
SAFEMODE_TIMEOUT_ALARM,
delayedMessage,
- TimeUnit.SECONDS.toMillis(SAFEMODE_TIMEOUT_SECONDS));
+ mVcnContext.isInTestMode()
+ ? TimeUnit.SECONDS.toMillis(SAFEMODE_TIMEOUT_SECONDS_TEST_MODE)
+ : TimeUnit.SECONDS.toMillis(SAFEMODE_TIMEOUT_SECONDS));
}
private void cancelSafeModeAlarm() {
@@ -1297,7 +1306,9 @@ public class VcnGatewayConnection extends StateMachine {
// TODO(b/180526152): notify VcnStatusCallback for Network loss
logDbg("Tearing down. Cause: " + info.reason);
- mIsQuitting = info.shouldQuit;
+ if (info.shouldQuit) {
+ mIsQuitting.setTrue();
+ }
teardownNetwork();
@@ -1341,7 +1352,7 @@ public class VcnGatewayConnection extends StateMachine {
private class DisconnectedState extends BaseState {
@Override
protected void enterState() {
- if (mIsQuitting) {
+ if (mIsQuitting.getValue()) {
quitNow(); // Ignore all queued events; cleanup is complete.
}
@@ -1365,7 +1376,7 @@ public class VcnGatewayConnection extends StateMachine {
break;
case EVENT_DISCONNECT_REQUESTED:
if (((EventDisconnectRequestedInfo) msg.obj).shouldQuit) {
- mIsQuitting = true;
+ mIsQuitting.setTrue();
quitNow();
}
@@ -1451,7 +1462,10 @@ public class VcnGatewayConnection extends StateMachine {
break;
case EVENT_DISCONNECT_REQUESTED:
EventDisconnectRequestedInfo info = ((EventDisconnectRequestedInfo) msg.obj);
- mIsQuitting = info.shouldQuit;
+ if (info.shouldQuit) {
+ mIsQuitting.setTrue();
+ }
+
teardownNetwork();
if (info.reason.equals(DISCONNECT_REASON_UNDERLYING_NETWORK_LOST)) {
@@ -1467,7 +1481,7 @@ public class VcnGatewayConnection extends StateMachine {
case EVENT_SESSION_CLOSED:
mIkeSession = null;
- if (!mIsQuitting && mUnderlying != null) {
+ if (!mIsQuitting.getValue() && mUnderlying != null) {
transitionTo(mSkipRetryTimeout ? mConnectingState : mRetryTimeoutState);
} else {
teardownNetwork();
@@ -1626,7 +1640,7 @@ public class VcnGatewayConnection extends StateMachine {
teardownAsynchronously();
} /* networkUnwantedCallback */,
(status) -> {
- if (mIsQuitting) {
+ if (mIsQuitting.getValue()) {
return; // Ignore; VcnGatewayConnection quitting or already quit
}
@@ -2180,18 +2194,15 @@ public class VcnGatewayConnection extends StateMachine {
private void logVdbg(String msg) {
if (VDBG) {
Slog.v(TAG, getLogPrefix() + msg);
- LOCAL_LOG.log(getLogPrefix() + "VDBG: " + msg);
}
}
private void logDbg(String msg) {
Slog.d(TAG, getLogPrefix() + msg);
- LOCAL_LOG.log(getLogPrefix() + "DBG: " + msg);
}
private void logDbg(String msg, Throwable tr) {
Slog.d(TAG, getLogPrefix() + msg, tr);
- LOCAL_LOG.log(getLogPrefix() + "DBG: " + msg + tr);
}
private void logWarn(String msg) {
@@ -2238,7 +2249,7 @@ public class VcnGatewayConnection extends StateMachine {
+ (getCurrentState() == null
? null
: getCurrentState().getClass().getSimpleName()));
- pw.println("mIsQuitting: " + mIsQuitting);
+ pw.println("mIsQuitting: " + mIsQuitting.getValue());
pw.println("mIsInSafeMode: " + mIsInSafeMode);
pw.println("mCurrentToken: " + mCurrentToken);
pw.println("mFailedAttempts: " + mFailedAttempts);
@@ -2275,12 +2286,12 @@ public class VcnGatewayConnection extends StateMachine {
@VisibleForTesting(visibility = Visibility.PRIVATE)
boolean isQuitting() {
- return mIsQuitting;
+ return mIsQuitting.getValue();
}
@VisibleForTesting(visibility = Visibility.PRIVATE)
- void setIsQuitting(boolean isQuitting) {
- mIsQuitting = isQuitting;
+ void setQuitting() {
+ mIsQuitting.setTrue();
}
@VisibleForTesting(visibility = Visibility.PRIVATE)
diff --git a/services/core/java/com/android/server/vcn/util/OneWayBoolean.java b/services/core/java/com/android/server/vcn/util/OneWayBoolean.java
new file mode 100644
index 000000000000..e79bb2d2547d
--- /dev/null
+++ b/services/core/java/com/android/server/vcn/util/OneWayBoolean.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.vcn.util;
+
+/**
+ * OneWayBoolean is an abstraction for a boolean that MUST only ever be flipped from false to true
+ *
+ * <p>This class allows the providing of a guarantee that a flag will never be flipped back after
+ * being set.
+ *
+ * @hide
+ */
+public class OneWayBoolean {
+ private boolean mValue = false;
+
+ /** Get boolean value. */
+ public boolean getValue() {
+ return mValue;
+ }
+
+ /** Sets the value to true. */
+ public void setTrue() {
+ mValue = true;
+ }
+}
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index ddad1dbd9b3d..eaf76938e2e8 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -3372,7 +3372,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
}
/**
- * Find all task stacks containing {@param userId} and intercept them with an activity
+ * Find all visible task stacks containing {@param userId} and intercept them with an activity
* to block out the contents and possibly start a credential-confirming intent.
*
* @param userId user handle for the locked managed profile.
@@ -3380,18 +3380,42 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
void lockAllProfileTasks(@UserIdInt int userId) {
mService.deferWindowLayout();
try {
- forAllLeafTasks(task -> {
- if (task.getActivity(activity -> !activity.finishing && activity.mUserId == userId)
- != null) {
- mService.getTaskChangeNotificationController().notifyTaskProfileLocked(
- task.mTaskId, userId);
- }
- }, true /* traverseTopToBottom */);
+ final PooledConsumer c = PooledLambda.obtainConsumer(
+ RootWindowContainer::taskTopActivityIsUser, this, PooledLambda.__(Task.class),
+ userId);
+ forAllLeafTasks(c, true /* traverseTopToBottom */);
+ c.recycle();
} finally {
mService.continueWindowLayout();
}
}
+ /**
+ * Detects whether we should show a lock screen in front of this task for a locked user.
+ * <p>
+ * We'll do this if either of the following holds:
+ * <ul>
+ * <li>The top activity explicitly belongs to {@param userId}.</li>
+ * <li>The top activity returns a result to an activity belonging to {@param userId}.</li>
+ * </ul>
+ *
+ * @return {@code true} if the top activity looks like it belongs to {@param userId}.
+ */
+ private void taskTopActivityIsUser(Task task, @UserIdInt int userId) {
+ // To handle the case that work app is in the task but just is not the top one.
+ final ActivityRecord activityRecord = task.getTopNonFinishingActivity();
+ final ActivityRecord resultTo = (activityRecord != null ? activityRecord.resultTo : null);
+
+ // Check the task for a top activity belonging to userId, or returning a
+ // result to an activity belonging to userId. Example case: a document
+ // picker for personal files, opened by a work app, should still get locked.
+ if ((activityRecord != null && activityRecord.mUserId == userId)
+ || (resultTo != null && resultTo.mUserId == userId)) {
+ mService.getTaskChangeNotificationController().notifyTaskProfileLocked(
+ task.mTaskId, userId);
+ }
+ }
+
void cancelInitializingActivities() {
for (int displayNdx = getChildCount() - 1; displayNdx >= 0; --displayNdx) {
final DisplayContent display = getChildAt(displayNdx);
diff --git a/services/incremental/ServiceWrappers.cpp b/services/incremental/ServiceWrappers.cpp
index 99a35adb5074..2b5f98b64760 100644
--- a/services/incremental/ServiceWrappers.cpp
+++ b/services/incremental/ServiceWrappers.cpp
@@ -132,7 +132,7 @@ private:
} mLooper;
};
-class RealIncFs : public IncFsWrapper {
+class RealIncFs final : public IncFsWrapper {
public:
RealIncFs() = default;
~RealIncFs() final = default;
@@ -185,7 +185,7 @@ public:
static JNIEnv* getOrAttachJniEnv(JavaVM* jvm);
-class RealTimedQueueWrapper : public TimedQueueWrapper {
+class RealTimedQueueWrapper final : public TimedQueueWrapper {
public:
RealTimedQueueWrapper(JavaVM* jvm) {
mThread = std::thread([this, jvm]() {
diff --git a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
index 9706d7f5f78d..fdf23d3836ac 100644
--- a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
+++ b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
@@ -37,6 +37,7 @@ import android.os.UserManager;
import android.provider.DeviceConfig;
import android.util.Log;
+import com.android.internal.R;
import com.android.server.IoThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
@@ -58,9 +59,7 @@ public final class ProfcollectForwardingService extends SystemService {
private static final boolean DEBUG = Log.isLoggable(LOG_TAG, Log.DEBUG);
- private static final long BG_PROCESS_PERIOD = DEBUG
- ? TimeUnit.MINUTES.toMillis(1)
- : TimeUnit.DAYS.toMillis(1);
+ private static final long BG_PROCESS_PERIOD = TimeUnit.DAYS.toMillis(1); // every 1 day.
private IProfCollectd mIProfcollect;
private static ProfcollectForwardingService sSelfService;
@@ -285,6 +284,11 @@ public final class ProfcollectForwardingService extends SystemService {
updateEngine.bind(new UpdateEngineCallback() {
@Override
public void onStatusUpdate(int status, float percent) {
+ if (DEBUG) {
+ Log.d(LOG_TAG, "Received OTA status update, status: " + status + ", percent: "
+ + percent);
+ }
+
if (status == UpdateEngine.UpdateStatusConstants.UPDATED_NEED_REBOOT) {
packProfileReport();
}
@@ -302,8 +306,15 @@ public final class ProfcollectForwardingService extends SystemService {
return;
}
+ if (!getUploaderEnabledConfig(getContext())) {
+ return;
+ }
+
new Thread(() -> {
try {
+ Context context = getContext();
+ final String uploaderPkg = getUploaderPackageName(context);
+ final String uploaderAction = getUploaderActionName(context);
String reportUuid = mIProfcollect.report();
final int profileId = getBBProfileId();
@@ -317,13 +328,12 @@ public final class ProfcollectForwardingService extends SystemService {
}
Intent uploadIntent =
- new Intent("com.google.android.apps.betterbug.intent.action.UPLOAD_PROFILE")
- .setPackage("com.google.android.apps.internal.betterbug")
+ new Intent(uploaderAction)
+ .setPackage(uploaderPkg)
.putExtra("EXTRA_DESTINATION", "PROFCOLLECT")
.putExtra("EXTRA_PACKAGE_NAME", getContext().getPackageName())
.putExtra("EXTRA_PROFILE_PATH", reportPath)
.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
- Context context = getContext();
List<ResolveInfo> receivers =
context.getPackageManager().queryBroadcastReceivers(uploadIntent, 0);
@@ -356,4 +366,19 @@ public final class ProfcollectForwardingService extends SystemService {
}
return UserHandle.USER_SYSTEM;
}
+
+ private boolean getUploaderEnabledConfig(Context context) {
+ return context.getResources().getBoolean(
+ R.bool.config_profcollectReportUploaderEnabled);
+ }
+
+ private String getUploaderPackageName(Context context) {
+ return context.getResources().getString(
+ R.string.config_defaultProfcollectReportUploaderApp);
+ }
+
+ private String getUploaderActionName(Context context) {
+ return context.getResources().getString(
+ R.string.config_defaultProfcollectReportUploaderAction);
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageTest.java
new file mode 100755
index 000000000000..036d08412e7c
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.hdmi;
+
+import androidx.test.filters.SmallTest;
+
+import com.google.common.testing.EqualsTester;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests for {@link HdmiCecMessage} class. */
+@SmallTest
+@RunWith(JUnit4.class)
+public class HdmiCecMessageTest {
+
+ @Test
+ public void testEqualsHdmiCecMessage() {
+ int source = 0;
+ int destination = 1;
+ int opcode = 0x7f;
+ byte[] params1 = {0x00, 0x1a, 0x2b, 0x3c};
+ byte[] params2 = {0x00, 0x1a, 0x2b, 0x3c, 0x4d};
+
+ new EqualsTester()
+ .addEqualityGroup(
+ new HdmiCecMessage(source, destination, opcode, params1),
+ new HdmiCecMessage(source, destination, opcode, params1))
+ .addEqualityGroup(new HdmiCecMessage(source, destination, opcode, params2))
+ .addEqualityGroup(new HdmiCecMessage(source + 1, destination, opcode, params1))
+ .addEqualityGroup(new HdmiCecMessage(source, destination + 1, opcode, params1))
+ .addEqualityGroup(new HdmiCecMessage(source, destination, opcode + 1, params1))
+ .testEquals();
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
index 985c6476d767..7bcfeb6656db 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
@@ -24,6 +24,8 @@ import androidx.test.filters.SmallTest;
import com.android.server.hdmi.HdmiUtils.CodecSad;
import com.android.server.hdmi.HdmiUtils.DeviceConfig;
+import com.google.common.testing.EqualsTester;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -108,6 +110,51 @@ public class HdmiUtilsTest {
}
@Test
+ public void testEqualsCodecSad() {
+ byte[] sad = {0x0a, 0x1b, 0x2c};
+ String sadString = "0a1b2c";
+ new EqualsTester()
+ .addEqualityGroup(
+ new HdmiUtils.CodecSad(Constants.AUDIO_CODEC_LPCM, sad),
+ new HdmiUtils.CodecSad(Constants.AUDIO_CODEC_LPCM, sadString))
+ .addEqualityGroup(
+ new HdmiUtils.CodecSad(Constants.AUDIO_CODEC_LPCM, sadString + "01"))
+ .addEqualityGroup(new HdmiUtils.CodecSad(Constants.AUDIO_CODEC_DD, sadString))
+ .addEqualityGroup(
+ new HdmiUtils.CodecSad(Constants.AUDIO_CODEC_DD, sadString + "01"))
+ .testEquals();
+ }
+
+ @Test
+ public void testEqualsDeviceConfig() {
+ String name = "Name";
+
+ CodecSad expectedCodec1 = new CodecSad(Constants.AUDIO_CODEC_LPCM, "011a03");
+ CodecSad expectedCodec2 = new CodecSad(Constants.AUDIO_CODEC_DD, "0d0506");
+ CodecSad expectedCodec3 = new CodecSad(Constants.AUDIO_CODEC_LPCM, "010203");
+ CodecSad expectedCodec4 = new CodecSad(Constants.AUDIO_CODEC_DD, "040506");
+
+ List<CodecSad> list1 = new ArrayList();
+ list1.add(expectedCodec1);
+ list1.add(expectedCodec2);
+ list1.add(expectedCodec3);
+
+ List<CodecSad> list1Duplicate = new ArrayList(list1);
+
+ List<CodecSad> list2 = new ArrayList(list1);
+ list2.add(expectedCodec4);
+
+ new EqualsTester()
+ .addEqualityGroup(
+ new HdmiUtils.DeviceConfig(name, list1),
+ new HdmiUtils.DeviceConfig(name, list1Duplicate))
+ .addEqualityGroup(new HdmiUtils.DeviceConfig(name, list2))
+ .addEqualityGroup(new HdmiUtils.DeviceConfig("my" + name, list1))
+ .addEqualityGroup(new HdmiUtils.DeviceConfig("my" + name, list2))
+ .testEquals();
+ }
+
+ @Test
public void parseSampleXML() {
List<DeviceConfig> config = new ArrayList<>();
try {
diff --git a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java
index 1aff8a7b5382..35d1b17d5822 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java
@@ -25,7 +25,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE;
import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.server.wm.ActivityStack.ActivityState.FINISHING;
import static com.android.server.wm.ActivityStack.ActivityState.PAUSED;
import static com.android.server.wm.ActivityStack.ActivityState.PAUSING;
@@ -37,13 +36,10 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
import android.app.WindowConfiguration;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
-import android.os.UserHandle;
import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
@@ -173,34 +169,5 @@ public class RootWindowContainerTests extends WindowTestsBase {
activity.setState(FINISHING, "test FINISHING");
assertThat(mWm.mRoot.allPausedActivitiesComplete()).isTrue();
}
-
- @Test
- public void testLockAllProfileTasks() {
- // Make an activity visible with the user id set to 0
- DisplayContent displayContent = mWm.mRoot.getDisplayContent(DEFAULT_DISPLAY);
- TaskDisplayArea taskDisplayArea = displayContent.getTaskDisplayAreaAt(0);
- final ActivityStack stack = createTaskStackOnDisplay(WINDOWING_MODE_FULLSCREEN,
- ACTIVITY_TYPE_STANDARD, displayContent);
- final ActivityRecord activity = new ActivityTestsBase.ActivityBuilder(stack.mAtmService)
- .setStack(stack)
- .setUid(0)
- .setCreateTask(true)
- .build();
-
- // Create another activity on top and the user id is 1
- Task task = activity.getTask();
- final ActivityRecord topActivity = new ActivityTestsBase.ActivityBuilder(mWm.mAtmService)
- .setStack(stack)
- .setUid(UserHandle.PER_USER_RANGE + 1)
- .setTask(task)
- .build();
-
- // Make sure the listeners will be notified for putting the task to locked state
- TaskChangeNotificationController controller =
- mWm.mAtmService.getTaskChangeNotificationController();
- spyOn(controller);
- mWm.mRoot.lockAllProfileTasks(0);
- verify(controller).notifyTaskProfileLocked(eq(task.mTaskId), eq(0));
- }
}
diff --git a/telecomm/java/android/telecom/Phone.java b/telecomm/java/android/telecom/Phone.java
index a427ed612b31..02bd0010de99 100644
--- a/telecomm/java/android/telecom/Phone.java
+++ b/telecomm/java/android/telecom/Phone.java
@@ -139,6 +139,8 @@ public final class Phone {
*/
private final int mTargetSdkVersion;
+ private final Object mLock = new Object();
+
Phone(InCallAdapter adapter, String callingPackage, int targetSdkVersion) {
mInCallAdapter = adapter;
mCallingPackage = callingPackage;
@@ -156,8 +158,12 @@ public final class Phone {
if (call == null) {
call = new Call(this, parcelableCall.getId(), mInCallAdapter,
parcelableCall.getState(), mCallingPackage, mTargetSdkVersion);
- mCallByTelecomCallId.put(parcelableCall.getId(), call);
- mCalls.add(call);
+
+ synchronized (mLock) {
+ mCallByTelecomCallId.put(parcelableCall.getId(), call);
+ mCalls.add(call);
+ }
+
checkCallTree(parcelableCall);
call.internalUpdate(parcelableCall, mCallByTelecomCallId);
fireCallAdded(call);
@@ -169,8 +175,10 @@ public final class Phone {
}
final void internalRemoveCall(Call call) {
- mCallByTelecomCallId.remove(call.internalGetCallId());
- mCalls.remove(call);
+ synchronized (mLock) {
+ mCallByTelecomCallId.remove(call.internalGetCallId());
+ mCalls.remove(call);
+ }
InCallService.VideoCall videoCall = call.getVideoCall();
if (videoCall != null) {
diff --git a/telephony/common/Android.bp b/telephony/common/Android.bp
index 201ab530fe86..1cacc0365fe1 100644
--- a/telephony/common/Android.bp
+++ b/telephony/common/Android.bp
@@ -19,6 +19,14 @@ filegroup {
],
}
+filegroup {
+ name: "framework-mms-shared-srcs",
+ visibility: ["//packages/apps/Bluetooth"],
+ srcs: [
+ "com/google/android/mms/**/*.java",
+ ],
+}
+
genrule {
name: "statslog-telephony-common-java-gen",
tools: ["stats-log-api-gen"],
diff --git a/telephony/java/android/telephony/AvailableNetworkInfo.java b/telephony/java/android/telephony/AvailableNetworkInfo.java
index a1c5bbefbbe1..ae597e02f33c 100644
--- a/telephony/java/android/telephony/AvailableNetworkInfo.java
+++ b/telephony/java/android/telephony/AvailableNetworkInfo.java
@@ -19,6 +19,7 @@ package android.telephony;
import android.annotation.NonNull;
import android.os.Parcel;
import android.os.Parcelable;
+import android.telephony.RadioAccessSpecifier;
import java.util.ArrayList;
import java.util.Arrays;
@@ -76,13 +77,28 @@ public final class AvailableNetworkInfo implements Parcelable {
* Opportunistic network service will use these bands to scan.
*
* When no specific bands are specified (empty array or null) CBRS band
- * {@link AccessNetworkConstants.EutranBand.BAND_48} will be used for network scan.
+ * {@link AccessNetworkConstants.EutranBand.BAND_48
+ * } will be used for network scan.
*
* See {@link AccessNetworkConstants} for details.
+ *
+ * @deprecated use {@link #mRadioAccessSpecifiers} instead
*/
+ @Deprecated
private ArrayList<Integer> mBands;
/**
+ * Returns a list of {@link RadioAccessSpecifier} associated with the available network.
+ * Opportunistic network service will use this to determine which bands to scan for.
+ *
+ * If this entry is left empty, {@link RadioAcccessSpecifier}s with {@link AccessNetworkType}s
+ * of {@link AccessNetworkConstants.AccessNetworkType.EUTRAN} and {@link
+ * AccessNetworkConstants.AccessNetworkType.NGRAN} with bands 48 and 71 on each will be assumed
+ * by Opportunistic network service.
+ */
+ private ArrayList<RadioAccessSpecifier> mRadioAccessSpecifiers;
+
+ /**
* Return subscription Id of the available network.
* This value must be one of the entry retrieved from
* {@link SubscriptionManager#getOpportunisticSubscriptions}
@@ -129,6 +145,22 @@ public final class AvailableNetworkInfo implements Parcelable {
return (List<Integer>) mBands.clone();
}
+ /**
+ * Returns a list of {@link RadioAccessSpecifier} associated with the available network.
+ * Opportunistic network service will use this to determine which bands to scan for.
+ *
+ * the returned value is one of {@link AccessNetworkConstants.AccessNetworkType}. When no
+ * specific access network type is specified, {@link RadioAccessSpecifier}s with {@link
+ * AccessNetworkType}s of {@link AccessNetworkConstants.AccessNetworkType.EUTRAN} and {@link
+ * AccessNetworkConstants.AccessNetworkType.NGRAN} with bands 48 and 71 on each will be assumed
+ * by Opportunistic network service.
+ * @return the access network type associated with the available network.
+ * @hide
+ */
+ public List<RadioAccessSpecifier> getRadioAccessSpecifiers() {
+ return (List<RadioAccessSpecifier>) mRadioAccessSpecifiers.clone();
+ }
+
@Override
public int describeContents() {
return 0;
@@ -140,6 +172,7 @@ public final class AvailableNetworkInfo implements Parcelable {
dest.writeInt(mPriority);
dest.writeStringList(mMccMncs);
dest.writeList(mBands);
+ dest.writeList(mRadioAccessSpecifiers);
}
private AvailableNetworkInfo(Parcel in) {
@@ -149,14 +182,25 @@ public final class AvailableNetworkInfo implements Parcelable {
in.readStringList(mMccMncs);
mBands = new ArrayList<>();
in.readList(mBands, Integer.class.getClassLoader());
+ mRadioAccessSpecifiers = new ArrayList<>();
+ in.readList(mRadioAccessSpecifiers, RadioAccessSpecifier.class.getClassLoader());
}
public AvailableNetworkInfo(int subId, int priority, @NonNull List<String> mccMncs,
@NonNull List<Integer> bands) {
+ this(subId, priority, mccMncs, bands,
+ new ArrayList<RadioAccessSpecifier>());
+ }
+
+ /** @hide */
+ private AvailableNetworkInfo(int subId, int priority, @NonNull List<String> mccMncs,
+ @NonNull List<Integer> bands, @NonNull List<RadioAccessSpecifier>
+ radioAccessSpecifiers) {
mSubId = subId;
mPriority = priority;
mMccMncs = new ArrayList<String>(mccMncs);
mBands = new ArrayList<Integer>(bands);
+ mRadioAccessSpecifiers = new ArrayList<RadioAccessSpecifier>(radioAccessSpecifiers);
}
@Override
@@ -177,12 +221,13 @@ public final class AvailableNetworkInfo implements Parcelable {
&& mPriority == ani.mPriority
&& (((mMccMncs != null)
&& mMccMncs.equals(ani.mMccMncs)))
- && mBands.equals(ani.mBands));
+ && mBands.equals(ani.mBands))
+ && mRadioAccessSpecifiers.equals(ani.getRadioAccessSpecifiers());
}
@Override
public int hashCode() {
- return Objects.hash(mSubId, mPriority, mMccMncs, mBands);
+ return Objects.hash(mSubId, mPriority, mMccMncs, mBands, mRadioAccessSpecifiers);
}
public static final @android.annotation.NonNull Parcelable.Creator<AvailableNetworkInfo> CREATOR =
@@ -204,6 +249,72 @@ public final class AvailableNetworkInfo implements Parcelable {
+ " mSubId: " + mSubId
+ " mPriority: " + mPriority
+ " mMccMncs: " + Arrays.toString(mMccMncs.toArray())
- + " mBands: " + Arrays.toString(mBands.toArray()));
+ + " mBands: " + Arrays.toString(mBands.toArray())
+ + " mRadioAccessSpecifiers: " + Arrays.toString(mRadioAccessSpecifiers.toArray()));
+ }
+
+ /**
+ * Provides a convenient way to set the fields of a {@link AvailableNetworkInfo} when
+ * creating a new instance.
+ *
+ * <p>The example below shows how you might create a new {@code AvailableNetworkInfo}:
+ *
+ * <pre><code>
+ *
+ * AvailableNetworkInfo aNI = new AvailableNetworkInfo.Builder()
+ * .setSubId(1)
+ * .setPriority(AvailableNetworkInfo.PRIORITY_MED)
+ * .build();
+ * </code></pre>
+ *
+ * @hide
+ */
+ public static final class Builder {
+ private int mSubId = Integer.MIN_VALUE;
+ private int mPriority = AvailableNetworkInfo.PRIORITY_LOW;
+ private ArrayList<String> mMccMncs = new ArrayList<>();
+ private ArrayList<Integer> mBands = new ArrayList<>();
+ private ArrayList<RadioAccessSpecifier> mRadioAccessSpecifiers = new ArrayList<>();
+
+ public @NonNull Builder setSubId(int subId) {
+ mSubId = subId;
+ return this;
+ }
+
+ public @NonNull Builder setPriority(int priority) {
+ if (priority > AvailableNetworkInfo.PRIORITY_LOW
+ || priority < AvailableNetworkInfo.PRIORITY_HIGH) {
+ throw new IllegalArgumentException("A valid priority must be set");
+ }
+ mPriority = priority;
+ return this;
+ }
+
+ public @NonNull Builder setMccMncs(@NonNull ArrayList<String> mccMncs) {
+ Objects.requireNonNull(mccMncs, "A non-null ArrayList of mccmncs must be set. An empty "
+ + "list is still accepted. Please read documentation in "
+ + "AvailableNetworkService to see consequences of an empty Arraylist.");
+ mMccMncs = mccMncs;
+ return this;
+ }
+
+ public @NonNull Builder setRadioAccessSpecifiers(
+ @NonNull ArrayList<RadioAccessSpecifier> radioAccessSpecifiers) {
+ Objects.requireNonNull(radioAccessSpecifiers, "A non-null ArrayList of "
+ + "RadioAccessSpecifiers must be set. An empty list is still accepted. Please "
+ + "read documentation in AvailableNetworkService to see consequences of an "
+ + "empty Arraylist.");
+ mRadioAccessSpecifiers = radioAccessSpecifiers;
+ return this;
+ }
+
+ public @NonNull AvailableNetworkInfo build() {
+ if (mSubId == Integer.MIN_VALUE) {
+ throw new IllegalArgumentException("A valid subId must be set");
+ }
+
+ return new AvailableNetworkInfo(mSubId, mPriority, mMccMncs, mBands,
+ mRadioAccessSpecifiers);
+ }
}
}
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 5ddc7d87e5c9..2467b12ab008 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -3613,6 +3613,109 @@ public class CarrierConfigManager {
"opportunistic_network_max_backoff_time_long";
/**
+ * Controls SS-RSRP threshold in dBm at which 5G opportunistic network will be considered good
+ * enough for internet data.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_SS_RSRP_INT =
+ "opportunistic_network_entry_threshold_ss_rsrp_int";
+
+ /**
+ * Controls SS-RSRQ threshold in dB at which 5G opportunistic network will be considered good
+ * enough for internet data.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_SS_RSRQ_DOUBLE =
+ "opportunistic_network_entry_threshold_ss_rsrq_double";
+
+ /**
+ * Controls SS-RSRP threshold in dBm below which 5G opportunistic network available will not
+ * be considered good enough for internet data.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_SS_RSRP_INT =
+ "opportunistic_network_exit_threshold_ss_rsrp_int";
+
+ /**
+ * Controls SS-RSRQ threshold in dB below which 5G opportunistic network available will not
+ * be considered good enough for internet data.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_SS_RSRQ_DOUBLE =
+ "opportunistic_network_exit_threshold_ss_rsrq_double";
+
+ /**
+ * Controls back off time in milliseconds for switching back to
+ * 5G opportunistic subscription. This time will be added to
+ * {@link CarrierConfigManager#KEY_OPPORTUNISTIC_NETWORK_5G_DATA_SWITCH_HYSTERESIS_TIME_LONG} to
+ * determine hysteresis time if there is ping pong situation
+ * (determined by system app or 1st party app) between primary and 5G opportunistic
+ * subscription. Ping ping situation is defined in
+ * #KEY_OPPORTUNISTIC_NETWORK_5G_PING_PONG_TIME_LONG.
+ * If ping pong situation continuous #KEY_OPPORTUNISTIC_5G_NETWORK_BACKOFF_TIME_LONG
+ * will be added to previously determined hysteresis time.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_5G_BACKOFF_TIME_LONG =
+ "opportunistic_network_5g_backoff_time_long";
+
+ /**
+ * Controls the max back off time in milliseconds for switching back to
+ * 5G opportunistic subscription.
+ * This time will be the max hysteresis that can be determined irrespective of there is
+ * continuous ping pong situation or not as described in
+ * #KEY_OPPORTUNISTIC_NETWORK_5G_PING_PONG_TIME_LONG and
+ * #KEY_OPPORTUNISTIC_NETWORK_5G_BACKOFF_TIME_LONG.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_5G_MAX_BACKOFF_TIME_LONG =
+ "opportunistic_network_5g_max_backoff_time_long";
+
+ /**
+ * Controls the ping pong determination of 5G opportunistic network.
+ * If opportunistic network is determined as out of service or below
+ * #KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_SS_RSRP_INT or
+ * #KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_SS_RSRQ_INT within
+ * #KEY_OPPORTUNISTIC_NETWORK_5G_PING_PONG_TIME_LONG of switching to opportunistic network,
+ * it will be determined as ping pong situation by system app or 1st party app.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_5G_PING_PONG_TIME_LONG =
+ "opportunistic_network_5g_ping_pong_time_long";
+
+ /**
+ * Controls hysteresis time in milliseconds for which will be waited before switching
+ * data to a 5G opportunistic network.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_5G_DATA_SWITCH_HYSTERESIS_TIME_LONG =
+ "opportunistic_network_5g_data_switch_hysteresis_time_long";
+
+ /**
+ * Controls hysteresis time in milliseconds for which will be waited before switching from
+ * 5G opportunistic network to primary network.
+ *
+ * @hide
+ */
+ public static final String KEY_OPPORTUNISTIC_NETWORK_5G_DATA_SWITCH_EXIT_HYSTERESIS_TIME_LONG =
+ "opportunistic_network_5g_data_switch_exit_hysteresis_time_long";
+ /**
+ * Controls whether 4G opportunistic networks should be scanned for possible data switch.
+ *
+ * @hide
+ */
+ public static final String KEY_ENABLE_4G_OPPORTUNISTIC_NETWORK_SCAN_BOOL =
+ "enabled_4g_opportunistic_network_scan_bool";
+
+ /**
* Indicates zero or more emergency number prefix(es), because some carrier requires
* if users dial an emergency number address with a specific prefix, the combination of the
* prefix and the address is also a valid emergency number to dial. For example, an emergency
@@ -4958,6 +5061,25 @@ public class CarrierConfigManager {
sDefaults.putLong(KEY_OPPORTUNISTIC_NETWORK_BACKOFF_TIME_LONG, 10000);
/* Default value is 60 seconds. */
sDefaults.putLong(KEY_OPPORTUNISTIC_NETWORK_MAX_BACKOFF_TIME_LONG, 60000);
+ /* Default value is -111 dBm. */
+ sDefaults.putInt(KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_SS_RSRP_INT, -111);
+ /* Default value is -18.5 dB. */
+ sDefaults.putDouble(KEY_OPPORTUNISTIC_NETWORK_ENTRY_THRESHOLD_SS_RSRQ_DOUBLE, -18.5);
+ /* Default value is -120 dBm. */
+ sDefaults.putInt(KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_SS_RSRP_INT, -120);
+ /* Default value is -18.5 dB. */
+ sDefaults.putDouble(KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_SS_RSRQ_DOUBLE, -18.5);
+ /* Default value is 10 seconds. */
+ sDefaults.putLong(KEY_OPPORTUNISTIC_NETWORK_5G_BACKOFF_TIME_LONG, 10000);
+ /* Default value is 60 seconds. */
+ sDefaults.putLong(KEY_OPPORTUNISTIC_NETWORK_5G_MAX_BACKOFF_TIME_LONG, 60000);
+ /* Default value is 60 seconds. */
+ sDefaults.putLong(KEY_OPPORTUNISTIC_NETWORK_5G_PING_PONG_TIME_LONG, 60000);
+ /* Default value is 2 seconds. */
+ sDefaults.putLong(KEY_OPPORTUNISTIC_NETWORK_5G_DATA_SWITCH_HYSTERESIS_TIME_LONG, 2000);
+ /* Default value is 2 seconds. */
+ sDefaults.putLong(KEY_OPPORTUNISTIC_NETWORK_5G_DATA_SWITCH_EXIT_HYSTERESIS_TIME_LONG, 2000);
+ sDefaults.putBoolean(KEY_ENABLE_4G_OPPORTUNISTIC_NETWORK_SCAN_BOOL, true);
sDefaults.putAll(Gps.getDefaults());
sDefaults.putIntArray(KEY_CDMA_ENHANCED_ROAMING_INDICATOR_FOR_HOME_NETWORK_INT_ARRAY,
new int[] {
diff --git a/telephony/java/android/telephony/CellSignalStrengthNr.java b/telephony/java/android/telephony/CellSignalStrengthNr.java
index 72150ddf8597..6ada32e1a86d 100644
--- a/telephony/java/android/telephony/CellSignalStrengthNr.java
+++ b/telephony/java/android/telephony/CellSignalStrengthNr.java
@@ -178,7 +178,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
mCsiSinr = inRangeOrUnavailable(csiSinr, -23, 23);
mCsiCqiTableIndex = inRangeOrUnavailable(csiCqiTableIndex, 1, 3);
mCsiCqiReport = csiCqiReport.stream()
- .map(cqi -> new Integer(inRangeOrUnavailable(Byte.toUnsignedInt(cqi), 1, 3)))
+ .map(cqi -> new Integer(inRangeOrUnavailable(Byte.toUnsignedInt(cqi), 0, 15)))
.collect(Collectors.toList());
mSsRsrp = inRangeOrUnavailable(ssRsrp, -140, -44);
mSsRsrq = inRangeOrUnavailable(ssRsrq, -43, 20);
diff --git a/telephony/java/android/telephony/PhoneCapability.java b/telephony/java/android/telephony/PhoneCapability.java
index 6571858fc4ae..a3aaf61a6fec 100644
--- a/telephony/java/android/telephony/PhoneCapability.java
+++ b/telephony/java/android/telephony/PhoneCapability.java
@@ -16,19 +16,27 @@
package android.telephony;
+import android.annotation.IntDef;
+import android.annotation.IntRange;
import android.annotation.NonNull;
+import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
/**
- * Define capability of a modem group. That is, the capabilities
- * are shared between those modems defined by list of modem IDs.
+ * Phone capability which describes the data connection capability of modem.
+ * It's used to evaluate possible phone config change, for example from single
+ * SIM device to multi-SIM device.
+ * @hide
*/
+@SystemApi
public final class PhoneCapability implements Parcelable {
// Hardcoded default DSDS capability.
/** @hide */
@@ -37,6 +45,30 @@ public final class PhoneCapability implements Parcelable {
/** @hide */
public static final PhoneCapability DEFAULT_SSSS_CAPABILITY;
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = { "DEVICE_NR_CAPABILITY_" }, value = {
+ DEVICE_NR_CAPABILITY_NSA,
+ DEVICE_NR_CAPABILITY_SA,
+ })
+ public @interface DeviceNrCapability {}
+
+ /**
+ * Indicates DEVICE_NR_CAPABILITY_NSA determine that the device enable the non-standalone
+ * (NSA) mode of 5G NR.
+ * @hide
+ */
+ @SystemApi
+ public static final int DEVICE_NR_CAPABILITY_NSA = 1;
+
+ /**
+ * Indicates DEVICE_NR_CAPABILITY_SA determine that the device enable the standalone (SA)
+ * mode of 5G NR.
+ * @hide
+ */
+ @SystemApi
+ public static final int DEVICE_NR_CAPABILITY_SA = 2;
+
static {
ModemInfo modemInfo1 = new ModemInfo(0, 0, true, true);
ModemInfo modemInfo2 = new ModemInfo(1, 0, true, true);
@@ -44,55 +76,91 @@ public final class PhoneCapability implements Parcelable {
List<ModemInfo> logicalModemList = new ArrayList<>();
logicalModemList.add(modemInfo1);
logicalModemList.add(modemInfo2);
- DEFAULT_DSDS_CAPABILITY = new PhoneCapability(1, 1, 0, logicalModemList, false);
+ int[] deviceNrCapabilities = new int[0];
+
+ DEFAULT_DSDS_CAPABILITY = new PhoneCapability(1, 1, logicalModemList, false,
+ deviceNrCapabilities);
logicalModemList = new ArrayList<>();
logicalModemList.add(modemInfo1);
- DEFAULT_SSSS_CAPABILITY = new PhoneCapability(1, 1, 0, logicalModemList, false);
+ DEFAULT_SSSS_CAPABILITY = new PhoneCapability(1, 1, logicalModemList, false,
+ deviceNrCapabilities);
}
+ /**
+ * mMaxActiveVoiceSubscriptions defines the maximum subscriptions that can support
+ * simultaneous voice calls. For a dual sim dual standby (DSDS) device it would be one, but
+ * for a dual sim dual active device it would be 2.
+ *
+ * @hide
+ */
+ private final int mMaxActiveVoiceSubscriptions;
+
+ /**
+ * mMaxActiveDataSubscriptions defines the maximum subscriptions that can support
+ * simultaneous data connections.
+ * For example, for L+L device it should be 2.
+ *
+ * @hide
+ */
+ private final int mMaxActiveDataSubscriptions;
+
+ /**
+ * Whether modem supports both internet PDN up so
+ * that we can do ping test before tearing down the
+ * other one.
+ *
+ * @hide
+ */
+ private final boolean mNetworkValidationBeforeSwitchSupported;
+
/** @hide */
- public final int maxActiveVoiceCalls;
- /** @hide */
- public final int maxActiveData;
- /** @hide */
- public final int max5G;
- /** @hide */
- public final boolean validationBeforeSwitchSupported;
- /** @hide */
- public final List<ModemInfo> logicalModemList;
+ private final List<ModemInfo> mLogicalModemList;
+
+ /**
+ * List of logical modem information.
+ *
+ * @hide
+ */
+ private final int[] mDeviceNrCapabilities;
/** @hide */
- public PhoneCapability(int maxActiveVoiceCalls, int maxActiveData, int max5G,
- List<ModemInfo> logicalModemList, boolean validationBeforeSwitchSupported) {
- this.maxActiveVoiceCalls = maxActiveVoiceCalls;
- this.maxActiveData = maxActiveData;
- this.max5G = max5G;
+ public PhoneCapability(int maxActiveVoiceSubscriptions, int maxActiveDataSubscriptions,
+ List<ModemInfo> logicalModemList, boolean networkValidationBeforeSwitchSupported,
+ int[] deviceNrCapabilities) {
+ this.mMaxActiveVoiceSubscriptions = maxActiveVoiceSubscriptions;
+ this.mMaxActiveDataSubscriptions = maxActiveDataSubscriptions;
// Make sure it's not null.
- this.logicalModemList = logicalModemList == null ? new ArrayList<>() : logicalModemList;
- this.validationBeforeSwitchSupported = validationBeforeSwitchSupported;
+ this.mLogicalModemList = logicalModemList == null ? new ArrayList<>() : logicalModemList;
+ this.mNetworkValidationBeforeSwitchSupported = networkValidationBeforeSwitchSupported;
+ this.mDeviceNrCapabilities = deviceNrCapabilities;
}
@Override
public String toString() {
- return "maxActiveVoiceCalls=" + maxActiveVoiceCalls + " maxActiveData=" + maxActiveData
- + " max5G=" + max5G + "logicalModemList:"
- + Arrays.toString(logicalModemList.toArray());
+ return "mMaxActiveVoiceSubscriptions=" + mMaxActiveVoiceSubscriptions
+ + " mMaxActiveDataSubscriptions=" + mMaxActiveDataSubscriptions
+ + " mNetworkValidationBeforeSwitchSupported="
+ + mNetworkValidationBeforeSwitchSupported
+ + " mDeviceNrCapability " + Arrays.toString(mDeviceNrCapabilities);
}
private PhoneCapability(Parcel in) {
- maxActiveVoiceCalls = in.readInt();
- maxActiveData = in.readInt();
- max5G = in.readInt();
- validationBeforeSwitchSupported = in.readBoolean();
- logicalModemList = new ArrayList<>();
- in.readList(logicalModemList, ModemInfo.class.getClassLoader());
+ mMaxActiveVoiceSubscriptions = in.readInt();
+ mMaxActiveDataSubscriptions = in.readInt();
+ mNetworkValidationBeforeSwitchSupported = in.readBoolean();
+ mLogicalModemList = new ArrayList<>();
+ in.readList(mLogicalModemList, ModemInfo.class.getClassLoader());
+ mDeviceNrCapabilities = in.createIntArray();
}
@Override
public int hashCode() {
- return Objects.hash(maxActiveVoiceCalls, maxActiveData, max5G, logicalModemList,
- validationBeforeSwitchSupported);
+ return Objects.hash(mMaxActiveVoiceSubscriptions,
+ mMaxActiveDataSubscriptions,
+ mLogicalModemList,
+ mNetworkValidationBeforeSwitchSupported,
+ Arrays.hashCode(mDeviceNrCapabilities));
}
@Override
@@ -107,11 +175,12 @@ public final class PhoneCapability implements Parcelable {
PhoneCapability s = (PhoneCapability) o;
- return (maxActiveVoiceCalls == s.maxActiveVoiceCalls
- && maxActiveData == s.maxActiveData
- && max5G == s.max5G
- && validationBeforeSwitchSupported == s.validationBeforeSwitchSupported
- && logicalModemList.equals(s.logicalModemList));
+ return (mMaxActiveVoiceSubscriptions == s.mMaxActiveVoiceSubscriptions
+ && mMaxActiveDataSubscriptions == s.mMaxActiveDataSubscriptions
+ && mNetworkValidationBeforeSwitchSupported
+ == s.mNetworkValidationBeforeSwitchSupported
+ && mLogicalModemList.equals(s.mLogicalModemList)
+ && Arrays.equals(mDeviceNrCapabilities, s.mDeviceNrCapabilities));
}
/**
@@ -125,14 +194,15 @@ public final class PhoneCapability implements Parcelable {
* {@link Parcelable#writeToParcel}
*/
public void writeToParcel(@NonNull Parcel dest, @Parcelable.WriteFlags int flags) {
- dest.writeInt(maxActiveVoiceCalls);
- dest.writeInt(maxActiveData);
- dest.writeInt(max5G);
- dest.writeBoolean(validationBeforeSwitchSupported);
- dest.writeList(logicalModemList);
+ dest.writeInt(mMaxActiveVoiceSubscriptions);
+ dest.writeInt(mMaxActiveDataSubscriptions);
+ dest.writeBoolean(mNetworkValidationBeforeSwitchSupported);
+ dest.writeList(mLogicalModemList);
+ dest.writeIntArray(mDeviceNrCapabilities);
}
- public static final @android.annotation.NonNull Parcelable.Creator<PhoneCapability> CREATOR = new Parcelable.Creator() {
+ public static final @android.annotation.NonNull Parcelable.Creator<PhoneCapability> CREATOR =
+ new Parcelable.Creator() {
public PhoneCapability createFromParcel(Parcel in) {
return new PhoneCapability(in);
}
@@ -141,4 +211,57 @@ public final class PhoneCapability implements Parcelable {
return new PhoneCapability[size];
}
};
+
+ /**
+ * @return the maximum subscriptions that can support simultaneous voice calls. For a dual
+ * sim dual standby (DSDS) device it would be one, but for a dual sim dual active device it
+ * would be 2.
+ * @hide
+ */
+ @SystemApi
+ public @IntRange(from = 1) int getMaxActiveVoiceSubscriptions() {
+ return mMaxActiveVoiceSubscriptions;
+ }
+
+ /**
+ * @return the maximum subscriptions that can support simultaneous data connections.
+ * For example, for L+L device it should be 2.
+ * @hide
+ */
+ @SystemApi
+ public @IntRange(from = 1) int getMaxActiveDataSubscriptions() {
+ return mMaxActiveDataSubscriptions;
+ }
+
+ /**
+ * @return Check whether the Citizens Broadband Radio Service(CBRS) network validation before
+ * CBRS switch is supported or not.
+ *
+ * @hide
+ */
+ public boolean isNetworkValidationBeforeSwitchSupported() {
+ return mNetworkValidationBeforeSwitchSupported;
+ }
+
+ /**
+ * @return The list of logical modem information.
+ * @hide
+ */
+ public List<ModemInfo> getLogicalModemList() {
+ return mLogicalModemList;
+ }
+
+ /**
+ * Return List of the device's NR capability. If the device doesn't support NR capability,
+ * then this api return empty array.
+ * @see DEVICE_NR_CAPABILITY_NSA
+ * @see DEVICE_NR_CAPABILITY_SA
+ *
+ * @return List of the device's NR capability.
+ * @hide
+ */
+ @SystemApi
+ public @NonNull @DeviceNrCapability int[] getDeviceNrCapabilities() {
+ return mDeviceNrCapabilities == null ? (new int[0]) : mDeviceNrCapabilities;
+ }
}
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index 104cc7516aeb..c86bedbc5ca5 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
@@ -113,9 +114,9 @@ public class SubscriptionInfo implements Parcelable {
private int mDataRoaming;
/**
- * SIM Icon bitmap
+ * SIM icon bitmap cache
*/
- private Bitmap mIconBitmap;
+ @Nullable private Bitmap mIconBitmap;
/**
* Mobile Country Code
@@ -403,6 +404,10 @@ public class SubscriptionInfo implements Parcelable {
* @return A bitmap icon for this {@code SubscriptionInfo}.
*/
public Bitmap createIconBitmap(Context context) {
+ if (mIconBitmap == null) {
+ mIconBitmap = BitmapFactory.decodeResource(context.getResources(),
+ com.android.internal.R.drawable.ic_sim_card_multi_24px_clr);
+ }
int width = mIconBitmap.getWidth();
int height = mIconBitmap.getHeight();
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
@@ -570,6 +575,13 @@ public class SubscriptionInfo implements Parcelable {
/**
* @hide
*/
+ public void clearGroupUuid() {
+ this.mGroupUUID = null;
+ }
+
+ /**
+ * @hide
+ */
public List<String> getEhplmns() {
return mEhplmns == null ? Collections.emptyList() : Arrays.asList(mEhplmns);
}
@@ -765,7 +777,6 @@ public class SubscriptionInfo implements Parcelable {
String mcc = source.readString();
String mnc = source.readString();
String countryIso = source.readString();
- Bitmap iconBitmap = source.readParcelable(Bitmap.class.getClassLoader());
boolean isEmbedded = source.readBoolean();
UiccAccessRule[] nativeAccessRules = source.createTypedArray(UiccAccessRule.CREATOR);
String cardString = source.readString();
@@ -784,10 +795,10 @@ public class SubscriptionInfo implements Parcelable {
boolean areUiccApplicationsEnabled = source.readBoolean();
SubscriptionInfo info = new SubscriptionInfo(id, iccId, simSlotIndex, displayName,
- carrierName, nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc,
- countryIso, isEmbedded, nativeAccessRules, cardString, cardId, isOpportunistic,
- groupUUID, isGroupDisabled, carrierid, profileClass, subType, groupOwner,
- carrierConfigAccessRules, areUiccApplicationsEnabled);
+ carrierName, nameSource, iconTint, number, dataRoaming, /* icon= */ null,
+ mcc, mnc, countryIso, isEmbedded, nativeAccessRules, cardString, cardId,
+ isOpportunistic, groupUUID, isGroupDisabled, carrierid, profileClass, subType,
+ groupOwner, carrierConfigAccessRules, areUiccApplicationsEnabled);
info.setAssociatedPlmns(ehplmns, hplmns);
return info;
}
@@ -812,7 +823,7 @@ public class SubscriptionInfo implements Parcelable {
dest.writeString(mMcc);
dest.writeString(mMnc);
dest.writeString(mCountryIso);
- dest.writeParcelable(mIconBitmap, flags);
+ // Do not write mIconBitmap since it should be lazily loaded on first usage
dest.writeBoolean(mIsEmbedded);
dest.writeTypedArray(mNativeAccessRules, flags);
dest.writeString(mCardString);
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 93b70ae6776f..4189784bf5e0 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -13425,7 +13425,12 @@ public class TelephonyManager {
IBooleanConsumer aidlConsumer = callback == null ? null : new IBooleanConsumer.Stub() {
@Override
public void accept(boolean result) {
- executor.execute(() -> callback.accept(result));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> callback.accept(result));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
};
@@ -15060,4 +15065,32 @@ public class TelephonyManager {
}
return PREPARE_UNATTENDED_REBOOT_ERROR;
}
+
+ /**
+ * Gets the current phone capability.
+ *
+ * @return the PhoneCapability which describes the data connection capability of modem.
+ * It's used to evaluate possible phone config change, for example from single
+ * SIM device to multi-SIM device.
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+ public @NonNull PhoneCapability getPhoneCapability() {
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null) {
+ return telephony.getPhoneCapability();
+ } else {
+ throw new IllegalStateException("telephony service is null.");
+ }
+ } catch (RemoteException ex) {
+ ex.rethrowAsRuntimeException();
+ }
+ if (getActiveModemCount() > 1) {
+ return PhoneCapability.DEFAULT_DSDS_CAPABILITY;
+ } else {
+ return PhoneCapability.DEFAULT_SSSS_CAPABILITY;
+ }
+ }
}
diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java
index 740332708dbc..ac1033ad2fa0 100644
--- a/telephony/java/android/telephony/ims/ImsMmTelManager.java
+++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java
@@ -444,7 +444,12 @@ public class ImsMmTelManager implements RegistrationManager {
iTelephony.getImsMmTelRegistrationState(mSubId, new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- executor.execute(() -> stateCallback.accept(result));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> stateCallback.accept(result));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
});
} catch (RemoteException e) {
@@ -485,7 +490,12 @@ public class ImsMmTelManager implements RegistrationManager {
new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- executor.execute(() -> transportTypeCallback.accept(result));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> transportTypeCallback.accept(result));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
});
} catch (RemoteException e) {
@@ -802,7 +812,12 @@ public class ImsMmTelManager implements RegistrationManager {
iTelephony.isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- executor.execute(() -> callback.accept(result == 1));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> callback.accept(result == 1));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
}, capability, transportType);
} catch (ServiceSpecificException sse) {
@@ -1348,7 +1363,12 @@ public class ImsMmTelManager implements RegistrationManager {
iTelephony.getImsMmTelFeatureState(mSubId, new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- executor.execute(() -> callback.accept(result));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> callback.accept(result));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
});
} catch (ServiceSpecificException sse) {
diff --git a/telephony/java/android/telephony/ims/ImsRcsManager.java b/telephony/java/android/telephony/ims/ImsRcsManager.java
index 81d820731d05..1c7fbc4b7dd9 100644
--- a/telephony/java/android/telephony/ims/ImsRcsManager.java
+++ b/telephony/java/android/telephony/ims/ImsRcsManager.java
@@ -299,7 +299,12 @@ public class ImsRcsManager {
imsRcsController.getImsRcsRegistrationState(mSubId, new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- executor.execute(() -> stateCallback.accept(result));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> stateCallback.accept(result));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
});
} catch (RemoteException e) {
@@ -343,7 +348,12 @@ public class ImsRcsManager {
new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
- executor.execute(() -> transportTypeCallback.accept(result));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> transportTypeCallback.accept(result));
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
});
} catch (RemoteException e) {
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 374aedaf3c71..9b2f119ac77d 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -43,6 +43,7 @@ import android.telephony.ICellInfoCallback;
import android.telephony.ModemActivityInfo;
import android.telephony.NeighboringCellInfo;
import android.telephony.NetworkScanRequest;
+import android.telephony.PhoneCapability;
import android.telephony.PhoneNumberRange;
import android.telephony.RadioAccessFamily;
import android.telephony.RadioAccessSpecifier;
@@ -2440,4 +2441,9 @@ interface ITelephony {
* of error.
*/
int prepareForUnattendedReboot();
+
+ /**
+ * Gets the current phone capability.
+ */
+ PhoneCapability getPhoneCapability();
}
diff --git a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java
index b7a6d0ff7607..7c7dc4d79e9a 100644
--- a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java
+++ b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java
@@ -23,6 +23,7 @@ import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
import static android.net.vcn.VcnManager.VCN_STATUS_CODE_ACTIVE;
import static android.net.vcn.VcnManager.VCN_STATUS_CODE_SAFE_MODE;
+import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
import static android.telephony.TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
import static android.telephony.TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
@@ -50,6 +51,7 @@ import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import android.annotation.NonNull;
@@ -99,6 +101,7 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import java.io.FileNotFoundException;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -227,6 +230,7 @@ public class VcnManagementServiceTest {
setupMockedCarrierPrivilege(true);
mVcnMgmtSvc = new VcnManagementService(mMockContext, mMockDeps);
+ setupActiveSubscription(TEST_UUID_1);
doReturn(mMockIBinder).when(mMockPolicyListener).asBinder();
doReturn(mMockIBinder).when(mMockStatusCallback).asBinder();
@@ -300,23 +304,65 @@ public class VcnManagementServiceTest {
}
private TelephonySubscriptionSnapshot triggerSubscriptionTrackerCbAndGetSnapshot(
- Set<ParcelUuid> activeSubscriptionGroups) {
+ ParcelUuid activeDataSubGrp, Set<ParcelUuid> activeSubscriptionGroups) {
return triggerSubscriptionTrackerCbAndGetSnapshot(
- activeSubscriptionGroups, Collections.emptyMap());
+ activeDataSubGrp, activeSubscriptionGroups, Collections.emptyMap());
}
private TelephonySubscriptionSnapshot triggerSubscriptionTrackerCbAndGetSnapshot(
- Set<ParcelUuid> activeSubscriptionGroups, Map<Integer, ParcelUuid> subIdToGroupMap) {
+ ParcelUuid activeDataSubGrp,
+ Set<ParcelUuid> activeSubscriptionGroups,
+ Map<Integer, ParcelUuid> subIdToGroupMap) {
+ return triggerSubscriptionTrackerCbAndGetSnapshot(
+ activeDataSubGrp,
+ activeSubscriptionGroups,
+ subIdToGroupMap,
+ true /* hasCarrierPrivileges */);
+ }
+
+ private TelephonySubscriptionSnapshot triggerSubscriptionTrackerCbAndGetSnapshot(
+ ParcelUuid activeDataSubGrp,
+ Set<ParcelUuid> activeSubscriptionGroups,
+ Map<Integer, ParcelUuid> subIdToGroupMap,
+ boolean hasCarrierPrivileges) {
return triggerSubscriptionTrackerCbAndGetSnapshot(
- activeSubscriptionGroups, subIdToGroupMap, true /* hasCarrierPrivileges */);
+ TEST_SUBSCRIPTION_ID,
+ activeDataSubGrp,
+ activeSubscriptionGroups,
+ subIdToGroupMap,
+ hasCarrierPrivileges);
}
private TelephonySubscriptionSnapshot triggerSubscriptionTrackerCbAndGetSnapshot(
+ int activeDataSubId,
+ ParcelUuid activeDataSubGrp,
+ Set<ParcelUuid> activeSubscriptionGroups,
+ Map<Integer, ParcelUuid> subIdToGroupMap,
+ boolean hasCarrierPrivileges) {
+ final TelephonySubscriptionSnapshot snapshot =
+ buildSubscriptionSnapshot(
+ activeDataSubId,
+ activeDataSubGrp,
+ activeSubscriptionGroups,
+ subIdToGroupMap,
+ hasCarrierPrivileges);
+
+ final TelephonySubscriptionTrackerCallback cb = getTelephonySubscriptionTrackerCallback();
+ cb.onNewSnapshot(snapshot);
+
+ return snapshot;
+ }
+
+ private TelephonySubscriptionSnapshot buildSubscriptionSnapshot(
+ int activeDataSubId,
+ ParcelUuid activeDataSubGrp,
Set<ParcelUuid> activeSubscriptionGroups,
Map<Integer, ParcelUuid> subIdToGroupMap,
boolean hasCarrierPrivileges) {
final TelephonySubscriptionSnapshot snapshot = mock(TelephonySubscriptionSnapshot.class);
doReturn(activeSubscriptionGroups).when(snapshot).getActiveSubscriptionGroups();
+ doReturn(activeDataSubGrp).when(snapshot).getActiveDataSubscriptionGroup();
+ doReturn(activeDataSubId).when(snapshot).getActiveDataSubscriptionId();
final Set<String> privilegedPackages =
(activeSubscriptionGroups == null || activeSubscriptionGroups.isEmpty())
@@ -343,12 +389,19 @@ public class VcnManagementServiceTest {
return subIds;
}).when(snapshot).getAllSubIdsInGroup(any());
- final TelephonySubscriptionTrackerCallback cb = getTelephonySubscriptionTrackerCallback();
- cb.onNewSnapshot(snapshot);
-
return snapshot;
}
+ private void setupActiveSubscription(ParcelUuid activeDataSubGrp) {
+ mVcnMgmtSvc.setLastSnapshot(
+ buildSubscriptionSnapshot(
+ TEST_SUBSCRIPTION_ID,
+ activeDataSubGrp,
+ Collections.emptySet(),
+ Collections.emptyMap(),
+ true /* hasCarrierPrivileges */));
+ }
+
private TelephonySubscriptionTrackerCallback getTelephonySubscriptionTrackerCallback() {
final ArgumentCaptor<TelephonySubscriptionTrackerCallback> captor =
ArgumentCaptor.forClass(TelephonySubscriptionTrackerCallback.class);
@@ -372,25 +425,56 @@ public class VcnManagementServiceTest {
@Test
public void testTelephonyNetworkTrackerCallbackStartsInstances() throws Exception {
+ // Add a record for a non-active SIM
+ mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
+
TelephonySubscriptionSnapshot snapshot =
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(TEST_UUID_1));
+ triggerSubscriptionTrackerCbAndGetSnapshot(
+ TEST_UUID_1, new ArraySet<>(Arrays.asList(TEST_UUID_1, TEST_UUID_2)));
verify(mMockDeps)
.newVcnContext(
eq(mMockContext),
eq(mTestLooper.getLooper()),
any(VcnNetworkProvider.class),
anyBoolean());
+
+ // Verify that only the VCN for the active data SIM was started.
verify(mMockDeps)
.newVcn(eq(mVcnContext), eq(TEST_UUID_1), eq(TEST_VCN_CONFIG), eq(snapshot), any());
+ verify(mMockDeps, never())
+ .newVcn(eq(mVcnContext), eq(TEST_UUID_2), eq(TEST_VCN_CONFIG), eq(snapshot), any());
+ }
+
+ @Test
+ public void testTelephonyNetworkTrackerCallbackSwitchingActiveDataStartsAndStopsInstances()
+ throws Exception {
+ // Add a record for a non-active SIM
+ mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
+ final Vcn vcn = startAndGetVcnInstance(TEST_UUID_1);
+
+ TelephonySubscriptionSnapshot snapshot =
+ triggerSubscriptionTrackerCbAndGetSnapshot(
+ TEST_UUID_2, new ArraySet<>(Arrays.asList(TEST_UUID_1, TEST_UUID_2)));
+
+ // Verify that a new VCN for UUID_2 was started, and the old instance was torn down
+ // immediately
+ verify(mMockDeps)
+ .newVcn(eq(mVcnContext), eq(TEST_UUID_2), eq(TEST_VCN_CONFIG), eq(snapshot), any());
+ verify(vcn).teardownAsynchronously();
+ assertEquals(1, mVcnMgmtSvc.getAllVcns().size());
+ assertFalse(mVcnMgmtSvc.getAllVcns().containsKey(TEST_UUID_1));
+ assertTrue(mVcnMgmtSvc.getAllVcns().containsKey(TEST_UUID_2));
}
@Test
public void testTelephonyNetworkTrackerCallbackStopsInstances() throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
final TelephonySubscriptionTrackerCallback cb = getTelephonySubscriptionTrackerCallback();
final Vcn vcn = startAndGetVcnInstance(TEST_UUID_2);
mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.emptySet());
+ triggerSubscriptionTrackerCbAndGetSnapshot(null, Collections.emptySet());
// Verify teardown after delay
mTestLooper.moveTimeForward(VcnManagementService.CARRIER_PRIVILEGES_LOST_TEARDOWN_DELAY_MS);
@@ -400,19 +484,76 @@ public class VcnManagementServiceTest {
}
@Test
+ public void testTelephonyNetworkTrackerCallbackSwitchToNewSubscriptionImmediatelyTearsDown()
+ throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
+ final TelephonySubscriptionTrackerCallback cb = getTelephonySubscriptionTrackerCallback();
+ final Vcn vcn = startAndGetVcnInstance(TEST_UUID_2);
+
+ // Simulate switch to different default data subscription that does not have a VCN.
+ triggerSubscriptionTrackerCbAndGetSnapshot(
+ TEST_SUBSCRIPTION_ID,
+ null /* activeDataSubscriptionGroup */,
+ Collections.emptySet(),
+ Collections.emptyMap(),
+ false /* hasCarrierPrivileges */);
+ mTestLooper.dispatchAll();
+
+ verify(vcn).teardownAsynchronously();
+ assertEquals(0, mVcnMgmtSvc.getAllVcns().size());
+ }
+
+ /**
+ * Tests an intermediate state where carrier privileges are marked as lost before active data
+ * subId changes during a SIM ejection.
+ *
+ * <p>The expected outcome is that the VCN is torn down after a delay, as opposed to
+ * immediately.
+ */
+ @Test
+ public void testTelephonyNetworkTrackerCallbackLostCarrierPrivilegesBeforeActiveDataSubChanges()
+ throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
+ final TelephonySubscriptionTrackerCallback cb = getTelephonySubscriptionTrackerCallback();
+ final Vcn vcn = startAndGetVcnInstance(TEST_UUID_2);
+
+ // Simulate privileges lost
+ triggerSubscriptionTrackerCbAndGetSnapshot(
+ TEST_SUBSCRIPTION_ID,
+ TEST_UUID_2,
+ Collections.emptySet(),
+ Collections.emptyMap(),
+ false /* hasCarrierPrivileges */);
+
+ // Verify teardown after delay
+ mTestLooper.moveTimeForward(VcnManagementService.CARRIER_PRIVILEGES_LOST_TEARDOWN_DELAY_MS);
+ mTestLooper.dispatchAll();
+ verify(vcn).teardownAsynchronously();
+ }
+
+ @Test
public void testTelephonyNetworkTrackerCallbackSimSwitchesDoNotKillVcnInstances()
throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
final TelephonySubscriptionTrackerCallback cb = getTelephonySubscriptionTrackerCallback();
final Vcn vcn = startAndGetVcnInstance(TEST_UUID_2);
// Simulate SIM unloaded
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.emptySet());
+ triggerSubscriptionTrackerCbAndGetSnapshot(
+ INVALID_SUBSCRIPTION_ID,
+ null /* activeDataSubscriptionGroup */,
+ Collections.emptySet(),
+ Collections.emptyMap(),
+ false /* hasCarrierPrivileges */);
// Simulate new SIM loaded right during teardown delay.
mTestLooper.moveTimeForward(
VcnManagementService.CARRIER_PRIVILEGES_LOST_TEARDOWN_DELAY_MS / 2);
mTestLooper.dispatchAll();
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(TEST_UUID_2));
+ triggerSubscriptionTrackerCbAndGetSnapshot(TEST_UUID_2, Collections.singleton(TEST_UUID_2));
// Verify that even after the full timeout duration, the VCN instance is not torn down
mTestLooper.moveTimeForward(VcnManagementService.CARRIER_PRIVILEGES_LOST_TEARDOWN_DELAY_MS);
@@ -422,11 +563,13 @@ public class VcnManagementServiceTest {
@Test
public void testTelephonyNetworkTrackerCallbackDoesNotKillNewVcnInstances() throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
final TelephonySubscriptionTrackerCallback cb = getTelephonySubscriptionTrackerCallback();
final Vcn oldInstance = startAndGetVcnInstance(TEST_UUID_2);
// Simulate SIM unloaded
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.emptySet());
+ triggerSubscriptionTrackerCbAndGetSnapshot(null, Collections.emptySet());
// Config cleared, SIM reloaded & config re-added right before teardown delay, staring new
// vcnInstance.
@@ -434,6 +577,7 @@ public class VcnManagementServiceTest {
VcnManagementService.CARRIER_PRIVILEGES_LOST_TEARDOWN_DELAY_MS / 2);
mTestLooper.dispatchAll();
mVcnMgmtSvc.clearVcnConfig(TEST_UUID_2, TEST_PACKAGE_NAME);
+ triggerSubscriptionTrackerCbAndGetSnapshot(TEST_UUID_2, Collections.singleton(TEST_UUID_2));
final Vcn newInstance = startAndGetVcnInstance(TEST_UUID_2);
// Verify that new instance was different, and the old one was torn down
@@ -538,6 +682,31 @@ public class VcnManagementServiceTest {
}
@Test
+ public void testSetVcnConfigNonActiveSimDoesNotStartVcn() throws Exception {
+ // Use a different UUID to simulate a new VCN config.
+ mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
+ assertEquals(TEST_VCN_CONFIG, mVcnMgmtSvc.getConfigs().get(TEST_UUID_2));
+ verify(mConfigReadWriteHelper).writeToDisk(any(PersistableBundle.class));
+
+ verify(mMockDeps, never()).newVcn(any(), any(), any(), any(), any());
+ }
+
+ @Test
+ public void testSetVcnConfigActiveSimTearsDownExistingVcnsImmediately() throws Exception {
+ final Vcn vcn = startAndGetVcnInstance(TEST_UUID_1);
+
+ // Use a different UUID to simulate a new VCN config.
+ setupActiveSubscription(TEST_UUID_2);
+ mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
+
+ verify(mMockDeps, times(2)).newVcn(any(), any(), any(), any(), any());
+ verify(vcn).teardownAsynchronously();
+ assertEquals(1, mVcnMgmtSvc.getAllVcns().size());
+ assertFalse(mVcnMgmtSvc.getAllVcns().containsKey(TEST_UUID_1));
+ assertTrue(mVcnMgmtSvc.getAllVcns().containsKey(TEST_UUID_2));
+ }
+
+ @Test
public void testSetVcnConfigTestModeRequiresPermission() throws Exception {
doThrow(new SecurityException("Requires MANAGE_TEST_NETWORKS"))
.when(mMockContext)
@@ -561,7 +730,7 @@ public class VcnManagementServiceTest {
@Test
public void testSetVcnConfigNotifiesStatusCallback() throws Exception {
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(TEST_UUID_2));
+ triggerSubscriptionTrackerCbAndGetSnapshot(TEST_UUID_2, Collections.singleton(TEST_UUID_2));
mVcnMgmtSvc.registerVcnStatusCallback(TEST_UUID_2, mMockStatusCallback, TEST_PACKAGE_NAME);
verify(mMockStatusCallback).onVcnStatusChanged(VcnManager.VCN_STATUS_CODE_NOT_CONFIGURED);
@@ -635,7 +804,9 @@ public class VcnManagementServiceTest {
}
@Test
- public void testSetVcnConfigClearVcnConfigStartsUpdatesAndTeardsDownVcns() throws Exception {
+ public void testSetVcnConfigClearVcnConfigStartsUpdatesAndTearsDownVcns() throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
// Use a different UUID to simulate a new VCN config.
mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
final Map<ParcelUuid, Vcn> vcnInstances = mVcnMgmtSvc.getAllVcns();
@@ -646,12 +817,7 @@ public class VcnManagementServiceTest {
// Verify Vcn is started
verify(mMockDeps)
- .newVcn(
- eq(mVcnContext),
- eq(TEST_UUID_2),
- eq(TEST_VCN_CONFIG),
- eq(TelephonySubscriptionSnapshot.EMPTY_SNAPSHOT),
- any());
+ .newVcn(eq(mVcnContext), eq(TEST_UUID_2), eq(TEST_VCN_CONFIG), any(), any());
// Verify Vcn is updated if it was previously started
mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
@@ -693,7 +859,7 @@ public class VcnManagementServiceTest {
// Assert that if both UUID 1 and 2 are provisioned, the caller only gets ones that they are
// privileged for.
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(TEST_UUID_1));
+ triggerSubscriptionTrackerCbAndGetSnapshot(TEST_UUID_1, Collections.singleton(TEST_UUID_1));
final List<ParcelUuid> subGrps =
mVcnMgmtSvc.getConfiguredSubscriptionGroups(TEST_PACKAGE_NAME);
assertEquals(Collections.singletonList(TEST_UUID_1), subGrps);
@@ -760,6 +926,7 @@ public class VcnManagementServiceTest {
int subId, ParcelUuid subGrp, boolean isVcnActive, boolean hasCarrierPrivileges) {
mVcnMgmtSvc.systemReady();
triggerSubscriptionTrackerCbAndGetSnapshot(
+ subGrp,
Collections.singleton(subGrp),
Collections.singletonMap(subId, subGrp),
hasCarrierPrivileges);
@@ -927,18 +1094,23 @@ public class VcnManagementServiceTest {
@Test
public void testSubscriptionSnapshotUpdateNotifiesVcn() {
+ setupActiveSubscription(TEST_UUID_2);
+
mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
final Map<ParcelUuid, Vcn> vcnInstances = mVcnMgmtSvc.getAllVcns();
final Vcn vcnInstance = vcnInstances.get(TEST_UUID_2);
TelephonySubscriptionSnapshot snapshot =
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(TEST_UUID_2));
+ triggerSubscriptionTrackerCbAndGetSnapshot(
+ TEST_UUID_2, Collections.singleton(TEST_UUID_2));
verify(vcnInstance).updateSubscriptionSnapshot(eq(snapshot));
}
@Test
public void testAddNewVcnUpdatesPolicyListener() throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
@@ -948,6 +1120,8 @@ public class VcnManagementServiceTest {
@Test
public void testRemoveVcnUpdatesPolicyListener() throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
mVcnMgmtSvc.setVcnConfig(TEST_UUID_2, TEST_VCN_CONFIG, TEST_PACKAGE_NAME);
mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
@@ -958,10 +1132,13 @@ public class VcnManagementServiceTest {
@Test
public void testVcnSubIdChangeUpdatesPolicyListener() throws Exception {
+ setupActiveSubscription(TEST_UUID_2);
+
startAndGetVcnInstance(TEST_UUID_2);
mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
triggerSubscriptionTrackerCbAndGetSnapshot(
+ TEST_UUID_2,
Collections.singleton(TEST_UUID_2),
Collections.singletonMap(TEST_SUBSCRIPTION_ID, TEST_UUID_2));
@@ -988,7 +1165,8 @@ public class VcnManagementServiceTest {
private void verifyVcnSafeModeChangesNotifiesPolicyListeners(boolean enterSafeMode)
throws Exception {
TelephonySubscriptionSnapshot snapshot =
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(TEST_UUID_1));
+ triggerSubscriptionTrackerCbAndGetSnapshot(
+ TEST_UUID_1, Collections.singleton(TEST_UUID_1));
mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
@@ -1014,7 +1192,8 @@ public class VcnManagementServiceTest {
boolean hasPermissionsforSubGroup)
throws Exception {
TelephonySubscriptionSnapshot snapshot =
- triggerSubscriptionTrackerCbAndGetSnapshot(Collections.singleton(subGroup));
+ triggerSubscriptionTrackerCbAndGetSnapshot(
+ subGroup, Collections.singleton(subGroup));
setupSubscriptionAndStartVcn(
TEST_SUBSCRIPTION_ID, subGroup, true /* isActive */, hasPermissionsforSubGroup);
@@ -1089,6 +1268,7 @@ public class VcnManagementServiceTest {
// timeout so the VCN goes inactive.
final TelephonySubscriptionSnapshot snapshot =
triggerSubscriptionTrackerCbAndGetSnapshot(
+ TEST_UUID_1,
Collections.singleton(TEST_UUID_1),
Collections.singletonMap(TEST_SUBSCRIPTION_ID, TEST_UUID_1),
false /* hasCarrierPrivileges */);
diff --git a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java
index ca7463884d3a..1f0df62fe72c 100644
--- a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java
+++ b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java
@@ -21,6 +21,7 @@ import static android.telephony.CarrierConfigManager.EXTRA_SLOT_INDEX;
import static android.telephony.CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX;
import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+import static android.telephony.TelephonyCallback.ActiveDataSubscriptionIdListener;
import static com.android.server.vcn.TelephonySubscriptionTracker.TelephonySubscriptionSnapshot;
import static com.android.server.vcn.TelephonySubscriptionTracker.TelephonySubscriptionTrackerCallback;
@@ -54,6 +55,7 @@ import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
+import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.util.ArraySet;
@@ -178,6 +180,14 @@ public class TelephonySubscriptionTrackerTest {
return captor.getValue();
}
+ private ActiveDataSubscriptionIdListener getActiveDataSubscriptionIdListener() {
+ final ArgumentCaptor<TelephonyCallback> captor =
+ ArgumentCaptor.forClass(TelephonyCallback.class);
+ verify(mTelephonyManager).registerTelephonyCallback(any(), captor.capture());
+
+ return (ActiveDataSubscriptionIdListener) captor.getValue();
+ }
+
private Intent buildTestBroadcastIntent(boolean hasValidSubscription) {
Intent intent = new Intent(ACTION_CARRIER_CONFIG_CHANGED);
intent.putExtra(EXTRA_SLOT_INDEX, TEST_SIM_SLOT_INDEX);
@@ -196,7 +206,14 @@ public class TelephonySubscriptionTrackerTest {
private TelephonySubscriptionSnapshot buildExpectedSnapshot(
Map<Integer, SubscriptionInfo> subIdToInfoMap,
Map<ParcelUuid, Set<String>> privilegedPackages) {
- return new TelephonySubscriptionSnapshot(subIdToInfoMap, privilegedPackages);
+ return new TelephonySubscriptionSnapshot(0, subIdToInfoMap, privilegedPackages);
+ }
+
+ private TelephonySubscriptionSnapshot buildExpectedSnapshot(
+ int activeSubId,
+ Map<Integer, SubscriptionInfo> subIdToInfoMap,
+ Map<ParcelUuid, Set<String>> privilegedPackages) {
+ return new TelephonySubscriptionSnapshot(activeSubId, subIdToInfoMap, privilegedPackages);
}
private void verifyNoActiveSubscriptions() {
@@ -250,6 +267,26 @@ public class TelephonySubscriptionTrackerTest {
}
@Test
+ public void testOnSubscriptionsChangedFired_onActiveSubIdsChanged() throws Exception {
+ setupReadySubIds();
+ setPrivilegedPackagesForMock(Collections.emptyList());
+
+ doReturn(TEST_SUBSCRIPTION_ID_2).when(mDeps).getActiveDataSubscriptionId();
+ final ActiveDataSubscriptionIdListener listener = getActiveDataSubscriptionIdListener();
+ listener.onActiveDataSubscriptionIdChanged(TEST_SUBSCRIPTION_ID_2);
+ mTestLooper.dispatchAll();
+
+ ArgumentCaptor<TelephonySubscriptionSnapshot> snapshotCaptor =
+ ArgumentCaptor.forClass(TelephonySubscriptionSnapshot.class);
+ verify(mCallback).onNewSnapshot(snapshotCaptor.capture());
+
+ TelephonySubscriptionSnapshot snapshot = snapshotCaptor.getValue();
+ assertNotNull(snapshot);
+ assertEquals(TEST_SUBSCRIPTION_ID_2, snapshot.getActiveDataSubscriptionId());
+ assertEquals(TEST_PARCEL_UUID, snapshot.getActiveDataSubscriptionGroup());
+ }
+
+ @Test
public void testOnSubscriptionsChangedFired_WithReadySubidsNoPrivilegedPackages()
throws Exception {
setupReadySubIds();
@@ -371,7 +408,8 @@ public class TelephonySubscriptionTrackerTest {
@Test
public void testTelephonySubscriptionSnapshotGetGroupForSubId() throws Exception {
final TelephonySubscriptionSnapshot snapshot =
- new TelephonySubscriptionSnapshot(TEST_SUBID_TO_INFO_MAP, emptyMap());
+ new TelephonySubscriptionSnapshot(
+ TEST_SUBSCRIPTION_ID_1, TEST_SUBID_TO_INFO_MAP, emptyMap());
assertEquals(TEST_PARCEL_UUID, snapshot.getGroupForSubId(TEST_SUBSCRIPTION_ID_1));
assertEquals(TEST_PARCEL_UUID, snapshot.getGroupForSubId(TEST_SUBSCRIPTION_ID_2));
@@ -380,7 +418,8 @@ public class TelephonySubscriptionTrackerTest {
@Test
public void testTelephonySubscriptionSnapshotGetAllSubIdsInGroup() throws Exception {
final TelephonySubscriptionSnapshot snapshot =
- new TelephonySubscriptionSnapshot(TEST_SUBID_TO_INFO_MAP, emptyMap());
+ new TelephonySubscriptionSnapshot(
+ TEST_SUBSCRIPTION_ID_1, TEST_SUBID_TO_INFO_MAP, emptyMap());
assertEquals(
new ArraySet<>(Arrays.asList(TEST_SUBSCRIPTION_ID_1, TEST_SUBSCRIPTION_ID_2)),
diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java
index 6bfbfb1c8496..0f84f6ebe522 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java
@@ -578,6 +578,10 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection
mGatewayConnection.teardownAsynchronously();
mTestLooper.dispatchAll();
+ // Verify that sending a non-quitting disconnect request does not unset the isQuitting flag
+ mGatewayConnection.sendDisconnectRequestedAndAcquireWakelock("TEST", false);
+ mTestLooper.dispatchAll();
+
assertEquals(mGatewayConnection.mDisconnectingState, mGatewayConnection.getCurrentState());
assertTrue(mGatewayConnection.isQuitting());
}
diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java
index acc8bf98e95b..d1f3a210d870 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java
@@ -127,6 +127,10 @@ public class VcnGatewayConnectionConnectingStateTest extends VcnGatewayConnectio
mGatewayConnection.teardownAsynchronously();
mTestLooper.dispatchAll();
+ // Verify that sending a non-quitting disconnect request does not unset the isQuitting flag
+ mGatewayConnection.sendDisconnectRequestedAndAcquireWakelock("TEST", false);
+ mTestLooper.dispatchAll();
+
assertEquals(mGatewayConnection.mDisconnectingState, mGatewayConnection.getCurrentState());
assertTrue(mGatewayConnection.isQuitting());
}
diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectedStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectedStateTest.java
index ac0edaa3b579..2056eea42ce6 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectedStateTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectedStateTest.java
@@ -68,7 +68,7 @@ public class VcnGatewayConnectionDisconnectedStateTest extends VcnGatewayConnect
true /* isMobileDataEnabled */,
mDeps);
- vgc.setIsQuitting(true);
+ vgc.setQuitting();
vgc.transitionTo(vgc.mDisconnectedState);
mTestLooper.dispatchAll();
@@ -102,6 +102,10 @@ public class VcnGatewayConnectionDisconnectedStateTest extends VcnGatewayConnect
mGatewayConnection.teardownAsynchronously();
mTestLooper.dispatchAll();
+ // Verify that sending a non-quitting disconnect request does not unset the isQuitting flag
+ mGatewayConnection.sendDisconnectRequestedAndAcquireWakelock("TEST", false);
+ mTestLooper.dispatchAll();
+
assertNull(mGatewayConnection.getCurrentState());
verify(mIpSecSvc).deleteTunnelInterface(eq(TEST_IPSEC_TUNNEL_RESOURCE_ID), any());
verifySafeModeTimeoutAlarmAndGetCallback(true /* expectCanceled */);
diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectingStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectingStateTest.java
index 9da8b451c9fc..78aefad9f8ff 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectingStateTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionDisconnectingStateTest.java
@@ -79,6 +79,10 @@ public class VcnGatewayConnectionDisconnectingStateTest extends VcnGatewayConnec
mGatewayConnection.teardownAsynchronously();
mTestLooper.dispatchAll();
+ // Verify that sending a non-quitting disconnect request does not unset the isQuitting flag
+ mGatewayConnection.sendDisconnectRequestedAndAcquireWakelock("TEST", false);
+ mTestLooper.dispatchAll();
+
// Should do nothing; already tearing down.
assertEquals(mGatewayConnection.mDisconnectingState, mGatewayConnection.getCurrentState());
verifyTeardownTimeoutAlarmAndGetCallback(false /* expectCanceled */);
diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java
index 69407657b3c4..1c859790a2fe 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java
@@ -90,6 +90,10 @@ public class VcnGatewayConnectionRetryTimeoutStateTest extends VcnGatewayConnect
.onSelectedUnderlyingNetworkChanged(null);
mTestLooper.dispatchAll();
+ // Verify that sending a non-quitting disconnect request does not unset the isQuitting flag
+ mGatewayConnection.sendDisconnectRequestedAndAcquireWakelock("TEST", false);
+ mTestLooper.dispatchAll();
+
assertEquals(mGatewayConnection.mDisconnectedState, mGatewayConnection.getCurrentState());
verifyRetryTimeoutAlarmAndGetCallback(mFirstRetryInterval, true /* expectCanceled */);
diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTestBase.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTestBase.java
index b97023a95d72..a696b3ae28f7 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTestBase.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTestBase.java
@@ -127,7 +127,9 @@ public class VcnGatewayConnectionTestBase {
protected static final TelephonySubscriptionSnapshot TEST_SUBSCRIPTION_SNAPSHOT =
new TelephonySubscriptionSnapshot(
- Collections.singletonMap(TEST_SUB_ID, TEST_SUB_INFO), Collections.EMPTY_MAP);
+ TEST_SUB_ID,
+ Collections.singletonMap(TEST_SUB_ID, TEST_SUB_INFO),
+ Collections.EMPTY_MAP);
@NonNull protected final Context mContext;
@NonNull protected final TestLooper mTestLooper;
diff --git a/tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java b/tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java
index 72db55b3f4c5..e9026e22b6b2 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnNetworkProviderTest.java
@@ -87,8 +87,8 @@ public class VcnNetworkProviderTest {
eq(mVcnNetworkProvider),
argThat(
score ->
- score.getLegacyInt()
- == Vcn.getNetworkScore().getLegacyInt()),
+ score.getLegacyInt() == Vcn.getNetworkScore().getLegacyInt()
+ && score.isTransportPrimary()),
any(),
any(),
cbCaptor.capture());
diff --git a/tools/aapt2/SdkConstants.cpp b/tools/aapt2/SdkConstants.cpp
index 7546e419ab84..ca1c1c203217 100644
--- a/tools/aapt2/SdkConstants.cpp
+++ b/tools/aapt2/SdkConstants.cpp
@@ -26,9 +26,8 @@ using android::StringPiece;
namespace aapt {
static ApiVersion sDevelopmentSdkLevel = 10000;
-static const auto sDevelopmentSdkCodeNames = std::unordered_set<StringPiece>({
- "Q", "R", "S", "T"
-});
+static const auto sDevelopmentSdkCodeNames =
+ std::unordered_set<StringPiece>({"Q", "R", "S", "Tiramisu"});
static const std::vector<std::pair<uint16_t, ApiVersion>> sAttrIdMap = {
{0x021c, 1},