diff options
26 files changed, 340 insertions, 546 deletions
diff --git a/Android.bp b/Android.bp index 003f0adccce0..8548920a57e5 100644 --- a/Android.bp +++ b/Android.bp @@ -103,8 +103,8 @@ filegroup { ":android.hardware.security.secureclock-V1-java-source", ":android.security.apc-java-source", ":android.security.authorization-java-source", + ":android.security.legacykeystore-java-source", ":android.security.maintenance-java-source", - ":android.security.vpnprofilestore-java-source", ":android.system.keystore2-V1-java-source", ":credstore_aidl", ":dumpstate_aidl", diff --git a/boot/hiddenapi/hiddenapi-max-target-o.txt b/boot/hiddenapi/hiddenapi-max-target-o.txt index a537ea72b8ab..978660ce8c31 100644 --- a/boot/hiddenapi/hiddenapi-max-target-o.txt +++ b/boot/hiddenapi/hiddenapi-max-target-o.txt @@ -8961,12 +8961,6 @@ Landroid/app/slice/SliceQuery;->TAG:Ljava/lang/String; Landroid/app/slice/SliceSpec;-><init>(Landroid/os/Parcel;)V Landroid/app/slice/SliceSpec;->mRevision:I Landroid/app/slice/SliceSpec;->mType:Ljava/lang/String; -Landroid/app/StatsManager;-><init>(Landroid/content/Context;)V -Landroid/app/StatsManager;->DEBUG:Z -Landroid/app/StatsManager;->getIStatsManagerLocked()Landroid/os/IStatsManager; -Landroid/app/StatsManager;->mContext:Landroid/content/Context; -Landroid/app/StatsManager;->mService:Landroid/os/IStatsManager; -Landroid/app/StatsManager;->TAG:Ljava/lang/String; Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER:I Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP:I Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_WIGGLE:I @@ -43626,45 +43620,6 @@ Landroid/os/IServiceManager;->listServices(I)[Ljava/lang/String; Landroid/os/IServiceManager;->LIST_SERVICES_TRANSACTION:I Landroid/os/IServiceManager;->setPermissionController(Landroid/os/IPermissionController;)V Landroid/os/IServiceManager;->SET_PERMISSION_CONTROLLER_TRANSACTION:I -Landroid/os/IStatsCompanionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/os/IStatsCompanionService$Stub$Proxy;->cancelAlarmForSubscriberTriggering()V -Landroid/os/IStatsCompanionService$Stub$Proxy;->cancelAnomalyAlarm()V -Landroid/os/IStatsCompanionService$Stub$Proxy;->cancelPullingAlarm()V -Landroid/os/IStatsCompanionService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String; -Landroid/os/IStatsCompanionService$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/os/IStatsCompanionService$Stub$Proxy;->pullData(I)[Landroid/os/StatsLogEventWrapper; -Landroid/os/IStatsCompanionService$Stub$Proxy;->sendDataBroadcast(Landroid/os/IBinder;J)V -Landroid/os/IStatsCompanionService$Stub$Proxy;->sendSubscriberBroadcast(Landroid/os/IBinder;JJJJ[Ljava/lang/String;Landroid/os/StatsDimensionsValue;)V -Landroid/os/IStatsCompanionService$Stub$Proxy;->setAlarmForSubscriberTriggering(J)V -Landroid/os/IStatsCompanionService$Stub$Proxy;->setAnomalyAlarm(J)V -Landroid/os/IStatsCompanionService$Stub$Proxy;->setPullingAlarm(J)V -Landroid/os/IStatsCompanionService$Stub$Proxy;->statsdReady()V -Landroid/os/IStatsCompanionService$Stub$Proxy;->triggerUidSnapshot()V -Landroid/os/IStatsCompanionService$Stub;-><init>()V -Landroid/os/IStatsCompanionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStatsCompanionService; -Landroid/os/IStatsCompanionService$Stub;->DESCRIPTOR:Ljava/lang/String; -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_cancelAlarmForSubscriberTriggering:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_cancelAnomalyAlarm:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_cancelPullingAlarm:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_pullData:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_sendDataBroadcast:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_sendSubscriberBroadcast:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_setAlarmForSubscriberTriggering:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_setAnomalyAlarm:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_setPullingAlarm:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_statsdReady:I -Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_triggerUidSnapshot:I -Landroid/os/IStatsCompanionService;->cancelAlarmForSubscriberTriggering()V -Landroid/os/IStatsCompanionService;->cancelAnomalyAlarm()V -Landroid/os/IStatsCompanionService;->cancelPullingAlarm()V -Landroid/os/IStatsCompanionService;->pullData(I)[Landroid/os/StatsLogEventWrapper; -Landroid/os/IStatsCompanionService;->sendDataBroadcast(Landroid/os/IBinder;J)V -Landroid/os/IStatsCompanionService;->sendSubscriberBroadcast(Landroid/os/IBinder;JJJJ[Ljava/lang/String;Landroid/os/StatsDimensionsValue;)V -Landroid/os/IStatsCompanionService;->setAlarmForSubscriberTriggering(J)V -Landroid/os/IStatsCompanionService;->setAnomalyAlarm(J)V -Landroid/os/IStatsCompanionService;->setPullingAlarm(J)V -Landroid/os/IStatsCompanionService;->statsdReady()V -Landroid/os/IStatsCompanionService;->triggerUidSnapshot()V Landroid/os/IStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/os/IStatsManager$Stub$Proxy;->addConfiguration(J[BLjava/lang/String;)V Landroid/os/IStatsManager$Stub$Proxy;->getData(JLjava/lang/String;)[B @@ -45217,13 +45172,6 @@ Landroid/os/ShellCommand;->TAG:Ljava/lang/String; Landroid/os/SimpleClock;-><init>(Ljava/time/ZoneId;)V Landroid/os/SimpleClock;->zone:Ljava/time/ZoneId; Landroid/os/StatFs;->doStat(Ljava/lang/String;)Landroid/system/StructStatVfs; -Landroid/os/StatsDimensionsValue;-><init>(Landroid/os/Parcel;)V -Landroid/os/StatsDimensionsValue;->mField:I -Landroid/os/StatsDimensionsValue;->mValue:Ljava/lang/Object; -Landroid/os/StatsDimensionsValue;->mValueType:I -Landroid/os/StatsDimensionsValue;->readValueFromParcel(ILandroid/os/Parcel;)Ljava/lang/Object; -Landroid/os/StatsDimensionsValue;->TAG:Ljava/lang/String; -Landroid/os/StatsDimensionsValue;->writeValueToParcel(ILjava/lang/Object;Landroid/os/Parcel;I)Z Landroid/os/StatsLogEventWrapper;-><init>(JII)V Landroid/os/StatsLogEventWrapper;-><init>(Landroid/os/Parcel;)V Landroid/os/StatsLogEventWrapper;->CREATOR:Landroid/os/Parcelable$Creator; @@ -65005,412 +64953,6 @@ Landroid/util/StateSet;->VIEW_STATE_PRESSED:I Landroid/util/StateSet;->VIEW_STATE_SELECTED:I Landroid/util/StateSet;->VIEW_STATE_SETS:[[I Landroid/util/StateSet;->VIEW_STATE_WINDOW_FOCUSED:I -Landroid/util/StatsLog;-><init>()V -Landroid/util/StatsLog;->DEBUG:Z -Landroid/util/StatsLog;->getIStatsManagerLocked()Landroid/os/IStatsManager; -Landroid/util/StatsLog;->sService:Landroid/os/IStatsManager; -Landroid/util/StatsLog;->TAG:Ljava/lang/String; -Landroid/util/StatsLogInternal;-><init>()V -Landroid/util/StatsLogInternal;->ACTIVITY_FOREGROUND_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__BACKGROUND:I -Landroid/util/StatsLogInternal;->ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__FOREGROUND:I -Landroid/util/StatsLogInternal;->ANOMALY_DETECTED:I -Landroid/util/StatsLogInternal;->ANROCCURRED__FOREGROUND_STATE__BACKGROUND:I -Landroid/util/StatsLogInternal;->ANROCCURRED__FOREGROUND_STATE__FOREGROUND:I -Landroid/util/StatsLogInternal;->ANROCCURRED__FOREGROUND_STATE__UNKNOWN:I -Landroid/util/StatsLogInternal;->ANROCCURRED__IS_INSTANT_APP__FALSE:I -Landroid/util/StatsLogInternal;->ANROCCURRED__IS_INSTANT_APP__TRUE:I -Landroid/util/StatsLogInternal;->ANROCCURRED__IS_INSTANT_APP__UNAVAILABLE:I -Landroid/util/StatsLogInternal;->ANR_OCCURRED:I -Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED:I -Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED__STATE__START:I -Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED__STATE__STOP:I -Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED__STATE__UNKNOWN:I -Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED__STATE__UNSPECIFIED:I -Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED:I -Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__FOREGROUND_STATE__BACKGROUND:I -Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__FOREGROUND_STATE__FOREGROUND:I -Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__FOREGROUND_STATE__UNKNOWN:I -Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__IS_INSTANT_APP__FALSE:I -Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__IS_INSTANT_APP__TRUE:I -Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__IS_INSTANT_APP__UNAVAILABLE:I -Landroid/util/StatsLogInternal;->APP_DIED:I -Landroid/util/StatsLogInternal;->APP_START_CANCELED:I -Landroid/util/StatsLogInternal;->APP_START_CANCELED__TYPE__COLD:I -Landroid/util/StatsLogInternal;->APP_START_CANCELED__TYPE__HOT:I -Landroid/util/StatsLogInternal;->APP_START_CANCELED__TYPE__UNKNOWN:I -Landroid/util/StatsLogInternal;->APP_START_CANCELED__TYPE__WARM:I -Landroid/util/StatsLogInternal;->APP_START_FULLY_DRAWN:I -Landroid/util/StatsLogInternal;->APP_START_FULLY_DRAWN__TYPE__UNKNOWN:I -Landroid/util/StatsLogInternal;->APP_START_FULLY_DRAWN__TYPE__WITHOUT_BUNDLE:I -Landroid/util/StatsLogInternal;->APP_START_FULLY_DRAWN__TYPE__WITH_BUNDLE:I -Landroid/util/StatsLogInternal;->APP_START_MEMORY_STATE_CAPTURED:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_REASON_UNKNOWN:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_RECENTS_ANIM:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_SNAPSHOT:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_SPLASH_SCREEN:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_TIMEOUT:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_WINDOWS_DRAWN:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__TYPE__COLD:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__TYPE__HOT:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__TYPE__UNKNOWN:I -Landroid/util/StatsLogInternal;->APP_START_OCCURRED__TYPE__WARM:I -Landroid/util/StatsLogInternal;->AUDIO_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->AUDIO_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->AUDIO_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->AUDIO_STATE_CHANGED__STATE__RESET:I -Landroid/util/StatsLogInternal;->BATTERY_LEVEL_CHANGED:I -Landroid/util/StatsLogInternal;->BATTERY_SAVER_MODE_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->BATTERY_SAVER_MODE_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->BATTERY_SAVER_MODE_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->BLE_SCAN_RESULT_RECEIVED:I -Landroid/util/StatsLogInternal;->BLE_SCAN_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->BLE_SCAN_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->BLE_SCAN_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->BLE_SCAN_STATE_CHANGED__STATE__RESET:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ACTIVITY_INFO:I -Landroid/util/StatsLogInternal;->BLUETOOTH_BYTES_TRANSFER:I -Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED__STATE__CONNECTION_STATE_CONNECTED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED__STATE__CONNECTION_STATE_CONNECTING:I -Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED__STATE__CONNECTION_STATE_DISCONNECTED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED__STATE__CONNECTION_STATE_DISCONNECTING:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_AIRPLANE_MODE:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_APPLICATION_REQUEST:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_CRASH:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_DISALLOWED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_RESTARTED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_RESTORE_USER_SETTING:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_START_ERROR:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_SYSTEM_BOOT:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_UNSPECIFIED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_USER_SWITCH:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__STATE__DISABLED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__STATE__ENABLED:I -Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__STATE__UNKNOWN:I -Landroid/util/StatsLogInternal;->BOOT_SEQUENCE_REPORTED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__ABORTED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__ACTIVE:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__CONNECTING:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__DIALING:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__DISCONNECTED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__DISCONNECTING:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__NEW:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__ON_HOLD:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__PULLING:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__RINGING:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__SELECT_PHONE_ACCOUNT:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__ANSWERED_ELSEWHERE:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__BUSY:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__CALL_PULLED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__CANCELED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__CONNECTION_MANAGER_NOT_SUPPORTED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__ERROR:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__LOCAL:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__MISSED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__OTHER:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__REJECTED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__REMOTE:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__RESTRICTED:I -Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__UNKNOWN:I -Landroid/util/StatsLogInternal;->CAMERA_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->CAMERA_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->CAMERA_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->CAMERA_STATE_CHANGED__STATE__RESET:I -Landroid/util/StatsLogInternal;->CHARGE_CYCLES_REPORTED:I -Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_CHARGING:I -Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_DISCHARGING:I -Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_FULL:I -Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_INVALID:I -Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_NOT_CHARGING:I -Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_UNKNOWN:I -Landroid/util/StatsLogInternal;->CPU_ACTIVE_TIME:I -Landroid/util/StatsLogInternal;->CPU_CLUSTER_TIME:I -Landroid/util/StatsLogInternal;->CPU_TIME_PER_FREQ:I -Landroid/util/StatsLogInternal;->CPU_TIME_PER_UID:I -Landroid/util/StatsLogInternal;->CPU_TIME_PER_UID_FREQ:I -Landroid/util/StatsLogInternal;->DAVEY_OCCURRED:I -Landroid/util/StatsLogInternal;->DEVICE_IDLE_MODE_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->DEVICE_IDLE_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_DEEP:I -Landroid/util/StatsLogInternal;->DEVICE_IDLE_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_LIGHT:I -Landroid/util/StatsLogInternal;->DEVICE_IDLE_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_OFF:I -Landroid/util/StatsLogInternal;->DEVICE_IDLING_MODE_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->DEVICE_IDLING_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_DEEP:I -Landroid/util/StatsLogInternal;->DEVICE_IDLING_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_LIGHT:I -Landroid/util/StatsLogInternal;->DEVICE_IDLING_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_OFF:I -Landroid/util/StatsLogInternal;->DISK_SPACE:I -Landroid/util/StatsLogInternal;->FLASHLIGHT_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->FLASHLIGHT_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->FLASHLIGHT_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->FLASHLIGHT_STATE_CHANGED__STATE__RESET:I -Landroid/util/StatsLogInternal;->FOREGROUND_SERVICE_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER:I -Landroid/util/StatsLogInternal;->FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT:I -Landroid/util/StatsLogInternal;->FULL_BATTERY_CAPACITY:I -Landroid/util/StatsLogInternal;->GPS_SCAN_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->GPS_SCAN_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->GPS_SCAN_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->HARDWARE_FAILED:I -Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_CODEC:I -Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_FINGERPRINT:I -Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_MICROPHONE:I -Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_SPEAKER:I -Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_UNKNOWN:I -Landroid/util/StatsLogInternal;->ISOLATED_UID_CHANGED:I -Landroid/util/StatsLogInternal;->ISOLATED_UID_CHANGED__EVENT__CREATED:I -Landroid/util/StatsLogInternal;->ISOLATED_UID_CHANGED__EVENT__REMOVED:I -Landroid/util/StatsLogInternal;->KERNEL_WAKELOCK:I -Landroid/util/StatsLogInternal;->KERNEL_WAKEUP_REPORTED:I -Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_PASSWORD_ENTERED:I -Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_PASSWORD_ENTERED__RESULT__FAILURE:I -Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_PASSWORD_ENTERED__RESULT__SUCCESS:I -Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_PASSWORD_ENTERED__RESULT__UNKNOWN:I -Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_STATE_CHANGED__STATE__HIDDEN:I -Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_STATE_CHANGED__STATE__SHOWN:I -Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_STATE_CHANGED__STATE__UNKNOWN:I -Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED__STATE__HIDDEN:I -Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED__STATE__OCCLUDED:I -Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED__STATE__SHOWN:I -Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED__STATE__UNKNOWN:I -Landroid/util/StatsLogInternal;->LMK_KILL_OCCURRED:I -Landroid/util/StatsLogInternal;->LMK_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->LMK_STATE_CHANGED__STATE__START:I -Landroid/util/StatsLogInternal;->LMK_STATE_CHANGED__STATE__STOP:I -Landroid/util/StatsLogInternal;->LMK_STATE_CHANGED__STATE__UNKNOWN:I -Landroid/util/StatsLogInternal;->LONG_PARTIAL_WAKELOCK_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->LOW_MEM_REPORTED:I -Landroid/util/StatsLogInternal;->MEDIA_CODEC_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->MEDIA_CODEC_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->MEDIA_CODEC_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->MEDIA_CODEC_STATE_CHANGED__STATE__RESET:I -Landroid/util/StatsLogInternal;->MOBILE_BYTES_TRANSFER:I -Landroid/util/StatsLogInternal;->MOBILE_BYTES_TRANSFER_BY_FG_BG:I -Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__ACTIVATING:I -Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__ACTIVE:I -Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__DISCONNECTING:I -Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__DISCONNECTION_ERROR_CREATING_CONNECTION:I -Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__INACTIVE:I -Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__UNKNOWN:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_HIGH:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_LOW:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_MEDIUM:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_UNKNOWN:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_1XRTT:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_CDMA:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EDGE:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EHRPD:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EVDO_0:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EVDO_A:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EVDO_B:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_GPRS:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_GSM:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_HSDPA:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_HSPA:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_HSPAP:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_HSUPA:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_IDEN:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_IWLAN:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_LTE:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_LTE_CA:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_TD_SCDMA:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_UMTS:I -Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_UNKNOWN:I -Landroid/util/StatsLogInternal;->MODEM_ACTIVITY_INFO:I -Landroid/util/StatsLogInternal;->OVERLAY_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->OVERLAY_STATE_CHANGED__STATE__ENTERED:I -Landroid/util/StatsLogInternal;->OVERLAY_STATE_CHANGED__STATE__EXITED:I -Landroid/util/StatsLogInternal;->PACKET_WAKEUP_OCCURRED:I -Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED:I -Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_GOOD:I -Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_GREAT:I -Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_MODERATE:I -Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_NONE_OR_UNKNOWN:I -Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_POOR:I -Landroid/util/StatsLogInternal;->PHYSICAL_DROP_DETECTED:I -Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED__STATE__DISMISSED:I -Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED__STATE__ENTERED:I -Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED__STATE__EXPANDED_TO_FULL_SCREEN:I -Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED__STATE__MINIMIZED:I -Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED__STATE__BATTERY_PLUGGED_AC:I -Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED__STATE__BATTERY_PLUGGED_NONE:I -Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED__STATE__BATTERY_PLUGGED_USB:I -Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED__STATE__BATTERY_PLUGGED_WIRELESS:I -Landroid/util/StatsLogInternal;->PROCESS_LIFE_CYCLE_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__CRASHED:I -Landroid/util/StatsLogInternal;->PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__FINISHED:I -Landroid/util/StatsLogInternal;->PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__STARTED:I -Landroid/util/StatsLogInternal;->PROCESS_MEMORY_STATE:I -Landroid/util/StatsLogInternal;->REMAINING_BATTERY_CAPACITY:I -Landroid/util/StatsLogInternal;->RESOURCE_CONFIGURATION_CHANGED:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_CANCELLED:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_CONSTRAINTS_NOT_SATISFIED:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_DEVICE_IDLE:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_PREEMPT:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_TIMEOUT:I -Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_UNKNOWN:I -Landroid/util/StatsLogInternal;->SCREEN_BRIGHTNESS_CHANGED:I -Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_DOZE:I -Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_DOZE_SUSPEND:I -Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_OFF:I -Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_ON:I -Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_ON_SUSPEND:I -Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_UNKNOWN:I -Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_VR:I -Landroid/util/StatsLogInternal;->SENSOR_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->SENSOR_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->SENSOR_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->SETTING_CHANGED:I -Landroid/util/StatsLogInternal;->SETTING_CHANGED__REASON__DELETED:I -Landroid/util/StatsLogInternal;->SETTING_CHANGED__REASON__UPDATED:I -Landroid/util/StatsLogInternal;->SHUTDOWN_SEQUENCE_REPORTED:I -Landroid/util/StatsLogInternal;->SPEAKER_IMPEDANCE_REPORTED:I -Landroid/util/StatsLogInternal;->SUBSYSTEM_SLEEP_STATE:I -Landroid/util/StatsLogInternal;->SYNC_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->SYNC_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->SYNC_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->SYSTEM_ELAPSED_REALTIME:I -Landroid/util/StatsLogInternal;->SYSTEM_UPTIME:I -Landroid/util/StatsLogInternal;->TEMPERATURE:I -Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_BATTERY:I -Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_CPU:I -Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_GPU:I -Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_SKIN:I -Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_UNKNOWN:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_BACKUP:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_BOUND_FOREGROUND_SERVICE:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_CACHED_ACTIVITY:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_CACHED_ACTIVITY_CLIENT:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_CACHED_EMPTY:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_CACHED_RECENT:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_FOREGROUND_SERVICE:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_HEAVY_WEIGHT:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_HOME:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_IMPORTANT_BACKGROUND:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_IMPORTANT_FOREGROUND:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_LAST_ACTIVITY:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_NONEXISTENT:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_PERSISTENT:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_PERSISTENT_UI:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_RECEIVER:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_SERVICE:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_TOP:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_TOP_SLEEPING:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_TRANSIENT_BACKGROUND:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_UNKNOWN:I -Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_UNKNOWN_TO_PROTO:I -Landroid/util/StatsLogInternal;->USB_CONNECTOR_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->USB_CONNECTOR_STATE_CHANGED__STATE__CONNECTED:I -Landroid/util/StatsLogInternal;->USB_CONNECTOR_STATE_CHANGED__STATE__DISCONNECTED:I -Landroid/util/StatsLogInternal;->USB_DEVICE_ATTACHED:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__DOZE_WAKE_LOCK:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__DRAW_WAKE_LOCK:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__FULL_WAKE_LOCK:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__PARTIAL_WAKE_LOCK:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__PROXIMITY_SCREEN_OFF_WAKE_LOCK:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__SCREEN_BRIGHT_WAKE_LOCK:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__SCREEN_DIM_WAKE_LOCK:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__STATE__ACQUIRE:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__STATE__CHANGE_ACQUIRE:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__STATE__CHANGE_RELEASE:I -Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__STATE__RELEASE:I -Landroid/util/StatsLogInternal;->WAKEUP_ALARM_OCCURRED:I -Landroid/util/StatsLogInternal;->WIFI_ACTIVITY_INFO:I -Landroid/util/StatsLogInternal;->WIFI_BYTES_TRANSFER:I -Landroid/util/StatsLogInternal;->WIFI_BYTES_TRANSFER_BY_FG_BG:I -Landroid/util/StatsLogInternal;->WIFI_LOCK_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->WIFI_LOCK_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->WIFI_LOCK_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->WIFI_MULTICAST_LOCK_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->WIFI_MULTICAST_LOCK_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->WIFI_MULTICAST_LOCK_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_HIGH:I -Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_LOW:I -Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_MEDIUM:I -Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_UNKNOWN:I -Landroid/util/StatsLogInternal;->WIFI_SCAN_STATE_CHANGED:I -Landroid/util/StatsLogInternal;->WIFI_SCAN_STATE_CHANGED__STATE__OFF:I -Landroid/util/StatsLogInternal;->WIFI_SCAN_STATE_CHANGED__STATE__ON:I -Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED:I -Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_GOOD:I -Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_GREAT:I -Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_MODERATE:I -Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_NONE_OR_UNKNOWN:I -Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_POOR:I -Landroid/util/StatsLogInternal;->write(I)I -Landroid/util/StatsLogInternal;->write(II)I -Landroid/util/StatsLogInternal;->write(III)I -Landroid/util/StatsLogInternal;->write(IIIFIIIIIIIIIIIIII)I -Landroid/util/StatsLogInternal;->write(IIII)I -Landroid/util/StatsLogInternal;->write(IIIIIIIII)I -Landroid/util/StatsLogInternal;->write(IIIIJZ)I -Landroid/util/StatsLogInternal;->write(IIIJ)I -Landroid/util/StatsLogInternal;->write(IIIZZ)I -Landroid/util/StatsLogInternal;->write(IIIZZZ)I -Landroid/util/StatsLogInternal;->write(IIJ)I -Landroid/util/StatsLogInternal;->write(IIJJ)I -Landroid/util/StatsLogInternal;->write(IIJJJJ)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;I)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;IJJJJJ)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ILjava/lang/String;)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;III)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ILjava/lang/String;Ljava/lang/String;ZJIIIIILjava/lang/String;II)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ILjava/lang/String;ZJ)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;Ljava/lang/String;I)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;II)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;Ljava/lang/String;JJJJJ)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I -Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ZI)I -Landroid/util/StatsLogInternal;->write(IIZJJJJ)I -Landroid/util/StatsLogInternal;->write(IJ)I -Landroid/util/StatsLogInternal;->write(IJIJJJJ)I -Landroid/util/StatsLogInternal;->write(IJJJ)I -Landroid/util/StatsLogInternal;->write(IJJJJJJJJJJ)I -Landroid/util/StatsLogInternal;->write(ILjava/lang/String;IIJ)I -Landroid/util/StatsLogInternal;->write(ILjava/lang/String;J)I -Landroid/util/StatsLogInternal;->write(ILjava/lang/String;Ljava/lang/String;JJ)I -Landroid/util/StatsLogInternal;->write(ILjava/lang/String;Ljava/lang/String;JJJJ)I -Landroid/util/StatsLogInternal;->write(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZII)I -Landroid/util/StatsLogInternal;->write(IZLjava/lang/String;JJ)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;I)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;II)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;IILjava/lang/String;)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;ILjava/lang/String;I)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;IZZZ)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;Ljava/lang/String;I)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;Ljava/lang/String;II)I -Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;I)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;II)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;IILjava/lang/String;)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;ILjava/lang/String;I)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;IZZZ)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;I)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;II)I -Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I -Landroid/util/StatsLogInternal;->WTF_OCCURRED:I Landroid/util/StringBuilderPrinter;->mBuilder:Ljava/lang/StringBuilder; Landroid/util/SuperNotCalledException;-><init>(Ljava/lang/String;)V Landroid/util/TextLogEntry;-><init>()V diff --git a/config/OWNERS b/config/OWNERS index 0691dbc4dcb0..c0778f88637f 100644 --- a/config/OWNERS +++ b/config/OWNERS @@ -1,8 +1,8 @@ include /ZYGOTE_OWNERS # art-team@ manages the boot image profiles -per-file boot-* = calin@google.com, mathieuc@google.com, ngeoffray@google.com -per-file dirty-image-objects = calin@google.com, mathieuc@google.com, ngeoffray@google.com -per-file generate-preloaded-classes.sh = calin@google.com, mathieuc@google.com, ngeoffray@google.com -per-file preloaded-classes* = calin@google.com, mathieuc@google.com, ngeoffray@google.com +per-file boot-* = calin@google.com, ngeoffray@google.com, vmarko@google.com +per-file dirty-image-objects = calin@google.com, ngeoffray@google.com, vmarko@google.com +per-file generate-preloaded-classes.sh = calin@google.com, ngeoffray@google.com, vmarko@google.com +per-file preloaded-classes* = calin@google.com, ngeoffray@google.com, vmarko@google.com diff --git a/core/java/android/bluetooth/BluetoothGatt.java b/core/java/android/bluetooth/BluetoothGatt.java index 381318b26dad..1d08ddb65cf4 100644 --- a/core/java/android/bluetooth/BluetoothGatt.java +++ b/core/java/android/bluetooth/BluetoothGatt.java @@ -1153,7 +1153,9 @@ public final class BluetoothGatt implements BluetoothProfile { characteristic.getInstanceId(), AUTHENTICATION_NONE); } catch (RemoteException e) { Log.e(TAG, "", e); - mDeviceBusy = false; + synchronized (mDeviceBusyLock) { + mDeviceBusy = false; + } return false; } @@ -1187,7 +1189,9 @@ public final class BluetoothGatt implements BluetoothProfile { new ParcelUuid(uuid), startHandle, endHandle, AUTHENTICATION_NONE); } catch (RemoteException e) { Log.e(TAG, "", e); - mDeviceBusy = false; + synchronized (mDeviceBusyLock) { + mDeviceBusy = false; + } return false; } @@ -1234,7 +1238,9 @@ public final class BluetoothGatt implements BluetoothProfile { AUTHENTICATION_NONE, characteristic.getValue()); } catch (RemoteException e) { Log.e(TAG, "", e); - mDeviceBusy = false; + synchronized (mDeviceBusyLock) { + mDeviceBusy = false; + } return false; } @@ -1276,7 +1282,9 @@ public final class BluetoothGatt implements BluetoothProfile { descriptor.getInstanceId(), AUTHENTICATION_NONE); } catch (RemoteException e) { Log.e(TAG, "", e); - mDeviceBusy = false; + synchronized (mDeviceBusyLock) { + mDeviceBusy = false; + } return false; } @@ -1317,7 +1325,9 @@ public final class BluetoothGatt implements BluetoothProfile { AUTHENTICATION_NONE, descriptor.getValue()); } catch (RemoteException e) { Log.e(TAG, "", e); - mDeviceBusy = false; + synchronized (mDeviceBusyLock) { + mDeviceBusy = false; + } return false; } @@ -1384,7 +1394,9 @@ public final class BluetoothGatt implements BluetoothProfile { mService.endReliableWrite(mClientIf, mDevice.getAddress(), true); } catch (RemoteException e) { Log.e(TAG, "", e); - mDeviceBusy = false; + synchronized (mDeviceBusyLock) { + mDeviceBusy = false; + } return false; } diff --git a/core/java/com/android/internal/os/BinderCallsStats.java b/core/java/com/android/internal/os/BinderCallsStats.java index 0ab2a900aa61..2cdf4e008cb4 100644 --- a/core/java/com/android/internal/os/BinderCallsStats.java +++ b/core/java/com/android/internal/os/BinderCallsStats.java @@ -930,15 +930,12 @@ public class BinderCallsStats implements BinderInternal.Observer { private final Context mContext; private final KeyValueListParser mParser = new KeyValueListParser(','); private final BinderCallsStats mBinderCallsStats; - private final int mProcessSource; - public SettingsObserver(Context context, BinderCallsStats binderCallsStats, - int processSource) { + public SettingsObserver(Context context, BinderCallsStats binderCallsStats) { super(BackgroundThread.getHandler()); mContext = context; context.getContentResolver().registerContentObserver(mUri, false, this); mBinderCallsStats = binderCallsStats; - mProcessSource = processSource; // Always kick once to ensure that we match current state onChange(); } diff --git a/core/java/com/android/internal/os/BinderLatencyObserver.java b/core/java/com/android/internal/os/BinderLatencyObserver.java index 5fa96bd9a152..af62fd78392a 100644 --- a/core/java/com/android/internal/os/BinderLatencyObserver.java +++ b/core/java/com/android/internal/os/BinderLatencyObserver.java @@ -332,4 +332,9 @@ public class BinderLatencyObserver { public Runnable getStatsdPushRunnable() { return mLatencyObserverRunnable; } + + @VisibleForTesting + public int getProcessSource() { + return mProcessSource; + } } diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index a9e8fbce9187..0e02af2eab28 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -127,6 +127,12 @@ public class ZygoteInit { private static boolean sPreloadComplete; + /** + * Cached classloader to use for the system server. Will only be populated in the system + * server process. + */ + private static ClassLoader sCachedSystemServerClassLoader = null; + static void preload(TimingsTraceLog bootTimingsTraceLog) { Log.d(TAG, "begin preload"); bootTimingsTraceLog.traceBegin("BeginPreload"); @@ -543,10 +549,8 @@ public class ZygoteInit { throw new IllegalStateException("Unexpected return from WrapperInit.execApplication"); } else { - ClassLoader cl = null; - if (systemServerClasspath != null) { - cl = createPathClassLoader(systemServerClasspath, parsedArgs.mTargetSdkVersion); - + ClassLoader cl = getOrCreateSystemServerClassLoader(); + if (cl != null) { Thread.currentThread().setContextClassLoader(cl); } @@ -562,6 +566,23 @@ public class ZygoteInit { } /** + * Create the classloader for the system server and store it in + * {@link sCachedSystemServerClassLoader}. This function may be called through JNI in + * system server startup, when the runtime is in a critically low state. Do not do + * extended computation etc here. + */ + private static ClassLoader getOrCreateSystemServerClassLoader() { + if (sCachedSystemServerClassLoader == null) { + final String systemServerClasspath = Os.getenv("SYSTEMSERVERCLASSPATH"); + if (systemServerClasspath != null) { + sCachedSystemServerClassLoader = createPathClassLoader(systemServerClasspath, + VMRuntime.SDK_VERSION_CUR_DEVELOPMENT); + } + } + return sCachedSystemServerClassLoader; + } + + /** * Note that preparing the profiles for system server does not require special selinux * permissions. From the installer perspective the system server is a regular package which can * capture profile information. diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index fa9eead6b700..a2c67f1e0450 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -122,6 +122,10 @@ static jclass gZygoteClass; static jmethodID gCallPostForkSystemServerHooks; static jmethodID gCallPostForkChildHooks; +static constexpr const char* kZygoteInitClassName = "com/android/internal/os/ZygoteInit"; +static jclass gZygoteInitClass; +static jmethodID gGetOrCreateSystemServerClassLoader; + static bool gIsSecurityEnforced = true; /** @@ -1572,6 +1576,17 @@ static void SpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArray gids, instruction_set.value().c_str()); } + if (is_system_server) { + // Prefetch the classloader for the system server. This is done early to + // allow a tie-down of the proper system server selinux domain. + env->CallStaticObjectMethod(gZygoteInitClass, gGetOrCreateSystemServerClassLoader); + if (env->ExceptionCheck()) { + // Be robust here. The Java code will attempt to create the classloader + // at a later point (but may not have rights to use AoT artifacts). + env->ExceptionClear(); + } + } + if (setresgid(gid, gid, gid) == -1) { fail_fn(CREATE_ERROR("setresgid(%d) failed: %s", gid, strerror(errno))); } @@ -2635,6 +2650,13 @@ int register_com_android_internal_os_Zygote(JNIEnv* env) { gCallPostForkChildHooks = GetStaticMethodIDOrDie(env, gZygoteClass, "callPostForkChildHooks", "(IZZLjava/lang/String;)V"); - return RegisterMethodsOrDie(env, "com/android/internal/os/Zygote", gMethods, NELEM(gMethods)); + gZygoteInitClass = MakeGlobalRefOrDie(env, FindClassOrDie(env, kZygoteInitClassName)); + gGetOrCreateSystemServerClassLoader = + GetStaticMethodIDOrDie(env, gZygoteInitClass, "getOrCreateSystemServerClassLoader", + "()Ljava/lang/ClassLoader;"); + + RegisterMethodsOrDie(env, "com/android/internal/os/Zygote", gMethods, NELEM(gMethods)); + + return JNI_OK; } } // namespace android diff --git a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java index ecd0276715ad..9b1afcb43006 100644 --- a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java @@ -835,6 +835,40 @@ public class BinderCallsStatsTest { assertEquals(0, bcs.getLatencyObserver().getLatencyHistograms().size()); } + @Test + public void testProcessSource() { + BinderCallsStats defaultCallsStats = new BinderCallsStats( + new BinderCallsStats.Injector()); + + BinderCallsStats systemServerCallsStats = new BinderCallsStats( + new BinderCallsStats.Injector(), + com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER); + + BinderCallsStats telephonyCallsStats = new BinderCallsStats( + new BinderCallsStats.Injector(), + com.android.internal.os.BinderLatencyProto.Dims.TELEPHONY); + + BinderCallsStats bluetoothCallsStats = new BinderCallsStats( + new BinderCallsStats.Injector(), + com.android.internal.os.BinderLatencyProto.Dims.BLUETOOTH); + + assertEquals( + com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER, + defaultCallsStats.getLatencyObserver().getProcessSource()); + + assertEquals( + com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER, + systemServerCallsStats.getLatencyObserver().getProcessSource()); + + assertEquals( + com.android.internal.os.BinderLatencyProto.Dims.TELEPHONY, + telephonyCallsStats.getLatencyObserver().getProcessSource()); + + assertEquals( + com.android.internal.os.BinderLatencyProto.Dims.BLUETOOTH, + bluetoothCallsStats.getLatencyObserver().getProcessSource()); + } + private static class TestHandler extends Handler { ArrayList<Runnable> mRunnables = new ArrayList<>(); diff --git a/data/keyboards/Vendor_0a5c_Product_8502.kl b/data/keyboards/idroid_con.kl index 6d4a163d9f0b..6d4a163d9f0b 100644 --- a/data/keyboards/Vendor_0a5c_Product_8502.kl +++ b/data/keyboards/idroid_con.kl diff --git a/keystore/java/android/security/GenerateRkpKey.java b/keystore/java/android/security/GenerateRkpKey.java index a1a7aa85519f..053bec74405e 100644 --- a/keystore/java/android/security/GenerateRkpKey.java +++ b/keystore/java/android/security/GenerateRkpKey.java @@ -22,6 +22,10 @@ import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import android.os.RemoteException; +import android.util.Log; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; /** * GenerateKey is a helper class to handle interactions between Keystore and the RemoteProvisioner @@ -41,14 +45,25 @@ import android.os.RemoteException; * @hide */ public class GenerateRkpKey { + private static final String TAG = "GenerateRkpKey"; + + private static final int NOTIFY_EMPTY = 0; + private static final int NOTIFY_KEY_GENERATED = 1; + private static final int TIMEOUT_MS = 1000; private IGenerateRkpKeyService mBinder; private Context mContext; + private CountDownLatch mCountDownLatch; private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { mBinder = IGenerateRkpKeyService.Stub.asInterface(service); + mCountDownLatch.countDown(); + } + + @Override public void onBindingDied(ComponentName className) { + mCountDownLatch.countDown(); } @Override @@ -64,36 +79,52 @@ public class GenerateRkpKey { mContext = context; } - /** - * Fulfills the use case of (2) described in the class documentation. Blocks until the - * RemoteProvisioner application can get new attestation keys signed by the server. - */ - public void notifyEmpty(int securityLevel) throws RemoteException { + private void bindAndSendCommand(int command, int securityLevel) throws RemoteException { Intent intent = new Intent(IGenerateRkpKeyService.class.getName()); ComponentName comp = intent.resolveSystemService(mContext.getPackageManager(), 0); + if (comp == null) { + // On a system that does not use RKP, the RemoteProvisioner app won't be installed. + return; + } intent.setComponent(comp); - if (comp == null || !mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE)) { - throw new RemoteException("Failed to bind to GenerateKeyService"); + mCountDownLatch = new CountDownLatch(1); + if (!mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE)) { + throw new RemoteException("Failed to bind to GenerateRkpKeyService"); + } + try { + mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + Log.e(TAG, "Interrupted: ", e); } if (mBinder != null) { - mBinder.generateKey(securityLevel); + switch (command) { + case NOTIFY_EMPTY: + mBinder.generateKey(securityLevel); + break; + case NOTIFY_KEY_GENERATED: + mBinder.notifyKeyGenerated(securityLevel); + break; + default: + Log.e(TAG, "Invalid case for command"); + } + } else { + Log.e(TAG, "Binder object is null; failed to bind to GenerateRkpKeyService."); } mContext.unbindService(mConnection); } /** - * FUlfills the use case of (1) described in the class documentation. Non blocking call. + * Fulfills the use case of (2) described in the class documentation. Blocks until the + * RemoteProvisioner application can get new attestation keys signed by the server. + */ + public void notifyEmpty(int securityLevel) throws RemoteException { + bindAndSendCommand(NOTIFY_EMPTY, securityLevel); + } + + /** + * Fulfills the use case of (1) described in the class documentation. Non blocking call. */ public void notifyKeyGenerated(int securityLevel) throws RemoteException { - Intent intent = new Intent(IGenerateRkpKeyService.class.getName()); - ComponentName comp = intent.resolveSystemService(mContext.getPackageManager(), 0); - intent.setComponent(comp); - if (comp == null || !mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE)) { - throw new RemoteException("Failed to bind to GenerateKeyService"); - } - if (mBinder != null) { - mBinder.notifyKeyGenerated(securityLevel); - } - mContext.unbindService(mConnection); + bindAndSendCommand(NOTIFY_KEY_GENERATED, securityLevel); } } diff --git a/keystore/java/android/security/LegacyVpnProfileStore.java b/keystore/java/android/security/LegacyVpnProfileStore.java index 1d2738e71311..c85b6b1efd9a 100644 --- a/keystore/java/android/security/LegacyVpnProfileStore.java +++ b/keystore/java/android/security/LegacyVpnProfileStore.java @@ -19,7 +19,7 @@ package android.security; import android.annotation.NonNull; import android.os.ServiceManager; import android.os.ServiceSpecificException; -import android.security.vpnprofilestore.IVpnProfileStore; +import android.security.legacykeystore.ILegacyKeystore; import android.util.Log; /** @@ -32,14 +32,14 @@ import android.util.Log; public class LegacyVpnProfileStore { private static final String TAG = "LegacyVpnProfileStore"; - public static final int SYSTEM_ERROR = IVpnProfileStore.ERROR_SYSTEM_ERROR; - public static final int PROFILE_NOT_FOUND = IVpnProfileStore.ERROR_PROFILE_NOT_FOUND; + public static final int SYSTEM_ERROR = ILegacyKeystore.ERROR_SYSTEM_ERROR; + public static final int PROFILE_NOT_FOUND = ILegacyKeystore.ERROR_ENTRY_NOT_FOUND; - private static final String VPN_PROFILE_STORE_SERVICE_NAME = "android.security.vpnprofilestore"; + private static final String LEGACY_KEYSTORE_SERVICE_NAME = "android.security.legacykeystore"; - private static IVpnProfileStore getService() { - return IVpnProfileStore.Stub.asInterface( - ServiceManager.checkService(VPN_PROFILE_STORE_SERVICE_NAME)); + private static ILegacyKeystore getService() { + return ILegacyKeystore.Stub.asInterface( + ServiceManager.checkService(LEGACY_KEYSTORE_SERVICE_NAME)); } /** @@ -52,7 +52,7 @@ public class LegacyVpnProfileStore { */ public static boolean put(@NonNull String alias, @NonNull byte[] profile) { try { - getService().put(alias, profile); + getService().put(alias, ILegacyKeystore.UID_SELF, profile); return true; } catch (Exception e) { Log.e(TAG, "Failed to put vpn profile.", e); @@ -71,7 +71,7 @@ public class LegacyVpnProfileStore { */ public static byte[] get(@NonNull String alias) { try { - return getService().get(alias); + return getService().get(alias, ILegacyKeystore.UID_SELF); } catch (ServiceSpecificException e) { if (e.errorCode != PROFILE_NOT_FOUND) { Log.e(TAG, "Failed to get vpn profile.", e); @@ -90,7 +90,7 @@ public class LegacyVpnProfileStore { */ public static boolean remove(@NonNull String alias) { try { - getService().remove(alias); + getService().remove(alias, ILegacyKeystore.UID_SELF); return true; } catch (ServiceSpecificException e) { if (e.errorCode != PROFILE_NOT_FOUND) { @@ -110,7 +110,7 @@ public class LegacyVpnProfileStore { */ public static @NonNull String[] list(@NonNull String prefix) { try { - final String[] aliases = getService().list(prefix); + final String[] aliases = getService().list(prefix, ILegacyKeystore.UID_SELF); for (int i = 0; i < aliases.length; ++i) { aliases[i] = aliases[i].substring(prefix.length()); } diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java index dc7f3dda35c0..c048f3bffc75 100644 --- a/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java +++ b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java @@ -580,7 +580,7 @@ public abstract class AndroidKeyStoreKeyPairGeneratorSpi extends KeyPairGenerato } catch (RemoteException e) { // This is not really an error state, and necessarily does not apply to non RKP // systems or hybrid systems where RKP is not currently turned on. - Log.d(TAG, "Couldn't connect to the RemoteProvisioner backend."); + Log.d(TAG, "Couldn't connect to the RemoteProvisioner backend.", e); } success = true; return new KeyPair(publicKey, publicKey.getPrivateKey()); diff --git a/packages/SystemUI/shared/lint-baseline.xml b/packages/SystemUI/shared/lint-baseline.xml index 8021fbfbb813..556c7b6a67fd 100644 --- a/packages/SystemUI/shared/lint-baseline.xml +++ b/packages/SystemUI/shared/lint-baseline.xml @@ -1,9 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> -<issues format="5" by="lint 4.1.0" client="cli" variant="all" version="4.1.0"> +<issues format="6" by="lint 7.1.0-dev" type="baseline" client="" name="" variant="all" version="7.1.0-dev"> + <issue id="NewApi" - message="Call requires API level R (current min is 26): `android.os.RemoteException#rethrowFromSystemServer`" + message="Call requires API level 30 (current min is 26): `android.os.RemoteException#rethrowFromSystemServer`" errorLine1=" throw e.rethrowFromSystemServer();" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~"> <location @@ -91,7 +92,7 @@ <issue id="NewApi" - message="Call requires API level R (current min is 26): `android.view.SurfaceControlViewHost#release`" + message="Call requires API level 30 (current min is 26): `android.view.SurfaceControlViewHost#release`" errorLine1=" mSurfaceControlViewHost.release();" errorLine2=" ~~~~~~~"> <location @@ -102,7 +103,7 @@ <issue id="NewApi" - message="Call requires API level R (current min is 26): `android.view.SurfaceView#getHostToken`" + message="Call requires API level 30 (current min is 26): `android.view.SurfaceView#getHostToken`" errorLine1=" bundle.putBinder(KEY_HOST_TOKEN, surfaceView.getHostToken());" errorLine2=" ~~~~~~~~~~~~"> <location @@ -278,7 +279,7 @@ <issue id="NewApi" - message="Field requires API level 29 (current min is 26): `android.app.ActivityManager.RunningTaskInfo#taskId`" + message="Field requires API level 29 (current min is 26): `android.app.TaskInfo#taskId`" errorLine1=" onTaskMovedToFront(taskInfo.taskId);" errorLine2=" ~~~~~~~~~~~~~~~"> <location diff --git a/services/OWNERS b/services/OWNERS index 3b972e922e95..b7128a32fcee 100644 --- a/services/OWNERS +++ b/services/OWNERS @@ -1,6 +1,6 @@ per-file Android.bp = file:platform/build/soong:/OWNERS # art-team@ manages the system server profile -per-file art-profile* = calin@google.com, mathieuc@google.com, ngeoffray@google.com +per-file art-profile* = calin@google.com, ngeoffray@google.com, vmarko@google.com per-file java/com/android/server/* = toddke@google.com,patb@google.com diff --git a/services/core/java/com/android/server/recoverysystem/OWNERS b/services/core/java/com/android/server/recoverysystem/OWNERS index 79ded0dfba77..e3e7fdfd8f20 100644 --- a/services/core/java/com/android/server/recoverysystem/OWNERS +++ b/services/core/java/com/android/server/recoverysystem/OWNERS @@ -1,2 +1,3 @@ +ejyzhang@google.com rvrolyk@google.com -zhaojiac@google.com +xunchang@google.com diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java index 95a06fcff734..44a6d13153fd 100644 --- a/services/core/java/com/android/server/vcn/Vcn.java +++ b/services/core/java/com/android/server/vcn/Vcn.java @@ -518,7 +518,11 @@ public class Vcn extends Handler { } private String getLogPrefix() { - return "[" + LogUtils.getHashedSubscriptionGroup(mSubscriptionGroup) + "] "; + return "[" + + LogUtils.getHashedSubscriptionGroup(mSubscriptionGroup) + + "-" + + System.identityHashCode(this) + + "] "; } private void logVdbg(String msg) { diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java index 493697049f34..c6f3f73d0c61 100644 --- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java +++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java @@ -714,6 +714,18 @@ public class VcnGatewayConnection extends StateMachine { protected void onQuitting() { logDbg("Quitting VcnGatewayConnection"); + if (mNetworkAgent != null) { + logWtf("NetworkAgent was non-null in onQuitting"); + mNetworkAgent.unregister(); + mNetworkAgent = null; + } + + if (mIkeSession != null) { + logWtf("IkeSession was non-null in onQuitting"); + mIkeSession.kill(); + mIkeSession = null; + } + // No need to call setInterfaceDown(); the IpSecInterface is being fully torn down. if (mTunnelIface != null) { mTunnelIface.close(); @@ -1863,6 +1875,7 @@ public class VcnGatewayConnection extends StateMachine { if (mUnderlying == null) { logWtf("Underlying network was null in retry state"); + teardownNetwork(); transitionTo(mDisconnectedState); } else { // Safe to blindly set up, as it is cancelled and cleared on exiting this state @@ -1879,6 +1892,7 @@ public class VcnGatewayConnection extends StateMachine { // If new underlying is null, all networks were lost; go back to disconnected. if (mUnderlying == null) { + teardownNetwork(); transitionTo(mDisconnectedState); return; } else if (oldUnderlying != null @@ -2134,6 +2148,8 @@ public class VcnGatewayConnection extends StateMachine { + LogUtils.getHashedSubscriptionGroup(mSubscriptionGroup) + "-" + mConnectionConfig.getGatewayConnectionName() + + "-" + + System.identityHashCode(this) + "] "; } diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index a5fef8a1fe3b..5ddc7d87e5c9 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -2604,8 +2604,8 @@ public class CarrierConfigManager { /** * List of EARFCN (E-UTRA Absolute Radio Frequency Channel Number, - * Reference: 3GPP TS 36.104 5.4.3) inclusive ranges on which lte_rsrp_boost_int - * will be applied. Format of the String array is expected to be {"erafcn1_start-earfcn1_end", + * Reference: 3GPP TS 36.104 5.4.3) inclusive ranges on which lte_earfcns_rsrp_boost_int + * will be applied. Format of the String array is expected to be {"earfcn1_start-earfcn1_end", * "earfcn2_start-earfcn2_end" ... } * @hide */ @@ -2613,6 +2613,24 @@ public class CarrierConfigManager { "boosted_lte_earfcns_string_array"; /** + * Offset to be reduced from rsrp threshold while calculating signal strength level. + * @hide + */ + public static final String KEY_NRARFCNS_RSRP_BOOST_INT_ARRAY = "nrarfcns_rsrp_boost_int_array"; + + /** + * List of NR ARFCN (5G Absolute Radio Frequency Channel Number, + * Reference: 3GPP TS 36.108) inclusive ranges on which corresponding + * nrarfcns_rsrp_boost_int_array will be applied. The size of this array and + * nrarfcns_rsrp_boost_int_array must be the same. + * Format of the String array is expected to be {"nrarfcn1_start-nrarfcn1_end", + * "nrarfcn2_start-nrarfcn2_end" ... } + * @hide + */ + public static final String KEY_BOOSTED_NRARFCNS_STRING_ARRAY = + "boosted_nrarfcns_string_array"; + + /** * Determine whether to use only RSRP for the number of LTE signal bars. * @hide * @@ -4780,6 +4798,8 @@ public class CarrierConfigManager { sDefaults.putBoolean(KEY_SUPPORT_IMS_CALL_FORWARDING_WHILE_ROAMING_BOOL, true); sDefaults.putInt(KEY_LTE_EARFCNS_RSRP_BOOST_INT, 0); sDefaults.putStringArray(KEY_BOOSTED_LTE_EARFCNS_STRING_ARRAY, null); + sDefaults.putIntArray(KEY_NRARFCNS_RSRP_BOOST_INT_ARRAY, null); + sDefaults.putStringArray(KEY_BOOSTED_NRARFCNS_STRING_ARRAY, null); sDefaults.putBoolean(KEY_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL, false); sDefaults.putBoolean(KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL, false); sDefaults.putInt(IMSI_KEY_AVAILABILITY_INT, 0); diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java index 7addf334e967..9211482fc067 100644 --- a/telephony/java/android/telephony/CellSignalStrengthLte.java +++ b/telephony/java/android/telephony/CellSignalStrengthLte.java @@ -314,7 +314,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P int rsrpBoost = 0; if (ss != null) { - rsrpBoost = ss.getLteEarfcnRsrpBoost(); + rsrpBoost = ss.getArfcnRsrpBoost(); } int rsrp = inRangeOrUnavailable(mRsrp + rsrpBoost, MIN_LTE_RSRP, MAX_LTE_RSRP); diff --git a/telephony/java/android/telephony/CellSignalStrengthNr.java b/telephony/java/android/telephony/CellSignalStrengthNr.java index ac01afa51729..72150ddf8597 100644 --- a/telephony/java/android/telephony/CellSignalStrengthNr.java +++ b/telephony/java/android/telephony/CellSignalStrengthNr.java @@ -419,7 +419,11 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa int ssRsrqLevel = SignalStrength.INVALID; int ssSinrLevel = SignalStrength.INVALID; if (isLevelForParameter(USE_SSRSRP)) { - ssRsrpLevel = updateLevelWithMeasure(mSsRsrp, mSsRsrpThresholds); + int rsrpBoost = 0; + if (ss != null) { + rsrpBoost = ss.getArfcnRsrpBoost(); + } + ssRsrpLevel = updateLevelWithMeasure(mSsRsrp + rsrpBoost, mSsRsrpThresholds); if (VDBG) { Rlog.i(TAG, "Updated 5G NR SSRSRP Level: " + ssRsrpLevel); } diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index 2d06062cfa44..6da61b712916 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -353,9 +353,11 @@ public class ServiceState implements Parcelable { private int mChannelNumber; private int[] mCellBandwidths = new int[0]; - /* EARFCN stands for E-UTRA Absolute Radio Frequency Channel Number, - * Reference: 3GPP TS 36.104 5.4.3 */ - private int mLteEarfcnRsrpBoost = 0; + /** + * ARFCN stands for Absolute Radio Frequency Channel Number. This field is current used for + * LTE where it represents the boost for EARFCN (Reference: 3GPP TS 36.104 5.4.3) and for NR + * where it's for NR ARFCN (Reference: 3GPP TS 36.108) */ + private int mArfcnRsrpBoost = 0; private final List<NetworkRegistrationInfo> mNetworkRegistrationInfos = new ArrayList<>(); @@ -439,7 +441,7 @@ public class ServiceState implements Parcelable { mChannelNumber = s.mChannelNumber; mCellBandwidths = s.mCellBandwidths == null ? null : Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length); - mLteEarfcnRsrpBoost = s.mLteEarfcnRsrpBoost; + mArfcnRsrpBoost = s.mArfcnRsrpBoost; synchronized (mNetworkRegistrationInfos) { mNetworkRegistrationInfos.clear(); mNetworkRegistrationInfos.addAll(s.getNetworkRegistrationInfoList()); @@ -473,7 +475,7 @@ public class ServiceState implements Parcelable { mCdmaEriIconIndex = in.readInt(); mCdmaEriIconMode = in.readInt(); mIsEmergencyOnly = in.readInt() != 0; - mLteEarfcnRsrpBoost = in.readInt(); + mArfcnRsrpBoost = in.readInt(); synchronized (mNetworkRegistrationInfos) { in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader()); } @@ -501,7 +503,7 @@ public class ServiceState implements Parcelable { out.writeInt(mCdmaEriIconIndex); out.writeInt(mCdmaEriIconMode); out.writeInt(mIsEmergencyOnly ? 1 : 0); - out.writeInt(mLteEarfcnRsrpBoost); + out.writeInt(mArfcnRsrpBoost); synchronized (mNetworkRegistrationInfos) { out.writeList(mNetworkRegistrationInfos); } @@ -890,7 +892,7 @@ public class ServiceState implements Parcelable { mCdmaEriIconIndex, mCdmaEriIconMode, mIsEmergencyOnly, - mLteEarfcnRsrpBoost, + mArfcnRsrpBoost, mNetworkRegistrationInfos, mNrFrequencyRange, mOperatorAlphaLongRaw, @@ -1101,7 +1103,7 @@ public class ServiceState implements Parcelable { .append(", mCdmaDefaultRoamingIndicator=").append(mCdmaDefaultRoamingIndicator) .append(", mIsEmergencyOnly=").append(mIsEmergencyOnly) .append(", isUsingCarrierAggregation=").append(isUsingCarrierAggregation()) - .append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost) + .append(", mArfcnRsrpBoost=").append(mArfcnRsrpBoost) .append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos) .append(", mNrFrequencyRange=").append(Build.IS_DEBUGGABLE ? mNrFrequencyRange : FREQUENCY_RANGE_UNKNOWN) @@ -1132,7 +1134,7 @@ public class ServiceState implements Parcelable { mCdmaEriIconIndex = -1; mCdmaEriIconMode = -1; mIsEmergencyOnly = false; - mLteEarfcnRsrpBoost = 0; + mArfcnRsrpBoost = 0; mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN; synchronized (mNetworkRegistrationInfos) { mNetworkRegistrationInfos.clear(); @@ -1364,7 +1366,7 @@ public class ServiceState implements Parcelable { m.putBoolean("emergencyOnly", mIsEmergencyOnly); m.putBoolean("isDataRoamingFromRegistration", getDataRoamingFromRegistration()); m.putBoolean("isUsingCarrierAggregation", isUsingCarrierAggregation()); - m.putInt("LteEarfcnRsrpBoost", mLteEarfcnRsrpBoost); + m.putInt("ArfcnRsrpBoost", mArfcnRsrpBoost); m.putInt("ChannelNumber", mChannelNumber); m.putIntArray("CellBandwidths", mCellBandwidths); m.putInt("mNrFrequencyRange", mNrFrequencyRange); @@ -1455,13 +1457,13 @@ public class ServiceState implements Parcelable { } /** @hide */ - public int getLteEarfcnRsrpBoost() { - return mLteEarfcnRsrpBoost; + public int getArfcnRsrpBoost() { + return mArfcnRsrpBoost; } /** @hide */ - public void setLteEarfcnRsrpBoost(int LteEarfcnRsrpBoost) { - mLteEarfcnRsrpBoost = LteEarfcnRsrpBoost; + public void setArfcnRsrpBoost(int arfcnRsrpBoost) { + mArfcnRsrpBoost = arfcnRsrpBoost; } /** @hide */ diff --git a/tests/BootImageProfileTest/OWNERS b/tests/BootImageProfileTest/OWNERS index 7ee0d9a5e77e..57303e748738 100644 --- a/tests/BootImageProfileTest/OWNERS +++ b/tests/BootImageProfileTest/OWNERS @@ -1,4 +1,4 @@ calin@google.com -mathieuc@google.com ngeoffray@google.com +vmarko@google.com yawanng@google.com diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java index a88f112f4502..69407657b3c4 100644 --- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java +++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionRetryTimeoutStateTest.java @@ -16,10 +16,16 @@ package com.android.server.vcn; +import static com.android.server.vcn.VcnGatewayConnection.VcnNetworkAgent; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -33,16 +39,20 @@ import org.junit.runner.RunWith; @SmallTest public class VcnGatewayConnectionRetryTimeoutStateTest extends VcnGatewayConnectionTestBase { private long mFirstRetryInterval; + private VcnNetworkAgent mNetworkAgent; @Before public void setUp() throws Exception { super.setUp(); mFirstRetryInterval = mConfig.getRetryIntervalsMillis()[0]; + mNetworkAgent = mock(VcnNetworkAgent.class); mGatewayConnection.setUnderlyingNetwork(TEST_UNDERLYING_NETWORK_RECORD_1); mGatewayConnection.transitionTo(mGatewayConnection.mRetryTimeoutState); mTestLooper.dispatchAll(); + + mGatewayConnection.setNetworkAgent(mNetworkAgent); } @Test @@ -54,6 +64,9 @@ public class VcnGatewayConnectionRetryTimeoutStateTest extends VcnGatewayConnect assertEquals(mGatewayConnection.mConnectingState, mGatewayConnection.getCurrentState()); verifyRetryTimeoutAlarmAndGetCallback(mFirstRetryInterval, true /* expectCanceled */); + + assertNotNull(mGatewayConnection.getNetworkAgent()); + verify(mNetworkAgent, never()).unregister(); } @Test @@ -65,6 +78,9 @@ public class VcnGatewayConnectionRetryTimeoutStateTest extends VcnGatewayConnect assertEquals(mGatewayConnection.mRetryTimeoutState, mGatewayConnection.getCurrentState()); verifyRetryTimeoutAlarmAndGetCallback(mFirstRetryInterval, false /* expectCanceled */); + + assertNotNull(mGatewayConnection.getNetworkAgent()); + verify(mNetworkAgent, never()).unregister(); } @Test @@ -76,6 +92,9 @@ public class VcnGatewayConnectionRetryTimeoutStateTest extends VcnGatewayConnect assertEquals(mGatewayConnection.mDisconnectedState, mGatewayConnection.getCurrentState()); verifyRetryTimeoutAlarmAndGetCallback(mFirstRetryInterval, true /* expectCanceled */); + + assertNull(mGatewayConnection.getNetworkAgent()); + verify(mNetworkAgent).unregister(); } @Test @@ -93,6 +112,9 @@ public class VcnGatewayConnectionRetryTimeoutStateTest extends VcnGatewayConnect assertEquals(mGatewayConnection.mConnectingState, mGatewayConnection.getCurrentState()); verifyRetryTimeoutAlarmAndGetCallback(mFirstRetryInterval, true /* expectCanceled */); + + assertNotNull(mGatewayConnection.getNetworkAgent()); + verify(mNetworkAgent, never()).unregister(); } @Test @@ -108,6 +130,9 @@ public class VcnGatewayConnectionRetryTimeoutStateTest extends VcnGatewayConnect assertNull(mGatewayConnection.getCurrentState()); assertTrue(mGatewayConnection.isQuitting()); + + assertNull(mGatewayConnection.getNetworkAgent()); + verify(mNetworkAgent).unregister(); } @Test @@ -117,5 +142,8 @@ public class VcnGatewayConnectionRetryTimeoutStateTest extends VcnGatewayConnect assertEquals(mGatewayConnection.mDisconnectedState, mGatewayConnection.getCurrentState()); assertFalse(mGatewayConnection.isQuitting()); + + assertNull(mGatewayConnection.getNetworkAgent()); + verify(mNetworkAgent).unregister(); } } diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTest.java index a4f95e03e9bd..83610e0b7a67 100644 --- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTest.java +++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionTest.java @@ -24,8 +24,12 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; +import static com.android.server.vcn.VcnGatewayConnection.VcnIkeSession; +import static com.android.server.vcn.VcnGatewayConnection.VcnNetworkAgent; + import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Matchers.eq; @@ -191,4 +195,23 @@ public class VcnGatewayConnectionTest extends VcnGatewayConnectionTestBase { verify(mDisconnectRequestAlarm).cancel(); } + + @Test + public void testQuittingCleansUpPersistentState() { + final VcnIkeSession vcnIkeSession = mock(VcnIkeSession.class); + final VcnNetworkAgent vcnNetworkAgent = mock(VcnNetworkAgent.class); + + mGatewayConnection.setIkeSession(vcnIkeSession); + mGatewayConnection.setNetworkAgent(vcnNetworkAgent); + + mGatewayConnection.quitNow(); + mTestLooper.dispatchAll(); + + assertNull(mGatewayConnection.getIkeSession()); + verify(vcnIkeSession).kill(); + assertNull(mGatewayConnection.getNetworkAgent()); + verify(vcnNetworkAgent).unregister(); + + verifyWakeLockReleased(); + } } diff --git a/tools/fonts/fontchain_linter.py b/tools/fonts/fontchain_linter.py index a4a315b7e371..fb1cfbdd97e3 100755 --- a/tools/fonts/fontchain_linter.py +++ b/tools/fonts/fontchain_linter.py @@ -113,7 +113,7 @@ def get_variation_sequences_cmap(font): def get_emoji_map(font): # Add normal characters emoji_map = copy.copy(get_best_cmap(font)) - reverse_cmap = {glyph: code for code, glyph in emoji_map.items()} + reverse_cmap = {glyph: code for code, glyph in emoji_map.items() if not contains_pua(code) } # Add variation sequences vs_dict = get_variation_sequences_cmap(font).uvsDict @@ -251,6 +251,7 @@ def parse_fonts_xml(fonts_xml_path): assert child.tag == 'font', ( 'Unknown tag <%s>' % child.tag) font_file = child.text.rstrip() + weight = int(child.get('weight')) assert weight % 100 == 0, ( 'Font weight "%d" is not a multiple of 100.' % weight) @@ -314,27 +315,54 @@ def get_emoji_font(): return emoji_fonts[0] +def is_pua(x): + return 0xE000 <= x <= 0xF8FF or 0xF0000 <= x <= 0xFFFFD or 0x100000 <= x <= 0x10FFFD + +def contains_pua(sequence): + if type(sequence) is tuple: + return any([is_pua(x) for x in sequence]) + else: + return is_pua(sequence) + + +def check_emoji_compat(): + ttf = open_font(get_emoji_font()) + meta = ttf['meta'] + assert meta, 'Compat font must have meta table' + assert 'Emji' in meta.data, 'meta table should have \'Emji\' data.' + def check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji): coverage = get_emoji_map(emoji_font) + + errors = [] + for sequence in all_emoji: - assert sequence in coverage, ( - '%s is not supported in the emoji font.' % printable(sequence)) + if not sequence in coverage: + errors.append('%s is not supported in the emoji font.' % printable(sequence)) for sequence in coverage: if sequence in {0x0000, 0x000D, 0x0020}: # The font needs to support a few extra characters, which is OK continue - assert sequence in all_emoji, ( - 'Emoji font should not support %s.' % printable(sequence)) + + if contains_pua(sequence): + # The font needs to have some PUA for EmojiCompat library. + continue + + if sequence not in all_emoji: + errors.append('%s support unexpected in the emoji font.' % printable(sequence)) for first, second in equivalent_emoji.items(): - assert coverage[first] == coverage[second], ( - '%s and %s should map to the same glyph.' % ( + if first not in coverage or second not in coverage: + continue # sequence will be reported missing + if coverage[first] != coverage[second]: + errors.append('%s and %s should map to the same glyph.' % ( printable(first), printable(second))) for glyph in set(coverage.values()): - maps_to_glyph = [seq for seq in coverage if coverage[seq] == glyph] + maps_to_glyph = [ + seq for seq in coverage if coverage[seq] == glyph and not contains_pua(seq) ] if len(maps_to_glyph) > 1: # There are more than one sequences mapping to the same glyph. We # need to make sure they were expected to be equivalent. @@ -344,11 +372,13 @@ def check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji): while equivalent_seq in equivalent_emoji: equivalent_seq = equivalent_emoji[equivalent_seq] equivalent_seqs.add(equivalent_seq) - assert len(equivalent_seqs) == 1, ( - 'The sequences %s should not result in the same glyph %s' % ( + if len(equivalent_seqs) != 1: + errors.append('The sequences %s should not result in the same glyph %s' % ( printable(equivalent_seqs), glyph)) + assert not errors, '%d emoji font errors:\n%s\n%d emoji font coverage errors' % (len(errors), '\n'.join(errors), len(errors)) + def check_emoji_defaults(default_emoji): missing_text_chars = _emoji_properties['Emoji'] - default_emoji @@ -680,6 +710,7 @@ def main(): ucd_path = sys.argv[3] parse_ucd(ucd_path) all_emoji, default_emoji, equivalent_emoji = compute_expected_emoji() + check_emoji_compat() check_emoji_coverage(all_emoji, equivalent_emoji) check_emoji_defaults(default_emoji) |