summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
Diffstat (limited to 'services')
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java3
-rw-r--r--services/accessibility/java/com/android/server/accessibility/GestureUtils.java20
-rw-r--r--services/accessibility/java/com/android/server/accessibility/MagnificationController.java40
-rw-r--r--services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java826
-rw-r--r--services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java27
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java16
-rw-r--r--services/art-profile10949
-rw-r--r--services/autofill/java/com/android/server/autofill/AutofillManagerService.java29
-rw-r--r--services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java101
-rw-r--r--services/autofill/java/com/android/server/autofill/Helper.java13
-rw-r--r--services/autofill/java/com/android/server/autofill/RemoteFillService.java12
-rw-r--r--services/autofill/java/com/android/server/autofill/Session.java383
-rw-r--r--services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java125
-rw-r--r--services/autofill/java/com/android/server/autofill/ui/FillUi.java20
-rw-r--r--services/autofill/java/com/android/server/autofill/ui/PendingUi.java87
-rw-r--r--services/autofill/java/com/android/server/autofill/ui/SaveUi.java200
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerConstants.java180
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerService.java59
-rw-r--r--services/backup/java/com/android/server/backup/FullBackupJob.java12
-rw-r--r--services/backup/java/com/android/server/backup/KeyValueBackupJob.java60
-rw-r--r--services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java6
-rw-r--r--services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java273
-rw-r--r--services/backup/java/com/android/server/backup/TransportManager.java68
-rw-r--r--services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java9
-rw-r--r--services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java17
-rw-r--r--services/backup/java/com/android/server/backup/internal/PerformBackupTask.java18
-rw-r--r--services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java3
-rw-r--r--services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java3
-rw-r--r--services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java13
-rw-r--r--services/backup/java/com/android/server/backup/utils/AppBackupUtils.java29
-rw-r--r--services/core/Android.mk8
-rw-r--r--services/core/java/com/android/server/AlarmManagerService.java271
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java139
-rw-r--r--services/core/java/com/android/server/DeviceIdleController.java47
-rw-r--r--services/core/java/com/android/server/LocationManagerService.java13
-rw-r--r--services/core/java/com/android/server/NativeDaemonConnector.java8
-rw-r--r--services/core/java/com/android/server/NetworkManagementService.java41
-rw-r--r--services/core/java/com/android/server/RecoverySystemService.java5
-rw-r--r--services/core/java/com/android/server/StorageManagerService.java1331
-rw-r--r--services/core/java/com/android/server/TextServicesManagerService.java86
-rw-r--r--services/core/java/com/android/server/VibratorService.java3
-rw-r--r--services/core/java/com/android/server/accounts/AccountManagerService.java6
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java17
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerConstants.java18
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java578
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerShellCommand.java84
-rw-r--r--services/core/java/com/android/server/am/ActivityMetricsLogger.java43
-rw-r--r--services/core/java/com/android/server/am/ActivityRecord.java221
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java320
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java656
-rw-r--r--services/core/java/com/android/server/am/ActivityStarter.java170
-rw-r--r--services/core/java/com/android/server/am/AppErrorDialog.java6
-rw-r--r--services/core/java/com/android/server/am/AppErrors.java58
-rw-r--r--services/core/java/com/android/server/am/BatteryExternalStatsWorker.java17
-rw-r--r--services/core/java/com/android/server/am/BatteryStatsService.java53
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueue.java19
-rw-r--r--services/core/java/com/android/server/am/KeyguardController.java40
-rw-r--r--services/core/java/com/android/server/am/LockTaskController.java110
-rw-r--r--services/core/java/com/android/server/am/PinnedActivityStack.java12
-rw-r--r--services/core/java/com/android/server/am/RecentTasks.java8
-rw-r--r--services/core/java/com/android/server/am/TaskChangeNotificationController.java6
-rw-r--r--services/core/java/com/android/server/am/TaskPersister.java3
-rw-r--r--services/core/java/com/android/server/am/TaskRecord.java479
-rw-r--r--services/core/java/com/android/server/am/UserController.java247
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java111
-rw-r--r--services/core/java/com/android/server/audio/AudioServiceEvents.java131
-rw-r--r--services/core/java/com/android/server/audio/PlaybackActivityMonitor.java57
-rw-r--r--services/core/java/com/android/server/broadcastradio/Tuner.java5
-rw-r--r--services/core/java/com/android/server/clipboard/ClipboardService.java20
-rw-r--r--services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java17
-rw-r--r--services/core/java/com/android/server/connectivity/Nat464Xlat.java333
-rw-r--r--services/core/java/com/android/server/connectivity/NetdEventListenerService.java98
-rw-r--r--services/core/java/com/android/server/connectivity/NetworkAgentInfo.java44
-rw-r--r--services/core/java/com/android/server/connectivity/NetworkMonitor.java116
-rw-r--r--services/core/java/com/android/server/connectivity/tethering/OffloadController.java263
-rw-r--r--services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java19
-rw-r--r--services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java27
-rw-r--r--services/core/java/com/android/server/content/SyncManager.java61
-rw-r--r--services/core/java/com/android/server/content/SyncStorageEngine.java6
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java107
-rw-r--r--services/core/java/com/android/server/display/NightDisplayService.java135
-rw-r--r--services/core/java/com/android/server/display/PersistentDataStore.java89
-rw-r--r--services/core/java/com/android/server/fingerprint/FingerprintService.java6
-rw-r--r--services/core/java/com/android/server/job/JobSchedulerInternal.java40
-rw-r--r--services/core/java/com/android/server/job/JobSchedulerService.java58
-rw-r--r--services/core/java/com/android/server/job/JobServiceContext.java29
-rw-r--r--services/core/java/com/android/server/job/JobStore.java43
-rw-r--r--services/core/java/com/android/server/job/controllers/BackgroundJobsController.java24
-rw-r--r--services/core/java/com/android/server/location/GnssLocationProvider.java5
-rw-r--r--services/core/java/com/android/server/locksettings/LockSettingsService.java71
-rw-r--r--services/core/java/com/android/server/locksettings/LockSettingsStorage.java3
-rw-r--r--services/core/java/com/android/server/media/AudioPlaybackMonitor.java6
-rw-r--r--services/core/java/com/android/server/media/MediaRouterService.java64
-rw-r--r--services/core/java/com/android/server/media/MediaSessionRecord.java27
-rw-r--r--services/core/java/com/android/server/media/MediaSessionService.java4
-rw-r--r--services/core/java/com/android/server/net/NetworkPolicyManagerService.java192
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsCollection.java190
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsObservers.java14
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsRecorder.java9
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsService.java196
-rw-r--r--services/core/java/com/android/server/notification/ConditionProviders.java5
-rw-r--r--services/core/java/com/android/server/notification/ManagedServices.java109
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java258
-rw-r--r--services/core/java/com/android/server/notification/NotificationUsageStats.java9
-rw-r--r--services/core/java/com/android/server/notification/RankingConfig.java3
-rw-r--r--services/core/java/com/android/server/notification/RankingHelper.java61
-rw-r--r--services/core/java/com/android/server/notification/ScheduleCalendar.java3
-rw-r--r--services/core/java/com/android/server/notification/ZenModeHelper.java5
-rw-r--r--services/core/java/com/android/server/oemlock/OemLockService.java20
-rw-r--r--services/core/java/com/android/server/om/IdmapManager.java16
-rw-r--r--services/core/java/com/android/server/pm/BackgroundDexOptService.java6
-rw-r--r--services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java33
-rw-r--r--services/core/java/com/android/server/pm/OtaDexoptService.java8
-rw-r--r--services/core/java/com/android/server/pm/PackageDexOptimizer.java32
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerService.java12
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerSession.java131
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerException.java5
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java351
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java14
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerShellCommand.java28
-rw-r--r--services/core/java/com/android/server/pm/PackageSetting.java4
-rw-r--r--services/core/java/com/android/server/pm/SettingBase.java1
-rw-r--r--services/core/java/com/android/server/pm/Settings.java35
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java43
-rw-r--r--services/core/java/com/android/server/pm/dex/DexoptUtils.java61
-rw-r--r--services/core/java/com/android/server/policy/AccessibilityShortcutController.java12
-rw-r--r--services/core/java/com/android/server/policy/LegacyGlobalActions.java13
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java403
-rw-r--r--services/core/java/com/android/server/policy/StatusBarController.java8
-rw-r--r--services/core/java/com/android/server/policy/WindowOrientationListener.java8
-rw-r--r--services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java46
-rw-r--r--services/core/java/com/android/server/power/PowerManagerService.java28
-rw-r--r--services/core/java/com/android/server/power/ShutdownThread.java128
-rw-r--r--services/core/java/com/android/server/search/SearchManagerService.java38
-rw-r--r--services/core/java/com/android/server/stats/StatsCompanionService.java259
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java7
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarManagerService.java122
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarShellCommand.java15
-rw-r--r--services/core/java/com/android/server/timezone/IntentHelper.java21
-rw-r--r--services/core/java/com/android/server/timezone/IntentHelperImpl.java66
-rw-r--r--services/core/java/com/android/server/timezone/PackageTracker.java58
-rw-r--r--services/core/java/com/android/server/timezone/RulesManagerService.java46
-rw-r--r--services/core/java/com/android/server/timezone/TimeZoneUpdateIdler.java100
-rw-r--r--services/core/java/com/android/server/twilight/TwilightState.java23
-rw-r--r--services/core/java/com/android/server/utils/ManagedApplicationService.java17
-rw-r--r--services/core/java/com/android/server/utils/PriorityDump.java14
-rw-r--r--services/core/java/com/android/server/vr/VrManagerService.java52
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java63
-rw-r--r--services/core/java/com/android/server/webkit/SystemImpl.java4
-rw-r--r--services/core/java/com/android/server/webkit/WebViewUpdater.java1
-rw-r--r--services/core/java/com/android/server/wm/AppWindowAnimator.java2
-rw-r--r--services/core/java/com/android/server/wm/AppWindowContainerController.java46
-rw-r--r--services/core/java/com/android/server/wm/AppWindowToken.java175
-rw-r--r--services/core/java/com/android/server/wm/BoundsAnimationController.java41
-rw-r--r--services/core/java/com/android/server/wm/BoundsAnimationTarget.java2
-rw-r--r--services/core/java/com/android/server/wm/ConfigurationContainer.java142
-rw-r--r--services/core/java/com/android/server/wm/ConfigurationContainerListener.java27
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java50
-rw-r--r--services/core/java/com/android/server/wm/DockedStackDividerController.java3
-rw-r--r--services/core/java/com/android/server/wm/PinnedStackWindowController.java11
-rw-r--r--services/core/java/com/android/server/wm/PinnedStackWindowListener.java3
-rw-r--r--services/core/java/com/android/server/wm/RootWindowContainer.java77
-rw-r--r--services/core/java/com/android/server/wm/ScreenRotationAnimation.java12
-rw-r--r--services/core/java/com/android/server/wm/StackWindowController.java16
-rw-r--r--services/core/java/com/android/server/wm/Task.java28
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotController.java6
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotPersister.java4
-rw-r--r--services/core/java/com/android/server/wm/TaskStack.java85
-rw-r--r--services/core/java/com/android/server/wm/TaskWindowContainerController.java27
-rw-r--r--services/core/java/com/android/server/wm/WindowAnimator.java1
-rw-r--r--services/core/java/com/android/server/wm/WindowContainer.java28
-rw-r--r--services/core/java/com/android/server/wm/WindowContainerController.java31
-rw-r--r--services/core/java/com/android/server/wm/WindowContainerListener.java3
-rw-r--r--services/core/java/com/android/server/wm/WindowLayersController.java5
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java47
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java338
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java33
-rw-r--r--services/core/java/com/android/server/wm/WindowSurfacePlacer.java13
-rw-r--r--services/core/java/com/android/server/wm/WindowToken.java7
-rw-r--r--services/core/jni/BroadcastRadio/NativeCallbackThread.cpp14
-rw-r--r--services/core/jni/BroadcastRadio/Tuner.cpp12
-rw-r--r--services/core/jni/BroadcastRadio/regions.cpp10
-rw-r--r--services/core/jni/com_android_server_VibratorService.cpp6
-rw-r--r--services/core/jni/com_android_server_am_BatteryStatsService.cpp118
-rw-r--r--services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp7
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java142
-rw-r--r--services/java/com/android/server/SystemServer.java63
-rw-r--r--services/net/java/android/net/ip/InterfaceController.java162
-rw-r--r--services/net/java/android/net/ip/IpManager.java146
-rw-r--r--services/net/java/android/net/ip/IpReachabilityMonitor.java42
-rw-r--r--services/net/java/android/net/netlink/ConntrackMessage.java117
-rw-r--r--services/net/java/android/net/netlink/NetlinkSocket.java41
-rw-r--r--services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java2
-rw-r--r--services/net/java/android/net/netlink/StructNfGenMsg.java51
-rw-r--r--services/net/java/android/net/netlink/StructNlAttr.java100
-rw-r--r--services/print/java/com/android/server/print/PrintManagerService.java55
-rw-r--r--services/robotests/Android.mk77
-rw-r--r--services/robotests/src/com/android/server/backup/TransportManagerTest.java571
-rw-r--r--services/robotests/src/com/android/server/backup/testing/BackupTransportStub.java179
-rw-r--r--services/robotests/src/com/android/server/backup/testing/DefaultPackageManagerWithQueryIntentServicesAsUser.java43
-rw-r--r--services/robotests/src/com/android/server/backup/testing/ShadowBackupTransportStub.java40
-rw-r--r--services/robotests/src/com/android/server/backup/testing/ShadowContextImplForBackup.java64
-rw-r--r--services/robotests/src/com/android/server/backup/testing/TransportBoundListenerStub.java64
-rw-r--r--services/robotests/src/com/android/server/backup/testing/TransportReadyCallbackStub.java55
-rw-r--r--services/tests/notification/AndroidTest.xml2
-rw-r--r--services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java46
-rw-r--r--services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java176
-rw-r--r--services/tests/notification/src/com/android/server/notification/RankingHelperTest.java134
-rw-r--r--services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java39
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/MagnificationGestureHandlerTest.java535
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java13
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java21
-rw-r--r--services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java47
-rw-r--r--services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java23
-rw-r--r--services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java24
-rw-r--r--services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java32
-rw-r--r--services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java117
-rw-r--r--services/tests/servicestests/src/com/android/server/am/UserControllerTest.java23
-rw-r--r--services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java155
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java12
-rw-r--r--services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java20
-rw-r--r--services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java15
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java4
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java196
-rw-r--r--services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java33
-rw-r--r--services/tests/servicestests/src/com/android/server/testutils/OffsettableClock.java79
-rw-r--r--services/tests/servicestests/src/com/android/server/testutils/TestHandler.java156
-rw-r--r--services/tests/servicestests/src/com/android/server/testutils/TestUtils.java (renamed from services/tests/servicestests/src/com/android/server/testutis/TestUtils.java)18
-rw-r--r--services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java110
-rw-r--r--services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java42
-rw-r--r--services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java18
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java32
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java126
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java17
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java27
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java4
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java56
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java13
-rw-r--r--services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java4
-rw-r--r--services/usb/java/com/android/server/usb/UsbHostManager.java40
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/ByteStream.java52
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb10ACHeader.java (renamed from services/usb/java/com/android/server/usb/descriptors/UsbACHeader.java)51
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb10ACInputTerminal.java (renamed from services/usb/java/com/android/server/usb/descriptors/UsbACInputTerminal.java)22
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb10ACMixerUnit.java108
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb10ACOutputTerminal.java (renamed from services/usb/java/com/android/server/usb/descriptors/UsbACOutputTerminal.java)17
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatI.java (renamed from services/usb/java/com/android/server/usb/descriptors/UsbASFormatI.java)45
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatII.java (renamed from services/usb/java/com/android/server/usb/descriptors/UsbASFormatII.java)37
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb10ASGeneral.java (renamed from services/usb/java/com/android/server/usb/descriptors/UsbASGeneral.java)23
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ACHeader.java62
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ACInputTerminal.java86
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ACMixerUnit.java56
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ACOutputTerminal.java79
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatI.java69
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatII.java72
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIIEx.java78
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIII.java63
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/Usb20ASGeneral.java104
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java4
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java2
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java4
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java4
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACHeaderInterface.java56
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java91
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACInterfaceUnparsed.java28
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java19
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java54
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java13
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java19
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java73
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java6
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java20
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java63
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java71
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java51
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java119
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java23
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java13
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java29
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java15
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java15
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java15
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java4
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java4
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/report/HTMLReportCanvas.java97
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java572
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java174
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/report/Reporter.java40
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/report/Reporting.java12
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java106
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java59
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java46
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java63
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java56
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java42
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java83
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java145
-rw-r--r--services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java41
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java15
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java5
304 files changed, 21779 insertions, 11636 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
index 7324b82351f6..c60647fada09 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java
@@ -417,7 +417,8 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo
final boolean triggerable = (mEnabledFeatures
& FLAG_FEATURE_TRIGGERED_SCREEN_MAGNIFIER) != 0;
mMagnificationGestureHandler = new MagnificationGestureHandler(
- mContext, mAms, detectControlGestures, triggerable);
+ mContext, mAms.getMagnificationController(),
+ detectControlGestures, triggerable);
addFirstEventHandler(mMagnificationGestureHandler);
}
diff --git a/services/accessibility/java/com/android/server/accessibility/GestureUtils.java b/services/accessibility/java/com/android/server/accessibility/GestureUtils.java
index bc761914caf2..abfdb683c04c 100644
--- a/services/accessibility/java/com/android/server/accessibility/GestureUtils.java
+++ b/services/accessibility/java/com/android/server/accessibility/GestureUtils.java
@@ -12,32 +12,27 @@ final class GestureUtils {
/* cannot be instantiated */
}
- public static boolean isTap(MotionEvent down, MotionEvent up, int tapTimeSlop,
- int tapDistanceSlop, int actionIndex) {
- return eventsWithinTimeAndDistanceSlop(down, up, tapTimeSlop, tapDistanceSlop, actionIndex);
- }
-
public static boolean isMultiTap(MotionEvent firstUp, MotionEvent secondUp,
- int multiTapTimeSlop, int multiTapDistanceSlop, int actionIndex) {
+ int multiTapTimeSlop, int multiTapDistanceSlop) {
+ if (firstUp == null || secondUp == null) return false;
return eventsWithinTimeAndDistanceSlop(firstUp, secondUp, multiTapTimeSlop,
- multiTapDistanceSlop, actionIndex);
+ multiTapDistanceSlop);
}
private static boolean eventsWithinTimeAndDistanceSlop(MotionEvent first, MotionEvent second,
- int timeout, int distance, int actionIndex) {
+ int timeout, int distance) {
if (isTimedOut(first, second, timeout)) {
return false;
}
- final double deltaMove = computeDistance(first, second, actionIndex);
+ final double deltaMove = distance(first, second);
if (deltaMove >= distance) {
return false;
}
return true;
}
- public static double computeDistance(MotionEvent first, MotionEvent second, int pointerIndex) {
- return MathUtils.dist(first.getX(pointerIndex), first.getY(pointerIndex),
- second.getX(pointerIndex), second.getY(pointerIndex));
+ public static double distance(MotionEvent first, MotionEvent second) {
+ return MathUtils.dist(first.getX(), first.getY(), second.getX(), second.getY());
}
public static boolean isTimedOut(MotionEvent firstUp, MotionEvent secondUp, int timeout) {
@@ -54,7 +49,6 @@ final class GestureUtils {
/**
* Determines whether a two pointer gesture is a dragging one.
*
- * @param event The event with the pointer data.
* @return True if the gesture is a dragging one.
*/
public static boolean isDraggingGesture(float firstPtrDownX, float firstPtrDownY,
diff --git a/services/accessibility/java/com/android/server/accessibility/MagnificationController.java b/services/accessibility/java/com/android/server/accessibility/MagnificationController.java
index caa74b9512d1..98b8e6b723ac 100644
--- a/services/accessibility/java/com/android/server/accessibility/MagnificationController.java
+++ b/services/accessibility/java/com/android/server/accessibility/MagnificationController.java
@@ -16,11 +16,6 @@
package com.android.server.accessibility;
-import com.android.internal.R;
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.os.SomeArgs;
-import com.android.server.LocalServices;
-
import android.animation.ValueAnimator;
import android.annotation.NonNull;
import android.content.BroadcastReceiver;
@@ -42,6 +37,12 @@ import android.view.View;
import android.view.WindowManagerInternal;
import android.view.animation.DecelerateInterpolator;
+import com.android.internal.R;
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.os.SomeArgs;
+import com.android.server.LocalServices;
+
import java.util.Locale;
/**
@@ -138,7 +139,7 @@ class MagnificationController implements Handler.Callback {
private final WindowManagerInternal mWindowManager;
// Flag indicating that we are registered with window manager.
- private boolean mRegistered;
+ @VisibleForTesting boolean mRegistered;
private boolean mUnregisterPending;
@@ -148,9 +149,14 @@ class MagnificationController implements Handler.Callback {
mHandler = new Handler(context.getMainLooper(), this);
}
- public MagnificationController(Context context, AccessibilityManagerService ams, Object lock,
- Handler handler, WindowManagerInternal windowManagerInternal,
- ValueAnimator valueAnimator, SettingsBridge settingsBridge) {
+ public MagnificationController(
+ Context context,
+ AccessibilityManagerService ams,
+ Object lock,
+ Handler handler,
+ WindowManagerInternal windowManagerInternal,
+ ValueAnimator valueAnimator,
+ SettingsBridge settingsBridge) {
mHandler = handler;
mWindowManager = windowManagerInternal;
mMainThreadId = context.getMainLooper().getThread().getId();
@@ -672,8 +678,7 @@ class MagnificationController implements Handler.Callback {
* Resets magnification if magnification and auto-update are both enabled.
*
* @param animate whether the animate the transition
- * @return {@code true} if magnification was reset to the disabled state,
- * {@code false} if magnification is still active
+ * @return whether was {@link #isMagnifying magnifying}
*/
boolean resetIfNeeded(boolean animate) {
synchronized (mLock) {
@@ -790,6 +795,19 @@ class MagnificationController implements Handler.Callback {
return true;
}
+ @Override
+ public String toString() {
+ return "MagnificationController{" +
+ "mCurrentMagnificationSpec=" + mCurrentMagnificationSpec +
+ ", mMagnificationRegion=" + mMagnificationRegion +
+ ", mMagnificationBounds=" + mMagnificationBounds +
+ ", mUserId=" + mUserId +
+ ", mIdOfLastServiceToMagnify=" + mIdOfLastServiceToMagnify +
+ ", mRegistered=" + mRegistered +
+ ", mUnregisterPending=" + mUnregisterPending +
+ '}';
+ }
+
/**
* Class responsible for animating spec on the main thread and sending spec
* updates to the window manager.
diff --git a/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java b/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java
index 7e82edaae3e5..d6452f87d155 100644
--- a/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java
+++ b/services/accessibility/java/com/android/server/accessibility/MagnificationGestureHandler.java
@@ -16,6 +16,21 @@
package com.android.server.accessibility;
+import static android.view.InputDevice.SOURCE_TOUCHSCREEN;
+import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_MOVE;
+import static android.view.MotionEvent.ACTION_POINTER_DOWN;
+import static android.view.MotionEvent.ACTION_POINTER_UP;
+import static android.view.MotionEvent.ACTION_UP;
+
+import static com.android.server.accessibility.GestureUtils.distance;
+
+import static java.lang.Math.abs;
+import static java.util.Arrays.asList;
+import static java.util.Arrays.copyOfRange;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -27,7 +42,6 @@ import android.util.Slog;
import android.util.TypedValue;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
-import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.MotionEvent.PointerCoords;
@@ -37,6 +51,8 @@ import android.view.ScaleGestureDetector.OnScaleGestureListener;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
+import com.android.internal.annotations.VisibleForTesting;
+
/**
* This class handles magnification in response to touch events.
*
@@ -85,91 +101,109 @@ import android.view.accessibility.AccessibilityEvent;
*
* 7. The magnification scale will be persisted in settings and in the cloud.
*/
+@SuppressWarnings("WeakerAccess")
class MagnificationGestureHandler implements EventStreamTransformation {
private static final String LOG_TAG = "MagnificationEventHandler";
- private static final boolean DEBUG_STATE_TRANSITIONS = false;
- private static final boolean DEBUG_DETECTING = false;
- private static final boolean DEBUG_PANNING = false;
+ private static final boolean DEBUG_ALL = false;
+ private static final boolean DEBUG_STATE_TRANSITIONS = false || DEBUG_ALL;
+ private static final boolean DEBUG_DETECTING = false || DEBUG_ALL;
+ private static final boolean DEBUG_PANNING = false || DEBUG_ALL;
- private static final int STATE_DELEGATING = 1;
- private static final int STATE_DETECTING = 2;
- private static final int STATE_VIEWPORT_DRAGGING = 3;
- private static final int STATE_MAGNIFIED_INTERACTION = 4;
+ /** @see #handleMotionEventStateDelegating */
+ @VisibleForTesting static final int STATE_DELEGATING = 1;
+ /** @see DetectingStateHandler */
+ @VisibleForTesting static final int STATE_DETECTING = 2;
+ /** @see ViewportDraggingStateHandler */
+ @VisibleForTesting static final int STATE_VIEWPORT_DRAGGING = 3;
+ /** @see PanningScalingStateHandler */
+ @VisibleForTesting static final int STATE_PANNING_SCALING = 4;
private static final float MIN_SCALE = 2.0f;
private static final float MAX_SCALE = 5.0f;
- private final MagnificationController mMagnificationController;
- private final DetectingStateHandler mDetectingStateHandler;
- private final MagnifiedContentInteractionStateHandler mMagnifiedContentInteractionStateHandler;
- private final StateViewportDraggingHandler mStateViewportDraggingHandler;
+ @VisibleForTesting final MagnificationController mMagnificationController;
+
+ @VisibleForTesting final DetectingStateHandler mDetectingStateHandler;
+ @VisibleForTesting final PanningScalingStateHandler mPanningScalingStateHandler;
+ @VisibleForTesting final ViewportDraggingStateHandler mViewportDraggingStateHandler;
private final ScreenStateReceiver mScreenStateReceiver;
- private final boolean mDetectTripleTap;
- private final boolean mTriggerable;
+ /**
+ * {@code true} if this detector should detect and respond to triple-tap
+ * gestures for engaging and disengaging magnification,
+ * {@code false} if it should ignore such gestures
+ */
+ final boolean mDetectTripleTap;
+
+ /**
+ * Whether {@link #mShortcutTriggered shortcut} is enabled
+ */
+ final boolean mDetectShortcutTrigger;
- private EventStreamTransformation mNext;
+ EventStreamTransformation mNext;
- private int mCurrentState;
- private int mPreviousState;
+ @VisibleForTesting int mCurrentState;
+ @VisibleForTesting int mPreviousState;
- private boolean mTranslationEnabledBeforePan;
+ @VisibleForTesting boolean mShortcutTriggered;
- private boolean mShortcutTriggered;
+ /**
+ * Time of last {@link MotionEvent#ACTION_DOWN} while in {@link #STATE_DELEGATING}
+ */
+ long mDelegatingStateDownTime;
private PointerCoords[] mTempPointerCoords;
private PointerProperties[] mTempPointerProperties;
- private long mDelegatingStateDownTime;
-
/**
* @param context Context for resolving various magnification-related resources
- * @param ams AccessibilityManagerService used to obtain a {@link MagnificationController}
+ * @param magnificationController the {@link MagnificationController}
+ *
* @param detectTripleTap {@code true} if this detector should detect and respond to triple-tap
- * gestures for engaging and disengaging magnification,
- * {@code false} if it should ignore such gestures
- * @param triggerable {@code true} if this detector should be "triggerable" by some external
- * shortcut invoking {@link #notifyShortcutTriggered}, {@code
- * false} if it should ignore such triggers.
+ * gestures for engaging and disengaging magnification,
+ * {@code false} if it should ignore such gestures
+ * @param detectShortcutTrigger {@code true} if this detector should be "triggerable" by some
+ * external shortcut invoking {@link #notifyShortcutTriggered},
+ * {@code false} if it should ignore such triggers.
*/
- public MagnificationGestureHandler(Context context, AccessibilityManagerService ams,
- boolean detectTripleTap, boolean triggerable) {
- mMagnificationController = ams.getMagnificationController();
+ public MagnificationGestureHandler(Context context,
+ MagnificationController magnificationController,
+ boolean detectTripleTap,
+ boolean detectShortcutTrigger) {
+ mMagnificationController = magnificationController;
+
mDetectingStateHandler = new DetectingStateHandler(context);
- mStateViewportDraggingHandler = new StateViewportDraggingHandler();
- mMagnifiedContentInteractionStateHandler =
- new MagnifiedContentInteractionStateHandler(context);
+ mViewportDraggingStateHandler = new ViewportDraggingStateHandler();
+ mPanningScalingStateHandler =
+ new PanningScalingStateHandler(context);
+
mDetectTripleTap = detectTripleTap;
- mTriggerable = triggerable;
+ mDetectShortcutTrigger = detectShortcutTrigger;
- if (triggerable) {
+ if (mDetectShortcutTrigger) {
mScreenStateReceiver = new ScreenStateReceiver(context, this);
mScreenStateReceiver.register();
} else {
mScreenStateReceiver = null;
}
- transitionToState(STATE_DETECTING);
+ transitionTo(STATE_DETECTING);
}
@Override
public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
- if (!event.isFromSource(InputDevice.SOURCE_TOUCHSCREEN)) {
- if (mNext != null) {
- mNext.onMotionEvent(event, rawEvent, policyFlags);
- }
- return;
- }
- if (!mDetectTripleTap && !mTriggerable) {
- if (mNext != null) {
- dispatchTransformedEvent(event, rawEvent, policyFlags);
- }
+ if ((!mDetectTripleTap && !mDetectShortcutTrigger)
+ || !event.isFromSource(SOURCE_TOUCHSCREEN)) {
+ dispatchTransformedEvent(event, rawEvent, policyFlags);
return;
}
- mMagnifiedContentInteractionStateHandler.onMotionEvent(event, rawEvent, policyFlags);
- switch (mCurrentState) {
+ // Local copy to avoid dispatching the same event to more than one state handler
+ // in case mPanningScalingStateHandler changes mCurrentState
+ int currentState = mCurrentState;
+ mPanningScalingStateHandler.onMotionEvent(event, rawEvent, policyFlags);
+ switch (currentState) {
case STATE_DELEGATING: {
handleMotionEventStateDelegating(event, rawEvent, policyFlags);
}
@@ -179,17 +213,17 @@ class MagnificationGestureHandler implements EventStreamTransformation {
}
break;
case STATE_VIEWPORT_DRAGGING: {
- mStateViewportDraggingHandler.onMotionEvent(event, rawEvent, policyFlags);
+ mViewportDraggingStateHandler.onMotionEvent(event, rawEvent, policyFlags);
}
break;
- case STATE_MAGNIFIED_INTERACTION: {
- // mMagnifiedContentInteractionStateHandler handles events only
+ case STATE_PANNING_SCALING: {
+ // mPanningScalingStateHandler handles events only
// if this is the current state since it uses ScaleGestureDetector
// and a GestureDetector which need well formed event stream.
}
break;
default: {
- throw new IllegalStateException("Unknown state: " + mCurrentState);
+ throw new IllegalStateException("Unknown state: " + currentState);
}
}
}
@@ -215,8 +249,8 @@ class MagnificationGestureHandler implements EventStreamTransformation {
@Override
public void clearEvents(int inputSource) {
- if (inputSource == InputDevice.SOURCE_TOUCHSCREEN) {
- clear();
+ if (inputSource == SOURCE_TOUCHSCREEN) {
+ clearAndTransitionToStateDetecting();
}
if (mNext != null) {
@@ -229,20 +263,25 @@ class MagnificationGestureHandler implements EventStreamTransformation {
if (mScreenStateReceiver != null) {
mScreenStateReceiver.unregister();
}
- clear();
+ clearAndTransitionToStateDetecting();
}
void notifyShortcutTriggered() {
- if (mTriggerable) {
- if (mMagnificationController.resetIfNeeded(true)) {
- clear();
+ if (mDetectShortcutTrigger) {
+ boolean wasMagnifying = mMagnificationController.resetIfNeeded(/* animate */ true);
+ if (wasMagnifying) {
+ clearAndTransitionToStateDetecting();
} else {
- setMagnificationShortcutTriggered(!mShortcutTriggered);
+ toggleShortcutTriggered();
}
}
}
- private void setMagnificationShortcutTriggered(boolean state) {
+ private void toggleShortcutTriggered() {
+ setShortcutTriggered(!mShortcutTriggered);
+ }
+
+ private void setShortcutTriggered(boolean state) {
if (mShortcutTriggered == state) {
return;
}
@@ -251,27 +290,25 @@ class MagnificationGestureHandler implements EventStreamTransformation {
mMagnificationController.setForceShowMagnifiableBounds(state);
}
- private void clear() {
+ void clearAndTransitionToStateDetecting() {
+ setShortcutTriggered(false);
mCurrentState = STATE_DETECTING;
- setMagnificationShortcutTriggered(false);
mDetectingStateHandler.clear();
- mStateViewportDraggingHandler.clear();
- mMagnifiedContentInteractionStateHandler.clear();
+ mViewportDraggingStateHandler.clear();
+ mPanningScalingStateHandler.clear();
}
private void handleMotionEventStateDelegating(MotionEvent event,
MotionEvent rawEvent, int policyFlags) {
- switch (event.getActionMasked()) {
- case MotionEvent.ACTION_DOWN: {
- mDelegatingStateDownTime = event.getDownTime();
- }
- break;
- case MotionEvent.ACTION_UP: {
- if (mDetectingStateHandler.mDelayedEventQueue == null) {
- transitionToState(STATE_DETECTING);
- }
- }
- break;
+ if (event.getActionMasked() == ACTION_UP) {
+ transitionTo(STATE_DETECTING);
+ }
+ delegateEvent(event, rawEvent, policyFlags);
+ }
+
+ void delegateEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
+ mDelegatingStateDownTime = event.getDownTime();
}
if (mNext != null) {
// We cache some events to see if the user wants to trigger magnification.
@@ -287,13 +324,15 @@ class MagnificationGestureHandler implements EventStreamTransformation {
private void dispatchTransformedEvent(MotionEvent event, MotionEvent rawEvent,
int policyFlags) {
- // If the event is within the magnified portion of the screen we have
+ if (mNext == null) return; // Nowhere to dispatch to
+
+ // If the touchscreen event is within the magnified portion of the screen we have
// to change its location to be where the user thinks he is poking the
// UI which may have been magnified and panned.
- final float eventX = event.getX();
- final float eventY = event.getY();
if (mMagnificationController.isMagnifying()
- && mMagnificationController.magnificationRegionContains(eventX, eventY)) {
+ && event.isFromSource(SOURCE_TOUCHSCREEN)
+ && mMagnificationController.magnificationRegionContains(
+ event.getX(), event.getY())) {
final float scale = mMagnificationController.getScale();
final float scaledOffsetX = mMagnificationController.getOffsetX();
final float scaledOffsetY = mMagnificationController.getOffsetY();
@@ -347,34 +386,27 @@ class MagnificationGestureHandler implements EventStreamTransformation {
return mTempPointerProperties;
}
- private void transitionToState(int state) {
+ private void transitionTo(int state) {
if (DEBUG_STATE_TRANSITIONS) {
- switch (state) {
- case STATE_DELEGATING: {
- Slog.i(LOG_TAG, "mCurrentState: STATE_DELEGATING");
- }
- break;
- case STATE_DETECTING: {
- Slog.i(LOG_TAG, "mCurrentState: STATE_DETECTING");
- }
- break;
- case STATE_VIEWPORT_DRAGGING: {
- Slog.i(LOG_TAG, "mCurrentState: STATE_VIEWPORT_DRAGGING");
- }
- break;
- case STATE_MAGNIFIED_INTERACTION: {
- Slog.i(LOG_TAG, "mCurrentState: STATE_MAGNIFIED_INTERACTION");
- }
- break;
- default: {
- throw new IllegalArgumentException("Unknown state: " + state);
- }
- }
+ Slog.i(LOG_TAG, (stateToString(mCurrentState) + " -> " + stateToString(state)
+ + " at " + asList(copyOfRange(new RuntimeException().getStackTrace(), 1, 5)))
+ .replace(getClass().getName(), ""));
}
mPreviousState = mCurrentState;
mCurrentState = state;
}
+ private static String stateToString(int state) {
+ switch (state) {
+ case STATE_DELEGATING: return "STATE_DELEGATING";
+ case STATE_DETECTING: return "STATE_DETECTING";
+ case STATE_VIEWPORT_DRAGGING: return "STATE_VIEWPORT_DRAGGING";
+ case STATE_PANNING_SCALING: return "STATE_PANNING_SCALING";
+ case 0: return "0";
+ default: throw new IllegalArgumentException("Unknown state: " + state);
+ }
+ }
+
private interface MotionEventHandler {
void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags);
@@ -384,21 +416,20 @@ class MagnificationGestureHandler implements EventStreamTransformation {
/**
* This class determines if the user is performing a scale or pan gesture.
+ *
+ * @see #STATE_PANNING_SCALING
*/
- private final class MagnifiedContentInteractionStateHandler extends SimpleOnGestureListener
+ final class PanningScalingStateHandler extends SimpleOnGestureListener
implements OnScaleGestureListener, MotionEventHandler {
private final ScaleGestureDetector mScaleGestureDetector;
-
private final GestureDetector mGestureDetector;
+ final float mScalingThreshold;
- private final float mScalingThreshold;
+ float mInitialScaleFactor = -1;
+ boolean mScaling;
- private float mInitialScaleFactor = -1;
-
- private boolean mScaling;
-
- public MagnifiedContentInteractionStateHandler(Context context) {
+ public PanningScalingStateHandler(Context context) {
final TypedValue scaleValue = new TypedValue();
context.getResources().getValue(
com.android.internal.R.dimen.config_screen_magnification_scaling_threshold,
@@ -411,26 +442,39 @@ class MagnificationGestureHandler implements EventStreamTransformation {
@Override
public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ // Dispatches #onScaleBegin, #onScale, #onScaleEnd
mScaleGestureDetector.onTouchEvent(event);
+ // Dispatches #onScroll
mGestureDetector.onTouchEvent(event);
- if (mCurrentState != STATE_MAGNIFIED_INTERACTION) {
+
+ if (mCurrentState != STATE_PANNING_SCALING) {
return;
}
- if (event.getActionMasked() == MotionEvent.ACTION_UP) {
- clear();
- mMagnificationController.persistScale();
- if (mPreviousState == STATE_VIEWPORT_DRAGGING) {
- transitionToState(STATE_VIEWPORT_DRAGGING);
- } else {
- transitionToState(STATE_DETECTING);
- }
+
+ int action = event.getActionMasked();
+ if (action == ACTION_POINTER_UP
+ && event.getPointerCount() == 2 // includes the pointer currently being released
+ && mPreviousState == STATE_VIEWPORT_DRAGGING) {
+
+ persistScaleAndTransitionTo(STATE_VIEWPORT_DRAGGING);
+
+ } else if (action == ACTION_UP) {
+
+ persistScaleAndTransitionTo(STATE_DETECTING);
+
}
}
+ public void persistScaleAndTransitionTo(int state) {
+ mMagnificationController.persistScale();
+ clear();
+ transitionTo(state);
+ }
+
@Override
- public boolean onScroll(MotionEvent first, MotionEvent second, float distanceX,
- float distanceY) {
- if (mCurrentState != STATE_MAGNIFIED_INTERACTION) {
+ public boolean onScroll(MotionEvent first, MotionEvent second,
+ float distanceX, float distanceY) {
+ if (mCurrentState != STATE_PANNING_SCALING) {
return true;
}
if (DEBUG_PANNING) {
@@ -447,14 +491,15 @@ class MagnificationGestureHandler implements EventStreamTransformation {
if (!mScaling) {
if (mInitialScaleFactor < 0) {
mInitialScaleFactor = detector.getScaleFactor();
+ return false;
+ }
+ final float deltaScale = detector.getScaleFactor() - mInitialScaleFactor;
+ if (abs(deltaScale) > mScalingThreshold) {
+ mScaling = true;
+ return true;
} else {
- final float deltaScale = detector.getScaleFactor() - mInitialScaleFactor;
- if (Math.abs(deltaScale) > mScalingThreshold) {
- mScaling = true;
- return true;
- }
+ return false;
}
- return false;
}
final float initialScale = mMagnificationController.getScale();
@@ -485,7 +530,7 @@ class MagnificationGestureHandler implements EventStreamTransformation {
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
- return (mCurrentState == STATE_MAGNIFIED_INTERACTION);
+ return (mCurrentState == STATE_PANNING_SCALING);
}
@Override
@@ -498,60 +543,65 @@ class MagnificationGestureHandler implements EventStreamTransformation {
mInitialScaleFactor = -1;
mScaling = false;
}
+
+ @Override
+ public String toString() {
+ return "MagnifiedContentInteractionStateHandler{" +
+ "mInitialScaleFactor=" + mInitialScaleFactor +
+ ", mScaling=" + mScaling +
+ '}';
+ }
}
/**
* This class handles motion events when the event dispatcher has
* determined that the user is performing a single-finger drag of the
* magnification viewport.
+ *
+ * @see #STATE_VIEWPORT_DRAGGING
*/
- private final class StateViewportDraggingHandler implements MotionEventHandler {
+ final class ViewportDraggingStateHandler implements MotionEventHandler {
+ /** Whether to disable zoom after dragging ends */
+ boolean mZoomedInBeforeDrag;
private boolean mLastMoveOutsideMagnifiedRegion;
@Override
public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
final int action = event.getActionMasked();
switch (action) {
- case MotionEvent.ACTION_DOWN: {
- throw new IllegalArgumentException("Unexpected event type: ACTION_DOWN");
- }
- case MotionEvent.ACTION_POINTER_DOWN: {
+ case ACTION_POINTER_DOWN: {
clear();
- transitionToState(STATE_MAGNIFIED_INTERACTION);
+ transitionTo(STATE_PANNING_SCALING);
}
break;
- case MotionEvent.ACTION_MOVE: {
+ case ACTION_MOVE: {
if (event.getPointerCount() != 1) {
throw new IllegalStateException("Should have one pointer down.");
}
final float eventX = event.getX();
final float eventY = event.getY();
if (mMagnificationController.magnificationRegionContains(eventX, eventY)) {
- if (mLastMoveOutsideMagnifiedRegion) {
- mLastMoveOutsideMagnifiedRegion = false;
- mMagnificationController.setCenter(eventX, eventY, true,
- AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
- } else {
- mMagnificationController.setCenter(eventX, eventY, false,
- AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
- }
+ mMagnificationController.setCenter(eventX, eventY,
+ /* animate */ mLastMoveOutsideMagnifiedRegion,
+ AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
+ mLastMoveOutsideMagnifiedRegion = false;
} else {
mLastMoveOutsideMagnifiedRegion = true;
}
}
break;
- case MotionEvent.ACTION_UP: {
- if (!mTranslationEnabledBeforePan) {
- mMagnificationController.reset(true);
- }
+ case ACTION_UP: {
+ if (!mZoomedInBeforeDrag) zoomOff();
clear();
- transitionToState(STATE_DETECTING);
+ transitionTo(STATE_DETECTING);
}
break;
- case MotionEvent.ACTION_POINTER_UP: {
+
+ case ACTION_DOWN:
+ case ACTION_POINTER_UP: {
throw new IllegalArgumentException(
- "Unexpected event type: ACTION_POINTER_UP");
+ "Unexpected event type: " + MotionEvent.actionToString(action));
}
}
}
@@ -560,211 +610,224 @@ class MagnificationGestureHandler implements EventStreamTransformation {
public void clear() {
mLastMoveOutsideMagnifiedRegion = false;
}
+
+ @Override
+ public String toString() {
+ return "ViewportDraggingStateHandler{" +
+ "mZoomedInBeforeDrag=" + mZoomedInBeforeDrag +
+ ", mLastMoveOutsideMagnifiedRegion=" + mLastMoveOutsideMagnifiedRegion +
+ '}';
+ }
}
/**
* This class handles motion events when the event dispatch has not yet
* determined what the user is doing. It watches for various tap events.
+ *
+ * @see #STATE_DETECTING
*/
- private final class DetectingStateHandler implements MotionEventHandler {
-
- private static final int MESSAGE_ON_ACTION_TAP_AND_HOLD = 1;
+ final class DetectingStateHandler implements MotionEventHandler, Handler.Callback {
+ private static final int MESSAGE_ON_TRIPLE_TAP_AND_HOLD = 1;
private static final int MESSAGE_TRANSITION_TO_DELEGATING_STATE = 2;
- private static final int ACTION_TAP_COUNT = 3;
-
- private final int mTapTimeSlop = ViewConfiguration.getJumpTapTimeout();
-
- private final int mMultiTapTimeSlop;
-
- private final int mTapDistanceSlop;
-
- private final int mMultiTapDistanceSlop;
+ final int mLongTapMinDelay = ViewConfiguration.getJumpTapTimeout();
+ final int mSwipeMinDistance;
+ final int mMultiTapMaxDelay;
+ final int mMultiTapMaxDistance;
private MotionEventInfo mDelayedEventQueue;
+ MotionEvent mLastDown;
+ private MotionEvent mPreLastDown;
+ private MotionEvent mLastUp;
+ private MotionEvent mPreLastUp;
- private MotionEvent mLastDownEvent;
-
- private MotionEvent mLastTapUpEvent;
-
- private int mTapCount;
+ Handler mHandler = new Handler(this);
public DetectingStateHandler(Context context) {
- mMultiTapTimeSlop = ViewConfiguration.getDoubleTapTimeout()
+ mMultiTapMaxDelay = ViewConfiguration.getDoubleTapTimeout()
+ context.getResources().getInteger(
com.android.internal.R.integer.config_screen_magnification_multi_tap_adjustment);
- mTapDistanceSlop = ViewConfiguration.get(context).getScaledTouchSlop();
- mMultiTapDistanceSlop = ViewConfiguration.get(context).getScaledDoubleTapSlop();
- }
-
- private final Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message message) {
- final int type = message.what;
- switch (type) {
- case MESSAGE_ON_ACTION_TAP_AND_HOLD: {
- MotionEvent event = (MotionEvent) message.obj;
- final int policyFlags = message.arg1;
- onActionTapAndHold(event, policyFlags);
- }
- break;
- case MESSAGE_TRANSITION_TO_DELEGATING_STATE: {
- transitionToState(STATE_DELEGATING);
- sendDelayedMotionEvents();
- clear();
- }
- break;
- default: {
- throw new IllegalArgumentException("Unknown message type: " + type);
- }
+ mSwipeMinDistance = ViewConfiguration.get(context).getScaledTouchSlop();
+ mMultiTapMaxDistance = ViewConfiguration.get(context).getScaledDoubleTapSlop();
+ }
+
+ @Override
+ public boolean handleMessage(Message message) {
+ final int type = message.what;
+ switch (type) {
+ case MESSAGE_ON_TRIPLE_TAP_AND_HOLD: {
+ onTripleTapAndHold(/* down */ (MotionEvent) message.obj);
+ }
+ break;
+ case MESSAGE_TRANSITION_TO_DELEGATING_STATE: {
+ transitionToDelegatingState(/* andClear */ true);
+ }
+ break;
+ default: {
+ throw new IllegalArgumentException("Unknown message type: " + type);
}
}
- };
+ return true;
+ }
@Override
public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
cacheDelayedMotionEvent(event, rawEvent, policyFlags);
- final int action = event.getActionMasked();
- switch (action) {
+ switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
+
mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE);
+
if (!mMagnificationController.magnificationRegionContains(
event.getX(), event.getY())) {
- transitionToDelegatingState(!mShortcutTriggered);
- return;
- }
- if (mShortcutTriggered) {
- Message message = mHandler.obtainMessage(MESSAGE_ON_ACTION_TAP_AND_HOLD,
- policyFlags, 0, event);
- mHandler.sendMessageDelayed(message,
- ViewConfiguration.getLongPressTimeout());
- return;
- }
- if (mDetectTripleTap) {
- if ((mTapCount == ACTION_TAP_COUNT - 1) && (mLastDownEvent != null)
- && GestureUtils.isMultiTap(mLastDownEvent, event, mMultiTapTimeSlop,
- mMultiTapDistanceSlop, 0)) {
- Message message = mHandler.obtainMessage(MESSAGE_ON_ACTION_TAP_AND_HOLD,
- policyFlags, 0, event);
- mHandler.sendMessageDelayed(message,
- ViewConfiguration.getLongPressTimeout());
- } else if (mTapCount < ACTION_TAP_COUNT) {
- Message message = mHandler.obtainMessage(
- MESSAGE_TRANSITION_TO_DELEGATING_STATE);
- mHandler.sendMessageDelayed(message, mMultiTapTimeSlop);
- }
- clearLastDownEvent();
- mLastDownEvent = MotionEvent.obtain(event);
- } else if (mMagnificationController.isMagnifying()) {
- // If magnified, consume an ACTION_DOWN until mMultiTapTimeSlop or
- // mTapDistanceSlop is reached to ensure MAGNIFIED_INTERACTION is reachable.
- Message message = mHandler.obtainMessage(
- MESSAGE_TRANSITION_TO_DELEGATING_STATE);
- mHandler.sendMessageDelayed(message, mMultiTapTimeSlop);
- return;
+
+ transitionToDelegatingState(/* andClear */ !mShortcutTriggered);
+
+ } else if (isMultiTapTriggered(2 /* taps */)) {
+
+ // 3tap and hold
+ delayedTransitionToDraggingState(event);
+
+ } else if (mDetectTripleTap
+ // If magnified, delay an ACTION_DOWN for mMultiTapMaxDelay
+ // to ensure reachability of
+ // STATE_PANNING_SCALING(triggerable with ACTION_POINTER_DOWN)
+ || mMagnificationController.isMagnifying()) {
+
+ delayedTransitionToDelegatingState();
+
} else {
- transitionToDelegatingState(true);
- return;
+
+ // Delegate pending events without delay
+ transitionToDelegatingState(/* andClear */ true);
}
}
break;
- case MotionEvent.ACTION_POINTER_DOWN: {
+ case ACTION_POINTER_DOWN: {
if (mMagnificationController.isMagnifying()) {
- mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE);
- transitionToState(STATE_MAGNIFIED_INTERACTION);
+ transitionTo(STATE_PANNING_SCALING);
clear();
} else {
- transitionToDelegatingState(true);
+ transitionToDelegatingState(/* andClear */ true);
}
}
break;
- case MotionEvent.ACTION_MOVE: {
- if (mLastDownEvent != null && mTapCount < ACTION_TAP_COUNT - 1) {
- final double distance = GestureUtils.computeDistance(mLastDownEvent,
- event, 0);
- if (Math.abs(distance) > mTapDistanceSlop) {
- transitionToDelegatingState(true);
- }
+ case ACTION_MOVE: {
+ if (isFingerDown()
+ && distance(mLastDown, /* move */ event) > mSwipeMinDistance
+ // For convenience, viewport dragging on 3tap&hold takes precedence
+ // over insta-delegating on 3tap&swipe
+ // (which is a rare combo to be used aside from magnification)
+ && !isMultiTapTriggered(2 /* taps */)) {
+
+ // Swipe detected - delegate skipping timeout
+ transitionToDelegatingState(/* andClear */ true);
}
}
break;
- case MotionEvent.ACTION_UP: {
+ case ACTION_UP: {
+
+ mHandler.removeMessages(MESSAGE_ON_TRIPLE_TAP_AND_HOLD);
+
if (!mMagnificationController.magnificationRegionContains(
event.getX(), event.getY())) {
- transitionToDelegatingState(!mShortcutTriggered);
- return;
- }
- if (mShortcutTriggered) {
- clear();
- onActionTap(event, policyFlags);
- return;
- }
- if (mLastDownEvent == null) {
- return;
- }
- mHandler.removeMessages(MESSAGE_ON_ACTION_TAP_AND_HOLD);
- if (!GestureUtils.isTap(mLastDownEvent, event, mTapTimeSlop,
- mTapDistanceSlop, 0)) {
- transitionToDelegatingState(true);
- return;
- }
- if (mLastTapUpEvent != null && !GestureUtils.isMultiTap(
- mLastTapUpEvent, event, mMultiTapTimeSlop, mMultiTapDistanceSlop, 0)) {
- transitionToDelegatingState(true);
- return;
- }
- mTapCount++;
- if (DEBUG_DETECTING) {
- Slog.i(LOG_TAG, "Tap count:" + mTapCount);
- }
- if (mTapCount == ACTION_TAP_COUNT) {
- clear();
- onActionTap(event, policyFlags);
- return;
+
+ transitionToDelegatingState(/* andClear */ !mShortcutTriggered);
+
+ } else if (isMultiTapTriggered(3 /* taps */)) {
+
+ onTripleTap(/* up */ event);
+
+ } else if (
+ // Possible to be false on: 3tap&drag -> scale -> PTR_UP -> UP
+ isFingerDown()
+ //TODO long tap should never happen here
+ && (timeBetween(mLastDown, /* mLastUp */ event) >= mLongTapMinDelay)
+ || distance(mLastDown, /* mLastUp */ event)
+ >= mSwipeMinDistance) {
+
+ transitionToDelegatingState(/* andClear */ true);
+
}
- clearLastTapUpEvent();
- mLastTapUpEvent = MotionEvent.obtain(event);
- }
- break;
- case MotionEvent.ACTION_POINTER_UP: {
- /* do nothing */
}
break;
}
}
- @Override
- public void clear() {
- setMagnificationShortcutTriggered(false);
- mHandler.removeMessages(MESSAGE_ON_ACTION_TAP_AND_HOLD);
- mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE);
- clearTapDetectionState();
- clearDelayedMotionEvents();
+ public boolean isMultiTapTriggered(int numTaps) {
+
+ // Shortcut acts as the 2 initial taps
+ if (mShortcutTriggered) return tapCount() + 2 >= numTaps;
+
+ return mDetectTripleTap
+ && tapCount() >= numTaps
+ && isMultiTap(mPreLastDown, mLastDown)
+ && isMultiTap(mPreLastUp, mLastUp);
}
- private void clearTapDetectionState() {
- mTapCount = 0;
- clearLastTapUpEvent();
- clearLastDownEvent();
+ private boolean isMultiTap(MotionEvent first, MotionEvent second) {
+ return GestureUtils.isMultiTap(first, second, mMultiTapMaxDelay, mMultiTapMaxDistance);
}
- private void clearLastTapUpEvent() {
- if (mLastTapUpEvent != null) {
- mLastTapUpEvent.recycle();
- mLastTapUpEvent = null;
- }
+ public boolean isFingerDown() {
+ return mLastDown != null;
}
- private void clearLastDownEvent() {
- if (mLastDownEvent != null) {
- mLastDownEvent.recycle();
- mLastDownEvent = null;
- }
+ private long timeBetween(@Nullable MotionEvent a, @Nullable MotionEvent b) {
+ if (a == null && b == null) return 0;
+ return abs(timeOf(a) - timeOf(b));
+ }
+
+ /**
+ * Nullsafe {@link MotionEvent#getEventTime} that interprets null event as something that
+ * has happened long enough ago to be gone from the event queue.
+ * Thus the time for a null event is a small number, that is below any other non-null
+ * event's time.
+ *
+ * @return {@link MotionEvent#getEventTime}, or {@link Long#MIN_VALUE} if the event is null
+ */
+ private long timeOf(@Nullable MotionEvent event) {
+ return event != null ? event.getEventTime() : Long.MIN_VALUE;
+ }
+
+ public int tapCount() {
+ return MotionEventInfo.countOf(mDelayedEventQueue, ACTION_UP);
}
+ /** -> {@link #STATE_DELEGATING} */
+ public void delayedTransitionToDelegatingState() {
+ mHandler.sendEmptyMessageDelayed(
+ MESSAGE_TRANSITION_TO_DELEGATING_STATE,
+ mMultiTapMaxDelay);
+ }
+
+ /** -> {@link #STATE_VIEWPORT_DRAGGING} */
+ public void delayedTransitionToDraggingState(MotionEvent event) {
+ mHandler.sendMessageDelayed(
+ mHandler.obtainMessage(MESSAGE_ON_TRIPLE_TAP_AND_HOLD, event),
+ ViewConfiguration.getLongPressTimeout());
+ }
+
+ @Override
+ public void clear() {
+ setShortcutTriggered(false);
+ mHandler.removeMessages(MESSAGE_ON_TRIPLE_TAP_AND_HOLD);
+ mHandler.removeMessages(MESSAGE_TRANSITION_TO_DELEGATING_STATE);
+ clearDelayedMotionEvents();
+ }
+
+
private void cacheDelayedMotionEvent(MotionEvent event, MotionEvent rawEvent,
int policyFlags) {
+ if (event.getActionMasked() == ACTION_DOWN) {
+ mPreLastDown = mLastDown;
+ mLastDown = event;
+ } else if (event.getActionMasked() == ACTION_UP) {
+ mPreLastUp = mLastUp;
+ mLastUp = event;
+ }
+
MotionEventInfo info = MotionEventInfo.obtain(event, rawEvent,
policyFlags);
if (mDelayedEventQueue == null) {
@@ -782,8 +845,13 @@ class MagnificationGestureHandler implements EventStreamTransformation {
while (mDelayedEventQueue != null) {
MotionEventInfo info = mDelayedEventQueue;
mDelayedEventQueue = info.mNext;
- MagnificationGestureHandler.this.onMotionEvent(info.mEvent, info.mRawEvent,
- info.mPolicyFlags);
+
+ // Because MagnifiedInteractionStateHandler requires well-formed event stream
+ mPanningScalingStateHandler.onMotionEvent(
+ info.event, info.rawEvent, info.policyFlags);
+
+ delegateEvent(info.event, info.rawEvent, info.policyFlags);
+
info.recycle();
}
}
@@ -794,91 +862,136 @@ class MagnificationGestureHandler implements EventStreamTransformation {
mDelayedEventQueue = info.mNext;
info.recycle();
}
+ mPreLastDown = null;
+ mPreLastUp = null;
+ mLastDown = null;
+ mLastUp = null;
}
- private void transitionToDelegatingState(boolean andClear) {
- transitionToState(STATE_DELEGATING);
+ void transitionToDelegatingState(boolean andClear) {
+ transitionTo(STATE_DELEGATING);
sendDelayedMotionEvents();
- if (andClear) {
- clear();
- }
+ if (andClear) clear();
}
- private void onActionTap(MotionEvent up, int policyFlags) {
+ private void onTripleTap(MotionEvent up) {
+
if (DEBUG_DETECTING) {
- Slog.i(LOG_TAG, "onActionTap()");
+ Slog.i(LOG_TAG, "onTripleTap(); delayed: "
+ + MotionEventInfo.toString(mDelayedEventQueue));
}
+ clear();
- if (!mMagnificationController.isMagnifying()) {
- final float targetScale = mMagnificationController.getPersistedScale();
- final float scale = MathUtils.constrain(targetScale, MIN_SCALE, MAX_SCALE);
- mMagnificationController.setScaleAndCenter(scale, up.getX(), up.getY(), true,
- AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
+ // Toggle zoom
+ if (mMagnificationController.isMagnifying()) {
+ zoomOff();
} else {
- mMagnificationController.reset(true);
+ zoomOn(up.getX(), up.getY());
}
}
- private void onActionTapAndHold(MotionEvent down, int policyFlags) {
- if (DEBUG_DETECTING) {
- Slog.i(LOG_TAG, "onActionTapAndHold()");
- }
+ void onTripleTapAndHold(MotionEvent down) {
+ if (DEBUG_DETECTING) Slog.i(LOG_TAG, "onTripleTapAndHold()");
clear();
- mTranslationEnabledBeforePan = mMagnificationController.isMagnifying();
- final float targetScale = mMagnificationController.getPersistedScale();
- final float scale = MathUtils.constrain(targetScale, MIN_SCALE, MAX_SCALE);
- mMagnificationController.setScaleAndCenter(scale, down.getX(), down.getY(), true,
- AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
+ mViewportDraggingStateHandler.mZoomedInBeforeDrag =
+ mMagnificationController.isMagnifying();
+
+ zoomOn(down.getX(), down.getY());
- transitionToState(STATE_VIEWPORT_DRAGGING);
+ transitionTo(STATE_VIEWPORT_DRAGGING);
+ }
+
+ @Override
+ public String toString() {
+ return "DetectingStateHandler{" +
+ "tapCount()=" + tapCount() +
+ ", mDelayedEventQueue=" + MotionEventInfo.toString(mDelayedEventQueue) +
+ '}';
}
}
+ private void zoomOn(float centerX, float centerY) {
+ final float scale = MathUtils.constrain(
+ mMagnificationController.getPersistedScale(),
+ MIN_SCALE, MAX_SCALE);
+ mMagnificationController.setScaleAndCenter(
+ scale, centerX, centerY,
+ /* animate */ true,
+ AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
+ }
+
+ private void zoomOff() {
+ mMagnificationController.reset(/* animate */ true);
+ }
+
+ private static MotionEvent recycleAndNullify(@Nullable MotionEvent event) {
+ if (event != null) {
+ event.recycle();
+ }
+ return null;
+ }
+
+ @Override
+ public String toString() {
+ return "MagnificationGestureHandler{" +
+ "mDetectingStateHandler=" + mDetectingStateHandler +
+ ", mMagnifiedInteractionStateHandler=" + mPanningScalingStateHandler +
+ ", mViewportDraggingStateHandler=" + mViewportDraggingStateHandler +
+ ", mDetectTripleTap=" + mDetectTripleTap +
+ ", mDetectShortcutTrigger=" + mDetectShortcutTrigger +
+ ", mCurrentState=" + stateToString(mCurrentState) +
+ ", mPreviousState=" + stateToString(mPreviousState) +
+ ", mShortcutTriggered=" + mShortcutTriggered +
+ ", mDelegatingStateDownTime=" + mDelegatingStateDownTime +
+ ", mMagnificationController=" + mMagnificationController +
+ '}';
+ }
+
private static final class MotionEventInfo {
private static final int MAX_POOL_SIZE = 10;
-
private static final Object sLock = new Object();
-
private static MotionEventInfo sPool;
-
private static int sPoolSize;
private MotionEventInfo mNext;
-
private boolean mInPool;
- public MotionEvent mEvent;
-
- public MotionEvent mRawEvent;
-
- public int mPolicyFlags;
+ public MotionEvent event;
+ public MotionEvent rawEvent;
+ public int policyFlags;
public static MotionEventInfo obtain(MotionEvent event, MotionEvent rawEvent,
int policyFlags) {
synchronized (sLock) {
- MotionEventInfo info;
- if (sPoolSize > 0) {
- sPoolSize--;
- info = sPool;
- sPool = info.mNext;
- info.mNext = null;
- info.mInPool = false;
- } else {
- info = new MotionEventInfo();
- }
+ MotionEventInfo info = obtainInternal();
info.initialize(event, rawEvent, policyFlags);
return info;
}
}
+ @NonNull
+ private static MotionEventInfo obtainInternal() {
+ MotionEventInfo info;
+ if (sPoolSize > 0) {
+ sPoolSize--;
+ info = sPool;
+ sPool = info.mNext;
+ info.mNext = null;
+ info.mInPool = false;
+ } else {
+ info = new MotionEventInfo();
+ }
+ return info;
+ }
+
private void initialize(MotionEvent event, MotionEvent rawEvent,
int policyFlags) {
- mEvent = MotionEvent.obtain(event);
- mRawEvent = MotionEvent.obtain(rawEvent);
- mPolicyFlags = policyFlags;
+ this.event = MotionEvent.obtain(event);
+ this.rawEvent = MotionEvent.obtain(rawEvent);
+ this.policyFlags = policyFlags;
}
public void recycle() {
@@ -897,11 +1010,22 @@ class MagnificationGestureHandler implements EventStreamTransformation {
}
private void clear() {
- mEvent.recycle();
- mEvent = null;
- mRawEvent.recycle();
- mRawEvent = null;
- mPolicyFlags = 0;
+ event = recycleAndNullify(event);
+ rawEvent = recycleAndNullify(rawEvent);
+ policyFlags = 0;
+ }
+
+ static int countOf(MotionEventInfo info, int eventType) {
+ if (info == null) return 0;
+ return (info.event.getAction() == eventType ? 1 : 0)
+ + countOf(info.mNext, eventType);
+ }
+
+ public static String toString(MotionEventInfo info) {
+ return info == null
+ ? ""
+ : MotionEvent.actionToString(info.event.getAction()).replace("ACTION_", "")
+ + " " + MotionEventInfo.toString(info.mNext);
}
}
@@ -927,7 +1051,7 @@ class MagnificationGestureHandler implements EventStreamTransformation {
@Override
public void onReceive(Context context, Intent intent) {
- mGestureHandler.setMagnificationShortcutTriggered(false);
+ mGestureHandler.setShortcutTriggered(false);
}
}
}
diff --git a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
index 3a1de98e739a..a6b81ffff1c1 100644
--- a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
@@ -47,7 +47,7 @@ class UiAutomationManager {
private int mUiAutomationFlags;
private IBinder mUiAutomationServiceOwner;
- private final DeathRecipient mUiAutomationSerivceOwnerDeathRecipient =
+ private final DeathRecipient mUiAutomationServiceOwnerDeathRecipient =
new DeathRecipient() {
@Override
public void binderDied() {
@@ -85,7 +85,7 @@ class UiAutomationManager {
}
try {
- owner.linkToDeath(mUiAutomationSerivceOwnerDeathRecipient, 0);
+ owner.linkToDeath(mUiAutomationServiceOwnerDeathRecipient, 0);
} catch (RemoteException re) {
Slog.e(LOG_TAG, "Couldn't register for the death of a UiTestAutomationService!", re);
return;
@@ -165,12 +165,14 @@ class UiAutomationManager {
mUiAutomationService = null;
mUiAutomationFlags = 0;
if (mUiAutomationServiceOwner != null) {
- mUiAutomationServiceOwner.unlinkToDeath(mUiAutomationSerivceOwnerDeathRecipient, 0);
+ mUiAutomationServiceOwner.unlinkToDeath(mUiAutomationServiceOwnerDeathRecipient, 0);
mUiAutomationServiceOwner = null;
}
}
private class UiAutomationService extends AccessibilityClientConnection {
+ private final Handler mMainHandler;
+
UiAutomationService(Context context, AccessibilityServiceInfo accessibilityServiceInfo,
int id, Handler mainHandler, Object lock,
AccessibilityManagerService.SecurityPolicy securityPolicy,
@@ -178,15 +180,26 @@ class UiAutomationManager {
GlobalActionPerformer globalActionPerfomer) {
super(context, COMPONENT_NAME, accessibilityServiceInfo, id, mainHandler, lock,
securityPolicy, systemSupport, windowManagerInternal, globalActionPerfomer);
+ mMainHandler = mainHandler;
}
void connectServiceUnknownThread() {
// This needs to be done on the main thread
- mEventDispatchHandler.post(() -> {
+ mMainHandler.post(() -> {
try {
- mService = mServiceInterface.asBinder();
- mService.linkToDeath(this, 0);
- mServiceInterface.init(this, mId, mOverlayWindowToken);
+ final IAccessibilityServiceClient serviceInterface;
+ final IBinder service;
+ synchronized (mLock) {
+ serviceInterface = mServiceInterface;
+ mService = (serviceInterface == null) ? null : mServiceInterface.asBinder();
+ service = mService;
+ }
+ // If the serviceInterface is null, the UiAutomation has been shut down on
+ // another thread.
+ if (serviceInterface != null) {
+ service.linkToDeath(this, 0);
+ serviceInterface.init(this, mId, mOverlayWindowToken);
+ }
} catch (RemoteException re) {
Slog.w(LOG_TAG, "Error initialized connection", re);
destroyUiAutomationService();
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 80b54770e4b7..a6aaaa673013 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -2427,14 +2427,14 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
out.attribute(null, "p", Integer.toHexString(widget.provider.tag));
}
if (widget.options != null) {
- out.attribute(null, "min_width", Integer.toHexString(widget.options.getInt(
- AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)));
- out.attribute(null, "min_height", Integer.toHexString(widget.options.getInt(
- AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)));
- out.attribute(null, "max_width", Integer.toHexString(widget.options.getInt(
- AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH)));
- out.attribute(null, "max_height", Integer.toHexString(widget.options.getInt(
- AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)));
+ int minWidth = widget.options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
+ int minHeight = widget.options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
+ int maxWidth = widget.options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
+ int maxHeight = widget.options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);
+ out.attribute(null, "min_width", Integer.toHexString((minWidth > 0) ? minWidth : 0));
+ out.attribute(null, "min_height", Integer.toHexString((minHeight > 0) ? minHeight : 0));
+ out.attribute(null, "max_width", Integer.toHexString((maxWidth > 0) ? maxWidth : 0));
+ out.attribute(null, "max_height", Integer.toHexString((maxHeight > 0) ? maxHeight : 0));
out.attribute(null, "host_category", Integer.toHexString(widget.options.getInt(
AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY)));
}
diff --git a/services/art-profile b/services/art-profile
index 28762a8932db..ae5c909eec59 100644
--- a/services/art-profile
+++ b/services/art-profile
@@ -34,6 +34,28 @@ HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCall
HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->ping()V
HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->setHALInstrumentation()V
HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->asBinder()Landroid/os/IHwBinder;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getHashChain()Ljava/util/ArrayList;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasHDRDisplay()Landroid/hardware/configstore/V1_0/OptionalBool;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasSyncFramework()Landroid/hardware/configstore/V1_0/OptionalBool;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasWideColorDisplay()Landroid/hardware/configstore/V1_0/OptionalBool;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->interfaceChain()Ljava/util/ArrayList;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->interfaceDescriptor()Ljava/lang/String;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->maxFrameBufferAcquiredBuffers()Landroid/hardware/configstore/V1_0/OptionalInt64;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->maxVirtualDisplaySize()Landroid/hardware/configstore/V1_0/OptionalUInt64;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->notifySyspropsChanged()V
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->ping()V
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->presentTimeOffsetFromVSyncNs()Landroid/hardware/configstore/V1_0/OptionalInt64;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->setHALInstrumentation()V
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->startGraphicsAllocatorService()Landroid/hardware/configstore/V1_0/OptionalBool;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useContextPriority()Landroid/hardware/configstore/V1_0/OptionalBool;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useHwcForRGBtoYUV()Landroid/hardware/configstore/V1_0/OptionalBool;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useVrFlinger()Landroid/hardware/configstore/V1_0/OptionalBool;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->vsyncEventPhaseOffsetNs()Landroid/hardware/configstore/V1_0/OptionalInt64;
+HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->vsyncSfEventPhaseOffsetNs()Landroid/hardware/configstore/V1_0/OptionalInt64;
HPLandroid/hardware/usb/V1_0/IUsb;->asBinder()Landroid/os/IHwBinder;
HPLandroid/hardware/usb/V1_0/IUsb;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo;
HPLandroid/hardware/usb/V1_0/IUsb;->getHashChain()Ljava/util/ArrayList;
@@ -70,6 +92,9 @@ HPLandroid/hardware/usb/V1_1/IUsbCallback;->notifySyspropsChanged()V
HPLandroid/hardware/usb/V1_1/IUsbCallback;->ping()V
HPLandroid/hardware/usb/V1_1/IUsbCallback;->setHALInstrumentation()V
HPLandroid/hardware/usb/V1_1/IUsbCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
+HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChip(ILandroid/hardware/wifi/V1_0/IWifi$getChipCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChipIds(Landroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->isStarted()Z
HPLandroid/hardware/wifi/V1_0/IWifi$getChipCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V
HPLandroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
HPLandroid/hardware/wifi/V1_0/IWifi;->asBinder()Landroid/os/IHwBinder;
@@ -88,10 +113,26 @@ HPLandroid/hardware/wifi/V1_0/IWifi;->setHALInstrumentation()V
HPLandroid/hardware/wifi/V1_0/IWifi;->start()Landroid/hardware/wifi/V1_0/WifiStatus;
HPLandroid/hardware/wifi/V1_0/IWifi;->stop()Landroid/hardware/wifi/V1_0/WifiStatus;
HPLandroid/hardware/wifi/V1_0/IWifi;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
+HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;-><init>()V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getApIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getAvailableModes(Landroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiChip$getCapabilitiesCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getMode(Landroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getNanIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getP2pIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getP2pIfaceNamesCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->interfaceChain()Ljava/util/ArrayList;
HPLandroid/hardware/wifi/V1_0/IWifiChip$createRttControllerCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V
HPLandroid/hardware/wifi/V1_0/IWifiChip$createStaIfaceCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V
HPLandroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
HPLandroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$getCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+HPLandroid/hardware/wifi/V1_0/IWifiChip$getDebugHostWakeReasonStatsCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V
HPLandroid/hardware/wifi/V1_0/IWifiChip$getDebugRingBuffersStatusCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
HPLandroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
HPLandroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
@@ -100,6 +141,7 @@ HPLandroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;->onValues(Landroid/
HPLandroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
HPLandroid/hardware/wifi/V1_0/IWifiChip$requestChipDebugInfoCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V
HPLandroid/hardware/wifi/V1_0/IWifiChip;->asBinder()Landroid/os/IHwBinder;
+HPLandroid/hardware/wifi/V1_0/IWifiChip;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiChip;
HPLandroid/hardware/wifi/V1_0/IWifiChip;->configureChip(I)Landroid/hardware/wifi/V1_0/WifiStatus;
HPLandroid/hardware/wifi/V1_0/IWifiChip;->createApIface(Landroid/hardware/wifi/V1_0/IWifiChip$createApIfaceCallback;)V
HPLandroid/hardware/wifi/V1_0/IWifiChip;->createNanIface(Landroid/hardware/wifi/V1_0/IWifiChip$createNanIfaceCallback;)V
@@ -215,7 +257,11 @@ HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->onResults(ILjava
HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->ping()V
HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->setHALInstrumentation()V
HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
+HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;)V
HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getLinkLayerStats(Landroid/hardware/wifi/V1_0/IWifiStaIface$getLinkLayerStatsCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getValidFrequenciesForBand(ILandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;)V
+HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->installApfPacketFilter(ILjava/util/ArrayList;)Landroid/hardware/wifi/V1_0/WifiStatus;
+HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->interfaceChain()Ljava/util/ArrayList;
HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getApfPacketFilterCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V
HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getBackgroundScanCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V
HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
@@ -225,6 +271,7 @@ HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getLinkLayerStatsCallback;->onValues
HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getRoamingCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V
HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->asBinder()Landroid/os/IHwBinder;
+HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiStaIface;
HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->configureRoaming(Landroid/hardware/wifi/V1_0/StaRoamingConfig;)Landroid/hardware/wifi/V1_0/WifiStatus;
HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->disableLinkLayerStatsCollection()Landroid/hardware/wifi/V1_0/WifiStatus;
HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->enableLinkLayerStatsCollection(Z)Landroid/hardware/wifi/V1_0/WifiStatus;
@@ -271,14 +318,25 @@ HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->onRssiThresholdBreach
HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->ping()V
HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->setHALInstrumentation()V
HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
+HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfacePacketStats;-><init>()V
HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfacePacketStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;-><init>()V
+HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/StaLinkLayerRadioStats;-><init>()V
HPLandroid/hardware/wifi/V1_0/StaLinkLayerRadioStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;-><init>()V
HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->readFromParcel(Landroid/os/HwParcel;)V
+HPLandroid/hardware/wifi/V1_0/WifiDebugPacketFateFrameInfo;-><init>()V
HPLandroid/hardware/wifi/V1_0/WifiDebugPacketFateFrameInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;-><init>()V
HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readFromParcel(Landroid/os/HwParcel;)V
+HPLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
+HPLandroid/hardware/wifi/V1_0/WifiStatus;-><init>()V
HPLandroid/hardware/wifi/V1_0/WifiStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/V1_0/WifiStatus;->readFromParcel(Landroid/os/HwParcel;)V
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->asBinder()Landroid/os/IHwBinder;
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo;
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getDebugLevel()I
@@ -376,6 +434,7 @@ HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onStaDeau
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->ping()V
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->setHALInstrumentation()V
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
+HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setPowerSave(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$getMacAddressCallback;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->addExtRadioWork(Ljava/lang/String;IILandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$addExtRadioWorkCallback;)V
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->addRxFilter(B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
@@ -534,20 +593,150 @@ HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->onNetwo
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->ping()V
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->setHALInstrumentation()V
HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
+HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;-><init>()V
+HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readFromParcel(Landroid/os/HwParcel;)V
+HPLandroid/net/apf/ApfFilter$Ra;->generateFilterLocked(Landroid/net/apf/ApfGenerator;)J
HPLandroid/net/apf/ApfFilter$Ra;->matches([BI)Z
+HPLandroid/net/apf/ApfFilter$Ra;->minLifetime([BI)J
+HPLandroid/net/apf/ApfFilter;->beginProgramLocked()Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfFilter;->currentTimeSeconds()J
+HPLandroid/net/apf/ApfFilter;->generateArpFilterLocked(Landroid/net/apf/ApfGenerator;)V
+HPLandroid/net/apf/ApfFilter;->generateIPv4FilterLocked(Landroid/net/apf/ApfGenerator;)V
+HPLandroid/net/apf/ApfFilter;->generateIPv6FilterLocked(Landroid/net/apf/ApfGenerator;)V
+HPLandroid/net/apf/ApfFilter;->installNewProgramLocked()V
+HPLandroid/net/apf/ApfGenerator$Instruction;-><init>(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;)V
+HPLandroid/net/apf/ApfGenerator$Instruction;-><init>(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;Landroid/net/apf/ApfGenerator$Register;)V
+HPLandroid/net/apf/ApfGenerator$Instruction;->calculateImmSize(IZ)B
HPLandroid/net/apf/ApfGenerator$Instruction;->calculateTargetLabelOffset()I
+HPLandroid/net/apf/ApfGenerator$Instruction;->generate([B)V
+HPLandroid/net/apf/ApfGenerator$Instruction;->generateImmSizeField()B
+HPLandroid/net/apf/ApfGenerator$Instruction;->generateInstructionByte()B
HPLandroid/net/apf/ApfGenerator$Instruction;->generatedImmSize()B
+HPLandroid/net/apf/ApfGenerator$Instruction;->setCompareBytes([B)V
+HPLandroid/net/apf/ApfGenerator$Instruction;->setImm(IZ)V
+HPLandroid/net/apf/ApfGenerator$Instruction;->setLabel(Ljava/lang/String;)V
+HPLandroid/net/apf/ApfGenerator$Instruction;->setSignedImm(I)V
+HPLandroid/net/apf/ApfGenerator$Instruction;->setTargetLabel(Ljava/lang/String;)V
+HPLandroid/net/apf/ApfGenerator$Instruction;->setUnsignedImm(I)V
HPLandroid/net/apf/ApfGenerator$Instruction;->shrink()Z
HPLandroid/net/apf/ApfGenerator$Instruction;->size()I
+HPLandroid/net/apf/ApfGenerator$Instruction;->writeValue(I[BI)I
+HPLandroid/net/apf/ApfGenerator;->-get0(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction;
+HPLandroid/net/apf/ApfGenerator;->-get1(Landroid/net/apf/ApfGenerator;)Ljava/util/HashMap;
+HPLandroid/net/apf/ApfGenerator;->-get2(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction;
+HPLandroid/net/apf/ApfGenerator;-><init>()V
+HPLandroid/net/apf/ApfGenerator;->addInstruction(Landroid/net/apf/ApfGenerator$Instruction;)V
+HPLandroid/net/apf/ApfGenerator;->addJump(Ljava/lang/String;)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addJumpIfBytesNotEqual(Landroid/net/apf/ApfGenerator$Register;[BLjava/lang/String;)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addJumpIfR0Equals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addJumpIfR0GreaterThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addJumpIfR0LessThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addJumpIfR0NotEquals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addLoad16(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addLoad32(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addLoad8(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addLoadFromMemory(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->addLoadImmediate(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
+HPLandroid/net/apf/ApfGenerator;->defineLabel(Ljava/lang/String;)Landroid/net/apf/ApfGenerator;
HPLandroid/net/apf/ApfGenerator;->generate()[B
HPLandroid/net/apf/ApfGenerator;->updateInstructionOffsets()I
+HPLandroid/net/dhcp/DhcpAckPacket;->toString()Ljava/lang/String;
+HPLandroid/net/dhcp/DhcpPacket;->checksum(Ljava/nio/ByteBuffer;III)I
+HPLandroid/net/dhcp/DhcpPacket;->decodeFullPacket(Ljava/nio/ByteBuffer;I)Landroid/net/dhcp/DhcpPacket;
+HPLandroid/net/dhcp/DhcpPacket;->fillInPacket(ILjava/net/Inet4Address;Ljava/net/Inet4Address;SSLjava/nio/ByteBuffer;BZ)V
+HPLandroid/net/dhcp/DhcpPacket;->intAbs(S)I
+HPLandroid/net/dhcp/DhcpPacket;->macToString([B)Ljava/lang/String;
+HPLandroid/net/dhcp/DhcpPacket;->readIpAddress(Ljava/nio/ByteBuffer;)Ljava/net/Inet4Address;
+HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->$m$0()V
+HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V
+HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->run()V
+HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->addLogEntry(Ljava/lang/String;)V
+HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->handlePacket([BI)V
+HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->lambda$-android_net_ip_ConnectivityPacketTracker$PacketListener_4824(Ljava/lang/String;)V
+HPLandroid/net/ip/ConnectivityPacketTracker;->-get0(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/os/Handler;
+HPLandroid/net/ip/ConnectivityPacketTracker;->-get1(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/util/LocalLog;
+HPLandroid/net/ip/IpManager$LoggingCallbackWrapper;->log(Ljava/lang/String;)V
+HPLandroid/net/ip/IpManager$RunningState;->processMessage(Landroid/os/Message;)Z
+HPLandroid/net/ip/IpManager;->addAllReachableDnsServers(Landroid/net/LinkProperties;Ljava/lang/Iterable;)V
+HPLandroid/net/ip/IpManager;->assembleLinkProperties()Landroid/net/LinkProperties;
+HPLandroid/net/ip/IpManager;->getLogRecString(Landroid/os/Message;)Ljava/lang/String;
+HPLandroid/net/ip/IpManager;->getWhatToString(I)Ljava/lang/String;
HPLandroid/net/ip/IpReachabilityMonitor$Callback;->notifyLost(Ljava/net/InetAddress;Ljava/lang/String;)V
+HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->evaluateRtNetlinkNeighborMessage(Landroid/net/netlink/RtNetlinkNeighborMessage;J)V
+HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->parseNetlinkMessageBuffer(Ljava/nio/ByteBuffer;J)V
+HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->recvKernelReply()Ljava/nio/ByteBuffer;
+HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->run()V
+HPLandroid/net/ip/IpReachabilityMonitor;->-get0(Landroid/net/ip/IpReachabilityMonitor;)I
+HPLandroid/net/ip/IpReachabilityMonitor;->-get1(Landroid/net/ip/IpReachabilityMonitor;)Ljava/util/Map;
+HPLandroid/net/ip/IpReachabilityMonitor;->-get2(Landroid/net/ip/IpReachabilityMonitor;)Ljava/lang/Object;
+HPLandroid/net/ip/IpReachabilityMonitor;->-get3(Landroid/net/ip/IpReachabilityMonitor;)Z
+HPLandroid/net/ip/IpReachabilityMonitor;->-wrap0(Landroid/net/ip/IpReachabilityMonitor;Ljava/net/InetAddress;)Z
+HPLandroid/net/ip/IpReachabilityMonitor;->isOnLink(Ljava/util/List;Ljava/net/InetAddress;)Z
+HPLandroid/net/ip/IpReachabilityMonitor;->isWatching(Ljava/net/InetAddress;)Z
+HPLandroid/net/ip/IpReachabilityMonitor;->updateLinkProperties(Landroid/net/LinkProperties;)V
+HPLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HPLandroid/net/metrics/INetdEventListener;->onConnectEvent(IIILjava/lang/String;II)V
HPLandroid/net/metrics/INetdEventListener;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V
HPLandroid/net/metrics/INetdEventListener;->onWakeupEvent(Ljava/lang/String;IIJ)V
+HPLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(I)I
+HPLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(S)I
+HPLandroid/net/netlink/NetlinkConstants;->hexify([B)Ljava/lang/String;
+HPLandroid/net/netlink/NetlinkConstants;->stringForNlMsgType(S)Ljava/lang/String;
+HPLandroid/net/netlink/NetlinkMessage;-><init>(Landroid/net/netlink/StructNlMsgHdr;)V
+HPLandroid/net/netlink/NetlinkMessage;->getHeader()Landroid/net/netlink/StructNlMsgHdr;
+HPLandroid/net/netlink/NetlinkMessage;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/NetlinkMessage;
+HPLandroid/net/netlink/NetlinkSocket;->checkTimeout(J)V
+HPLandroid/net/netlink/NetlinkSocket;->recvMessage(IJ)Ljava/nio/ByteBuffer;
+HPLandroid/net/netlink/NetlinkSocket;->recvMessage(J)Ljava/nio/ByteBuffer;
+HPLandroid/net/netlink/RtNetlinkNeighborMessage;-><init>(Landroid/net/netlink/StructNlMsgHdr;)V
+HPLandroid/net/netlink/RtNetlinkNeighborMessage;->findNextAttrOfType(SLjava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr;
+HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getDestination()Ljava/net/InetAddress;
+HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getLinkLayerAddress()[B
+HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getNdHeader()Landroid/net/netlink/StructNdMsg;
+HPLandroid/net/netlink/RtNetlinkNeighborMessage;->parse(Landroid/net/netlink/StructNlMsgHdr;Ljava/nio/ByteBuffer;)Landroid/net/netlink/RtNetlinkNeighborMessage;
+HPLandroid/net/netlink/StructNdMsg;-><init>()V
+HPLandroid/net/netlink/StructNdMsg;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z
+HPLandroid/net/netlink/StructNdMsg;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdMsg;
+HPLandroid/net/netlink/StructNdMsg;->stringForNudState(S)Ljava/lang/String;
+HPLandroid/net/netlink/StructNdaCacheInfo;-><init>()V
+HPLandroid/net/netlink/StructNdaCacheInfo;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z
+HPLandroid/net/netlink/StructNdaCacheInfo;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdaCacheInfo;
+HPLandroid/net/netlink/StructNlAttr;-><init>()V
+HPLandroid/net/netlink/StructNlAttr;->getAlignedLength()I
+HPLandroid/net/netlink/StructNlAttr;->getValueAsByteBuffer()Ljava/nio/ByteBuffer;
+HPLandroid/net/netlink/StructNlAttr;->getValueAsInetAddress()Ljava/net/InetAddress;
+HPLandroid/net/netlink/StructNlAttr;->getValueAsInt(I)I
+HPLandroid/net/netlink/StructNlAttr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr;
HPLandroid/net/netlink/StructNlAttr;->peek(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr;
+HPLandroid/net/netlink/StructNlMsgHdr;-><init>()V
+HPLandroid/net/netlink/StructNlMsgHdr;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z
+HPLandroid/net/netlink/StructNlMsgHdr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlMsgHdr;
HPLandroid/net/util/BlockingSocketReader;->createSocket()Ljava/io/FileDescriptor;
+HPLandroid/net/util/BlockingSocketReader;->isRunning()Z
+HPLandroid/net/util/BlockingSocketReader;->mainLoop()V
+HPLandroid/net/util/ConnectivityPacketSummary;-><init>([B[BI)V
+HPLandroid/net/util/ConnectivityPacketSummary;->getIPv4AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String;
+HPLandroid/net/util/ConnectivityPacketSummary;->getIPv6AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String;
+HPLandroid/net/util/ConnectivityPacketSummary;->getIpAddressString(Ljava/nio/ByteBuffer;I)Ljava/lang/String;
HPLandroid/net/util/ConnectivityPacketSummary;->getMacAddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String;
+HPLandroid/net/util/ConnectivityPacketSummary;->parseARP(Ljava/util/StringJoiner;)V
+HPLandroid/net/util/ConnectivityPacketSummary;->parseEther(Ljava/util/StringJoiner;)V
+HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6(Ljava/util/StringJoiner;)V
+HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborDiscoveryOptions(Ljava/util/StringJoiner;)V
+HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborMessage(Ljava/util/StringJoiner;)V
+HPLandroid/net/util/ConnectivityPacketSummary;->parseIPv4(Ljava/util/StringJoiner;)V
+HPLandroid/net/util/ConnectivityPacketSummary;->parseIPv6(Ljava/util/StringJoiner;)V
+HPLandroid/net/util/ConnectivityPacketSummary;->parseUDP(Ljava/util/StringJoiner;)V
+HPLandroid/net/util/ConnectivityPacketSummary;->summarize([B[BI)Ljava/lang/String;
+HPLandroid/net/util/ConnectivityPacketSummary;->toString()Ljava/lang/String;
+HPLandroid/net/util/NetworkConstants;->asUint(B)I
+HPLandroid/net/util/NetworkConstants;->asUint(S)I
+HPLandroid/net/util/SharedLog;->isRootLogInstance()Z
+HPLandroid/net/util/SharedLog;->log(Ljava/lang/String;)V
+HPLandroid/net/util/SharedLog;->logLine(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String;
+HPLandroid/net/util/SharedLog;->record(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String;
+HPLandroid/net/wifi/IClientInterface$Stub$Proxy;->signalPoll()[I
HPLandroid/net/wifi/IClientInterface;->disableSupplicant()Z
HPLandroid/net/wifi/IClientInterface;->enableSupplicant()Z
HPLandroid/net/wifi/IClientInterface;->getInterfaceName()Ljava/lang/String;
@@ -556,18 +745,20 @@ HPLandroid/net/wifi/IClientInterface;->getPacketCounters()[I
HPLandroid/net/wifi/IClientInterface;->getWifiScannerImpl()Landroid/net/wifi/IWifiScannerImpl;
HPLandroid/net/wifi/IClientInterface;->requestANQP([BLandroid/net/wifi/IANQPDoneCallback;)Z
HPLandroid/net/wifi/IClientInterface;->signalPoll()[I
-HPLandroid/net/wifi/IInterfaceEventCallback;->OnApInterfaceReady(Landroid/net/wifi/IApInterface;)V
-HPLandroid/net/wifi/IInterfaceEventCallback;->OnApTorndownEvent(Landroid/net/wifi/IApInterface;)V
-HPLandroid/net/wifi/IInterfaceEventCallback;->OnClientInterfaceReady(Landroid/net/wifi/IClientInterface;)V
-HPLandroid/net/wifi/IInterfaceEventCallback;->OnClientTorndownEvent(Landroid/net/wifi/IClientInterface;)V
HPLandroid/net/wifi/IPnoScanEvent;->OnPnoNetworkFound()V
HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanFailed()V
+HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanOverOffloadFailed(I)V
+HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanOverOffloadStarted()V
+HPLandroid/net/wifi/IScanEvent$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HPLandroid/net/wifi/IScanEvent;->OnScanFailed()V
HPLandroid/net/wifi/IScanEvent;->OnScanResultReady()V
+HPLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->getScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult;
+HPLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->scan(Lcom/android/server/wifi/wificond/SingleScanSettings;)Z
HPLandroid/net/wifi/IWifiScannerImpl;->abortScan()V
HPLandroid/net/wifi/IWifiScannerImpl;->getAvailable2gChannels()[I
HPLandroid/net/wifi/IWifiScannerImpl;->getAvailable5gNonDFSChannels()[I
HPLandroid/net/wifi/IWifiScannerImpl;->getAvailableDFSChannels()[I
+HPLandroid/net/wifi/IWifiScannerImpl;->getPnoScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult;
HPLandroid/net/wifi/IWifiScannerImpl;->getScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult;
HPLandroid/net/wifi/IWifiScannerImpl;->scan(Lcom/android/server/wifi/wificond/SingleScanSettings;)Z
HPLandroid/net/wifi/IWifiScannerImpl;->startPnoScan(Lcom/android/server/wifi/wificond/PnoSettings;)Z
@@ -582,247 +773,1359 @@ HPLandroid/net/wifi/IWificond;->RegisterCallback(Landroid/net/wifi/IInterfaceEve
HPLandroid/net/wifi/IWificond;->UnregisterCallback(Landroid/net/wifi/IInterfaceEventCallback;)V
HPLandroid/net/wifi/IWificond;->createApInterface()Landroid/net/wifi/IApInterface;
HPLandroid/net/wifi/IWificond;->createClientInterface()Landroid/net/wifi/IClientInterface;
-HPLandroid/net/wifi/IWificond;->registerRttClient(Landroid/net/wifi/IRttClient;)Landroid/net/wifi/IRttController;
HPLandroid/net/wifi/IWificond;->tearDownInterfaces()V
-HPLandroid/net/wifi/IWificond;->unregisterRttClient(Landroid/net/wifi/IRttClient;)V
+HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$1(Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$2(Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->$m$0(Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;-><init>(ZIJ)V
+HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/AlarmManagerService$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/AlarmManagerService$2;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
+HPLcom/android/server/AlarmManagerService$2;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
HPLcom/android/server/AlarmManagerService$2;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V
+HPLcom/android/server/AlarmManagerService$Alarm;-><init>(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V
+HPLcom/android/server/AlarmManagerService$Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String;
HPLcom/android/server/AlarmManagerService$Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z
+HPLcom/android/server/AlarmManagerService$Alarm;->matches(Ljava/lang/String;)Z
+HPLcom/android/server/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/AlarmManagerService$AlarmThread;->run()V
HPLcom/android/server/AlarmManagerService$Batch;-><init>(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;)V
HPLcom/android/server/AlarmManagerService$Batch;->add(Lcom/android/server/AlarmManagerService$Alarm;)Z
HPLcom/android/server/AlarmManagerService$Batch;->canHold(JJ)Z
HPLcom/android/server/AlarmManagerService$Batch;->get(I)Lcom/android/server/AlarmManagerService$Alarm;
+HPLcom/android/server/AlarmManagerService$Batch;->hasWakeups()Z
HPLcom/android/server/AlarmManagerService$Batch;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z
+HPLcom/android/server/AlarmManagerService$Batch;->remove(Ljava/lang/String;)Z
HPLcom/android/server/AlarmManagerService$Batch;->size()I
HPLcom/android/server/AlarmManagerService$BatchTimeOrder;->compare(Lcom/android/server/AlarmManagerService$Batch;Lcom/android/server/AlarmManagerService$Batch;)I
HPLcom/android/server/AlarmManagerService$BatchTimeOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/AlarmManagerService$ClockReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/AlarmManagerService$InFlight;
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/AlarmManagerService$InFlight;
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/AlarmManagerService$InFlight;)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/AlarmManagerService$InFlight;)V
+HPLcom/android/server/AlarmManagerService$InFlight;-><init>(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Landroid/os/WorkSource;ILjava/lang/String;ILjava/lang/String;J)V
HPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I
HPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/AlarmManagerService$UninstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/AlarmManagerService;->-get0(Lcom/android/server/AlarmManagerService;)Landroid/content/Intent;
+HPLcom/android/server/AlarmManagerService;->-get3(Lcom/android/server/AlarmManagerService;)I
+HPLcom/android/server/AlarmManagerService;->-get4(Lcom/android/server/AlarmManagerService;)I
+HPLcom/android/server/AlarmManagerService;->-set0(Lcom/android/server/AlarmManagerService;J)J
+HPLcom/android/server/AlarmManagerService;->-set4(Lcom/android/server/AlarmManagerService;I)I
+HPLcom/android/server/AlarmManagerService;->-set5(Lcom/android/server/AlarmManagerService;I)I
+HPLcom/android/server/AlarmManagerService;->-wrap0(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats;
+HPLcom/android/server/AlarmManagerService;->-wrap4(Lcom/android/server/AlarmManagerService;J)I
+HPLcom/android/server/AlarmManagerService;->-wrap5(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
+HPLcom/android/server/AlarmManagerService;->-wrap7(Lcom/android/server/AlarmManagerService;)V
HPLcom/android/server/AlarmManagerService;->addBatchLocked(Ljava/util/ArrayList;Lcom/android/server/AlarmManagerService$Batch;)Z
HPLcom/android/server/AlarmManagerService;->attemptCoalesceLocked(JJ)I
+HPLcom/android/server/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V
HPLcom/android/server/AlarmManagerService;->convertToElapsed(JI)J
+HPLcom/android/server/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V
+HPLcom/android/server/AlarmManagerService;->findFirstWakeupBatchLocked()Lcom/android/server/AlarmManagerService$Batch;
+HPLcom/android/server/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats;
+HPLcom/android/server/AlarmManagerService;->getStatsLocked(Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats;
+HPLcom/android/server/AlarmManagerService;->maxTriggerTime(JJJ)J
HPLcom/android/server/AlarmManagerService;->reAddAlarmLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V
HPLcom/android/server/AlarmManagerService;->rebatchAllAlarmsLocked(Z)V
HPLcom/android/server/AlarmManagerService;->removeLocked(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
+HPLcom/android/server/AlarmManagerService;->removeLocked(Ljava/lang/String;)V
HPLcom/android/server/AlarmManagerService;->rescheduleKernelAlarmsLocked()V
HPLcom/android/server/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V
+HPLcom/android/server/AlarmManagerService;->setImplLocked(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;IZLandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V
HPLcom/android/server/AlarmManagerService;->setImplLocked(Lcom/android/server/AlarmManagerService$Alarm;ZZ)V
+HPLcom/android/server/AlarmManagerService;->setLocked(IJ)V
+HPLcom/android/server/AlarmManagerService;->setWakelockWorkSource(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;IZ)V
+HPLcom/android/server/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;JJ)Z
+HPLcom/android/server/AlarmManagerService;->updateNextAlarmClockLocked()V
HPLcom/android/server/AnyMotionDetector$DeviceIdleCallback;->onAnyMotionResult(I)V
+HPLcom/android/server/AppOpsService$3;->getMountMode(ILjava/lang/String;)I
+HPLcom/android/server/AppOpsService$3;->hasExternalStorage(ILjava/lang/String;)Z
+HPLcom/android/server/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I
+HPLcom/android/server/AppOpsService;->checkOperation(IILjava/lang/String;)I
HPLcom/android/server/AppOpsService;->checkPackage(ILjava/lang/String;)I
+HPLcom/android/server/AppOpsService;->checkRestrictionLocked(IIILjava/lang/String;)I
+HPLcom/android/server/AppOpsService;->collectOps(Lcom/android/server/AppOpsService$Ops;[I)Ljava/util/ArrayList;
+HPLcom/android/server/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V
HPLcom/android/server/AppOpsService;->finishOperationLocked(Lcom/android/server/AppOpsService$Op;)V
+HPLcom/android/server/AppOpsService;->getOpLocked(IILjava/lang/String;Z)Lcom/android/server/AppOpsService$Op;
HPLcom/android/server/AppOpsService;->getOpLocked(Lcom/android/server/AppOpsService$Ops;IZ)Lcom/android/server/AppOpsService$Op;
HPLcom/android/server/AppOpsService;->getOpsRawLocked(ILjava/lang/String;Z)Lcom/android/server/AppOpsService$Ops;
HPLcom/android/server/AppOpsService;->getPackagesForOps([I)Ljava/util/List;
HPLcom/android/server/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;)Z
+HPLcom/android/server/AppOpsService;->isOperationActive(IILjava/lang/String;)Z
+HPLcom/android/server/AppOpsService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
HPLcom/android/server/AppOpsService;->noteOperation(IILjava/lang/String;)I
HPLcom/android/server/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;ILjava/lang/String;)I
HPLcom/android/server/AppOpsService;->noteProxyOperation(ILjava/lang/String;ILjava/lang/String;)I
+HPLcom/android/server/AppOpsService;->notifyWatchersOfChange(I)V
+HPLcom/android/server/AppOpsService;->resolvePackageName(ILjava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/AppOpsService;->scheduleWriteLocked()V
+HPLcom/android/server/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V
+HPLcom/android/server/AppOpsService;->setUidMode(III)V
+HPLcom/android/server/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;I[Ljava/lang/String;)V
+HPLcom/android/server/AppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V
HPLcom/android/server/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;)I
+HPLcom/android/server/AppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V
+HPLcom/android/server/AppOpsService;->systemReady()V
+HPLcom/android/server/AppOpsService;->verifyIncomingOp(I)V
HPLcom/android/server/AppOpsService;->verifyIncomingUid(I)V
HPLcom/android/server/AppOpsService;->writeState()V
+HPLcom/android/server/AttributeCache$Package;->-get0(Lcom/android/server/AttributeCache$Package;)Landroid/util/SparseArray;
+HPLcom/android/server/AttributeCache;->get(Ljava/lang/String;I[II)Lcom/android/server/AttributeCache$Entry;
+HPLcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache;
+HPLcom/android/server/BatteryService$9;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
+HPLcom/android/server/BatteryService$9;->run()V
+HPLcom/android/server/BatteryService$BatteryListener;->batteryPropertiesChanged(Landroid/os/BatteryProperties;)V
+HPLcom/android/server/BatteryService$Led;->updateLightsLocked()V
+HPLcom/android/server/BatteryService$LocalService;->getBatteryLevel()I
+HPLcom/android/server/BatteryService$LocalService;->getBatteryLevelLow()Z
+HPLcom/android/server/BatteryService$LocalService;->getPlugType()I
+HPLcom/android/server/BatteryService$LocalService;->isPowered(I)Z
+HPLcom/android/server/BatteryService;->-get3(Lcom/android/server/BatteryService;)Landroid/os/BatteryProperties;
+HPLcom/android/server/BatteryService;->-get6(Lcom/android/server/BatteryService;)Ljava/lang/Object;
+HPLcom/android/server/BatteryService;->-wrap0(Lcom/android/server/BatteryService;I)Z
+HPLcom/android/server/BatteryService;->-wrap4(Lcom/android/server/BatteryService;Landroid/os/BatteryProperties;)V
+HPLcom/android/server/BatteryService;->getIconLocked(I)I
+HPLcom/android/server/BatteryService;->isPoweredLocked(I)Z
+HPLcom/android/server/BatteryService;->processValuesLocked(Z)V
+HPLcom/android/server/BatteryService;->sendIntentLocked()V
+HPLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z
+HPLcom/android/server/BatteryService;->update(Landroid/os/BatteryProperties;)V
+HPLcom/android/server/BluetoothManagerService$BluetoothHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/BluetoothManagerService;->isAirplaneModeOn()Z
+HPLcom/android/server/BluetoothManagerService;->isBleScanAlwaysAvailable()Z
+HPLcom/android/server/ConnectivityService$1;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V
+HPLcom/android/server/ConnectivityService$InternalHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->getNetworkForType(I)Lcom/android/server/connectivity/NetworkAgentInfo;
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->isTypeSupported(I)Z
+HPLcom/android/server/ConnectivityService$NetworkRequestInfo;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;Landroid/net/NetworkRequest;Landroid/os/IBinder;)V
+HPLcom/android/server/ConnectivityService$NetworkRequestInfo;->toString()Ljava/lang/String;
+HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleAsyncChannelMessage(Landroid/os/Message;)Z
+HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentInfoMessage(Landroid/os/Message;)Z
+HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentMessage(Landroid/os/Message;)V
+HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkMonitorMessage(Landroid/os/Message;)Z
+HPLcom/android/server/ConnectivityService;->-get4(Lcom/android/server/ConnectivityService;)Ljava/util/HashMap;
+HPLcom/android/server/ConnectivityService;->-getcom-android-server-ConnectivityService$UnneededForSwitchesValues()[I
+HPLcom/android/server/ConnectivityService;->-wrap32(Lcom/android/server/ConnectivityService;IZJ)V
+HPLcom/android/server/ConnectivityService;->-wrap39(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;I)V
+HPLcom/android/server/ConnectivityService;->callCallbackForRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;II)V
+HPLcom/android/server/ConnectivityService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/ConnectivityService;->enforceAccessPermission()V
+HPLcom/android/server/ConnectivityService;->enforceConnectivityInternalPermission()V
HPLcom/android/server/ConnectivityService;->filterNetworkStateForUid(Landroid/net/NetworkState;IZ)V
+HPLcom/android/server/ConnectivityService;->getActiveNetwork()Landroid/net/Network;
+HPLcom/android/server/ConnectivityService;->getActiveNetworkForUid(IZ)Landroid/net/Network;
+HPLcom/android/server/ConnectivityService;->getActiveNetworkForUidInternal(IZ)Landroid/net/Network;
HPLcom/android/server/ConnectivityService;->getActiveNetworkInfo()Landroid/net/NetworkInfo;
HPLcom/android/server/ConnectivityService;->getActiveNetworkInfoForUid(IZ)Landroid/net/NetworkInfo;
+HPLcom/android/server/ConnectivityService;->getAllNetworks()[Landroid/net/Network;
+HPLcom/android/server/ConnectivityService;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo;
HPLcom/android/server/ConnectivityService;->getDefaultNetwork()Lcom/android/server/connectivity/NetworkAgentInfo;
+HPLcom/android/server/ConnectivityService;->getFilteredNetworkState(IIZ)Landroid/net/NetworkState;
+HPLcom/android/server/ConnectivityService;->getNetworkAgentInfoForNetwork(Landroid/net/Network;)Lcom/android/server/connectivity/NetworkAgentInfo;
+HPLcom/android/server/ConnectivityService;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;
+HPLcom/android/server/ConnectivityService;->getNetworkCapabilitiesInternal(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/NetworkCapabilities;
+HPLcom/android/server/ConnectivityService;->getNetworkInfo(I)Landroid/net/NetworkInfo;
+HPLcom/android/server/ConnectivityService;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo;
+HPLcom/android/server/ConnectivityService;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo;
HPLcom/android/server/ConnectivityService;->getUnfilteredActiveNetworkState(I)Landroid/net/NetworkState;
HPLcom/android/server/ConnectivityService;->getVpnUnderlyingNetworks(I)[Landroid/net/Network;
+HPLcom/android/server/ConnectivityService;->handleRegisterNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+HPLcom/android/server/ConnectivityService;->handleRemoveNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+HPLcom/android/server/ConnectivityService;->isActiveNetworkMetered()Z
HPLcom/android/server/ConnectivityService;->isNetworkWithLinkPropertiesBlocked(Landroid/net/LinkProperties;IZ)Z
+HPLcom/android/server/ConnectivityService;->isSystem(I)Z
+HPLcom/android/server/ConnectivityService;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest;
HPLcom/android/server/ConnectivityService;->maybeLogBlockedNetworkInfo(Landroid/net/NetworkInfo;I)V
+HPLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;II)V
HPLcom/android/server/ConnectivityService;->processListenRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Z)V
+HPLcom/android/server/ConnectivityService;->putParcelable(Landroid/os/Bundle;Landroid/os/Parcelable;)V
+HPLcom/android/server/ConnectivityService;->rematchAllNetworksAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
+HPLcom/android/server/ConnectivityService;->rematchNetworkAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;J)V
+HPLcom/android/server/ConnectivityService;->sendDataActivityBroadcast(IZJ)V
+HPLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Landroid/net/NetworkRequest;I)V
+HPLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->unneeded(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$UnneededFor;)Z
+HPLcom/android/server/ConnectivityService;->updateLingerState(Lcom/android/server/connectivity/NetworkAgentInfo;J)V
+HPLcom/android/server/ConnectivityService;->updateNetworkScore(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
+HPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistExceptIdleApp(Ljava/lang/String;)Z
+HPLcom/android/server/DeviceIdleController$LocalService;->setAlarmsActive(Z)V
+HPLcom/android/server/DeviceIdleController$LocalService;->setJobsActive(Z)V
+HPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/DeviceIdleController;->-get7(Lcom/android/server/DeviceIdleController;)Landroid/os/RemoteCallbackList;
+HPLcom/android/server/DeviceIdleController;->exitMaintenanceEarlyIfNeededLocked()V
+HPLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistExceptIdleAppInternal(Ljava/lang/String;)Z
+HPLcom/android/server/DeviceIdleController;->reportMaintenanceActivityIfNeededLocked()V
+HPLcom/android/server/DeviceIdleController;->setAlarmsActive(Z)V
+HPLcom/android/server/DeviceIdleController;->setJobsActive(Z)V
+HPLcom/android/server/DeviceIdleController;->updateChargingLocked(Z)V
+HPLcom/android/server/DropBoxManagerService$2;->add(Landroid/os/DropBoxManager$Entry;)V
+HPLcom/android/server/DropBoxManagerService$2;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry;
+HPLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z
+HPLcom/android/server/DropBoxManagerService$3;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(J)V
HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;I)V
+HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V
HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I
HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I
+HPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String;
+HPLcom/android/server/DropBoxManagerService$EntryFile;->getFile(Ljava/io/File;)Ljava/io/File;
+HPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String;
+HPLcom/android/server/DropBoxManagerService$EntryFile;->hasFile()Z
HPLcom/android/server/DropBoxManagerService;->add(Landroid/os/DropBoxManager$Entry;)V
+HPLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J
+HPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V
HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry;
HPLcom/android/server/DropBoxManagerService;->init()V
HPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z
+HPLcom/android/server/DropBoxManagerService;->trimToFit()J
+HPLcom/android/server/EventLogTags;->writeNetstatsMobileSample(JJJJJJJJJJJJJ)V
+HPLcom/android/server/EventLogTags;->writeNetstatsWifiSample(JJJJJJJJJJJJJ)V
+HPLcom/android/server/EventLogTags;->writeNotificationCancelAll(IILjava/lang/String;IIIILjava/lang/String;)V
+HPLcom/android/server/GraphicsStatsService$ActiveBuffer;-><init>(Lcom/android/server/GraphicsStatsService;Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)V
+HPLcom/android/server/GraphicsStatsService;->fetchActiveBuffersLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)Lcom/android/server/GraphicsStatsService$ActiveBuffer;
+HPLcom/android/server/GraphicsStatsService;->normalizeDate(J)Ljava/util/Calendar;
+HPLcom/android/server/GraphicsStatsService;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor;
+HPLcom/android/server/InputMethodManagerService$ClientState;->toString()Ljava/lang/String;
+HPLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+HPLcom/android/server/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V
+HPLcom/android/server/InputMethodManagerService$StartInputHistory;->addEntry(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V
+HPLcom/android/server/InputMethodManagerService$StartInputInfo;-><init>(Landroid/os/IBinder;Ljava/lang/String;IZLandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V
+HPLcom/android/server/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/InputMethodManagerService;->buildInputMethodListLocked(Z)V
+HPLcom/android/server/InputMethodManagerService;->calledFromValidUser()Z
+HPLcom/android/server/InputMethodManagerService;->calledWithValidToken(Landroid/os/IBinder;)Z
+HPLcom/android/server/InputMethodManagerService;->executeOrSendMessage(Landroid/os/IInterface;Landroid/os/Message;)V
+HPLcom/android/server/InputMethodManagerService;->getCurrentInputMethodSubtypeLocked()Landroid/view/inputmethod/InputMethodSubtype;
+HPLcom/android/server/InputMethodManagerService;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List;
+HPLcom/android/server/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/InputMethodManagerService;->hideCurrentInputLocked(ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/InputMethodManagerService;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/InputMethodManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V
+HPLcom/android/server/InputMethodManagerService;->setEnabledSessionInMainThread(Lcom/android/server/InputMethodManagerService$SessionState;)V
+HPLcom/android/server/InputMethodManagerService;->setImeWindowStatus(Landroid/os/IBinder;Landroid/os/IBinder;II)V
+HPLcom/android/server/InputMethodManagerService;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z
+HPLcom/android/server/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z
+HPLcom/android/server/InputMethodManagerService;->startInput(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/InputMethodManagerService;->startInputLocked(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;II)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/InputMethodManagerService;->unbindCurrentClientLocked(I)V
+HPLcom/android/server/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V
+HPLcom/android/server/InputMethodManagerService;->updateSystemUiLocked(Landroid/os/IBinder;II)V
+HPLcom/android/server/InputMethodManagerService;->windowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult;
HPLcom/android/server/IntentResolver$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HPLcom/android/server/IntentResolver;->addFilter(Landroid/content/IntentFilter;)V
-HPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Landroid/content/IntentFilter;)V
-HPLcom/android/server/IntentResolver;->buildResolveList(Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Landroid/content/IntentFilter;Ljava/util/List;I)V
-HPLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V
-HPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet;
-HPLcom/android/server/IntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;
+HPLcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Z
+HPLcom/android/server/IntentResolver;->dumpMap(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Ljava/lang/String;ZZ)Z
+HPLcom/android/server/IntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z
+HPLcom/android/server/IntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
HPLcom/android/server/IntentResolver;->queryIntentFromList(Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;I)Ljava/util/List;
-HPLcom/android/server/IntentResolver;->register_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
-HPLcom/android/server/IntentResolver;->register_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I
+HPLcom/android/server/IntentResolver;->removeFilter(Landroid/content/IntentFilter;)V
+HPLcom/android/server/IntentResolver;->removeFilterInternal(Landroid/content/IntentFilter;)V
HPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V
+HPLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V
+HPLcom/android/server/IntentResolver;->unregister_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
+HPLcom/android/server/IntentResolver;->unregister_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I
+HPLcom/android/server/LocationManagerService$1;->onPackageDisappeared(Ljava/lang/String;I)V
+HPLcom/android/server/LocationManagerService$5$1;-><init>(Lcom/android/server/LocationManagerService$5;II)V
+HPLcom/android/server/LocationManagerService$5$1;->run()V
HPLcom/android/server/LocationManagerService$5;->onUidImportance(II)V
+HPLcom/android/server/LocationManagerService$LocationWorkerHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/LocationManagerService$Receiver;->-wrap0(Lcom/android/server/LocationManagerService$Receiver;)V
+HPLcom/android/server/LocationManagerService$Receiver;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)V
+HPLcom/android/server/LocationManagerService$Receiver;->callLocationChangedLocked(Landroid/location/Location;)Z
+HPLcom/android/server/LocationManagerService$Receiver;->decrementPendingBroadcastsLocked()V
+HPLcom/android/server/LocationManagerService$Receiver;->incrementPendingBroadcastsLocked()V
+HPLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(Z)V
+HPLcom/android/server/LocationManagerService$UpdateRecord;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;)V
+HPLcom/android/server/LocationManagerService;->-get4(Lcom/android/server/LocationManagerService;)Lcom/android/server/LocationManagerService$LocationWorkerHandler;
+HPLcom/android/server/LocationManagerService;->-wrap6(Lcom/android/server/LocationManagerService;II)V
+HPLcom/android/server/LocationManagerService;->applyRequirementsLocked(Ljava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->checkCallerIsProvider()V
+HPLcom/android/server/LocationManagerService;->checkLocationAccess(IILjava/lang/String;I)Z
+HPLcom/android/server/LocationManagerService;->checkPackageName(Ljava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->checkResolutionLevelIsSufficientForProviderUse(ILjava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->doesUidHavePackage(ILjava/lang/String;)Z
+HPLcom/android/server/LocationManagerService;->getAllProviders()Ljava/util/List;
+HPLcom/android/server/LocationManagerService;->getAllowedResolutionLevel(II)I
+HPLcom/android/server/LocationManagerService;->getCallerAllowedResolutionLevel()I
+HPLcom/android/server/LocationManagerService;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location;
+HPLcom/android/server/LocationManagerService;->getMinimumResolutionLevelForProviderUse(Ljava/lang/String;)I
+HPLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/location/ILocationListener;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver;
+HPLcom/android/server/LocationManagerService;->handleLocationChanged(Landroid/location/Location;Z)V
+HPLcom/android/server/LocationManagerService;->handleLocationChangedLocked(Landroid/location/Location;Z)V
+HPLcom/android/server/LocationManagerService;->isAllowedByCurrentUserSettingsLocked(Ljava/lang/String;)Z
+HPLcom/android/server/LocationManagerService;->isAllowedByUserSettingsLocked(Ljava/lang/String;I)Z
+HPLcom/android/server/LocationManagerService;->isCurrentProfile(I)Z
+HPLcom/android/server/LocationManagerService;->isImportanceForeground(I)Z
+HPLcom/android/server/LocationManagerService;->isProviderEnabled(Ljava/lang/String;)Z
+HPLcom/android/server/LocationManagerService;->isThrottlingExemptLocked(Lcom/android/server/LocationManagerService$Identity;)Z
+HPLcom/android/server/LocationManagerService;->locationCallbackFinished(Landroid/location/ILocationListener;)V
+HPLcom/android/server/LocationManagerService;->onUidImportanceChanged(II)V
+HPLcom/android/server/LocationManagerService;->removeUpdatesLocked(Lcom/android/server/LocationManagerService$Receiver;)V
+HPLcom/android/server/LocationManagerService;->reportLocation(Landroid/location/Location;Z)V
+HPLcom/android/server/LocationManagerService;->reportLocationAccessNoThrow(IILjava/lang/String;I)Z
+HPLcom/android/server/LocationManagerService;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->resolutionLevelToOp(I)I
+HPLcom/android/server/LocationManagerService;->shouldBroadcastSafe(Landroid/location/Location;Landroid/location/Location;Lcom/android/server/LocationManagerService$UpdateRecord;J)Z
+HPLcom/android/server/NativeDaemonConnector$ResponseQueue$PendingCmd;-><init>(ILjava/lang/String;)V
+HPLcom/android/server/NativeDaemonConnector$ResponseQueue;->add(ILcom/android/server/NativeDaemonEvent;)V
+HPLcom/android/server/NativeDaemonConnector$ResponseQueue;->remove(IJLjava/lang/String;)Lcom/android/server/NativeDaemonEvent;
HPLcom/android/server/NativeDaemonConnector;->appendEscaped(Ljava/lang/StringBuilder;Ljava/lang/String;)V
HPLcom/android/server/NativeDaemonConnector;->executeForList(JLjava/lang/String;[Ljava/lang/Object;)[Lcom/android/server/NativeDaemonEvent;
+HPLcom/android/server/NativeDaemonConnector;->handleMessage(Landroid/os/Message;)Z
HPLcom/android/server/NativeDaemonConnector;->listenToSocket()V
+HPLcom/android/server/NativeDaemonConnector;->log(Ljava/lang/String;)V
HPLcom/android/server/NativeDaemonConnector;->makeCommand(Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;ILjava/lang/String;[Ljava/lang/Object;)V
HPLcom/android/server/NativeDaemonConnector;->uptimeMillisInt()I
+HPLcom/android/server/NativeDaemonEvent;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/io/FileDescriptor;)V
+HPLcom/android/server/NativeDaemonEvent;->getCode()I
+HPLcom/android/server/NativeDaemonEvent;->isClassUnsolicited()Z
+HPLcom/android/server/NativeDaemonEvent;->isClassUnsolicited(I)Z
HPLcom/android/server/NativeDaemonEvent;->parseRawEvent(Ljava/lang/String;[Ljava/io/FileDescriptor;)Lcom/android/server/NativeDaemonEvent;
+HPLcom/android/server/NativeDaemonEvent;->toString()Ljava/lang/String;
HPLcom/android/server/NativeDaemonEvent;->unescapeArgs(Ljava/lang/String;)[Ljava/lang/String;
HPLcom/android/server/NetworkManagementInternal;->isNetworkRestrictedForUid(I)Z
HPLcom/android/server/NetworkManagementService$LocalService;->isNetworkRestrictedForUid(I)Z
-HPLcom/android/server/NetworkManagementService;->-get2(Lcom/android/server/NetworkManagementService;)Z
-HPLcom/android/server/NetworkManagementService;->-get4(Lcom/android/server/NetworkManagementService;)Ljava/lang/Object;
-HPLcom/android/server/NetworkManagementService;->-get9(Lcom/android/server/NetworkManagementService;)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onCheckHoldWakeLock(I)Z
+HPLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onEvent(ILjava/lang/String;[Ljava/lang/String;)Z
+HPLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats;
HPLcom/android/server/NetworkManagementService;->-wrap1(Lcom/android/server/NetworkManagementService;I)Z
+HPLcom/android/server/NetworkManagementService;->-wrap6(Lcom/android/server/NetworkManagementService;IIJIZ)V
+HPLcom/android/server/NetworkManagementService;->enforceSystemUid()V
HPLcom/android/server/NetworkManagementService;->getFirewallChainState(I)Z
+HPLcom/android/server/NetworkManagementService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats;
+HPLcom/android/server/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray;
HPLcom/android/server/NetworkManagementService;->invokeForAllObservers(Lcom/android/server/NetworkManagementService$NetworkManagementEventCallback;)V
+HPLcom/android/server/NetworkManagementService;->isNetworkRestrictedInternal(I)Z
+HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18910(Ljava/lang/String;Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_21126(IZJLandroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29429(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/NetworkManagementService;->monitor()V
+HPLcom/android/server/NetworkManagementService;->notifyInterfaceClassActivity(IIJIZ)V
+HPLcom/android/server/NetworkManagementService;->setFirewallUidRule(III)V
+HPLcom/android/server/NetworkManagementService;->setFirewallUidRuleLocked(III)V
+HPLcom/android/server/NetworkManagementService;->setPermission(Ljava/lang/String;[I)V
+HPLcom/android/server/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V
+HPLcom/android/server/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z
+HPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getAppData()Landroid/net/NetworkScorerAppData;
+HPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getPackageName()Ljava/lang/String;
+HPLcom/android/server/NetworkScoreService;->canCallerRequestScores()Z
+HPLcom/android/server/NetworkScoreService;->canCallerScoreNetworks()Z
+HPLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String;
+HPLcom/android/server/NetworkScoreService;->isCallerActiveScorer(I)Z
+HPLcom/android/server/NetworkScoreService;->requestScores([Landroid/net/NetworkKey;)Z
+HPLcom/android/server/NetworkScoreService;->sendCacheUpdateCallback(Ljava/util/function/BiConsumer;Ljava/util/Collection;)V
+HPLcom/android/server/NetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z
HPLcom/android/server/NsdService$DaemonConnectionSupplier;->get(Lcom/android/server/NsdService$NativeCallbackReceiver;)Lcom/android/server/NsdService$DaemonConnection;
HPLcom/android/server/NsdService$NsdSettings;->isEnabled()Z
HPLcom/android/server/NsdService$NsdSettings;->putEnabledStatus(Z)V
HPLcom/android/server/NsdService$NsdSettings;->registerContentObserver(Landroid/net/Uri;Landroid/database/ContentObserver;)V
HPLcom/android/server/PersistentDataBlockManagerInternal;->getFrpCredentialHandle()[B
HPLcom/android/server/PersistentDataBlockManagerInternal;->setFrpCredentialHandle([B)V
+HPLcom/android/server/PersistentDataBlockService;->computeDigestLocked([B)[B
+HPLcom/android/server/ServiceWatcher$1;->onPackageUpdateFinished(Ljava/lang/String;I)V
+HPLcom/android/server/ServiceWatcher;->bindBestPackageLocked(Ljava/lang/String;Z)Z
+HPLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;Ljava/util/List;)Z
+HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I
HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorage(ILjava/lang/String;)Z
+HPLcom/android/server/StorageManagerService;->adjustAllocateFlags(IILjava/lang/String;)I
+HPLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J
HPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume;
HPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo;
+HPLcom/android/server/StorageManagerService;->isUserKeyUnlocked(I)Z
+HPLcom/android/server/SystemServer;->startOtherServices()V
+HPLcom/android/server/SystemServiceManager;->startUser(I)V
+HPLcom/android/server/SystemServiceManager;->unlockUser(I)V
+HPLcom/android/server/TelephonyRegistry$Record;->matchPhoneStateListenerEvent(I)Z
+HPLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
+HPLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ZI)V
+HPLcom/android/server/TelephonyRegistry;->broadcastPreciseDataConnectionStateChanged(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Ljava/lang/String;)V
+HPLcom/android/server/TelephonyRegistry;->listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZI)V
+HPLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V
+HPLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V
+HPLcom/android/server/TelephonyRegistry;->notifySimActivationStateChangedForPhoneId(IIII)V
+HPLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V
+HPLcom/android/server/TextServicesManagerService;->buildSpellCheckerMapLocked(Landroid/content/Context;Ljava/util/ArrayList;Ljava/util/HashMap;Lcom/android/server/TextServicesManagerService$TextServicesSettings;)V
+HPLcom/android/server/TextServicesManagerService;->calledFromValidUser()Z
+HPLcom/android/server/TextServicesManagerService;->getCurrentSpellCheckerSubtype(Ljava/lang/String;Z)Landroid/view/textservice/SpellCheckerSubtype;
HPLcom/android/server/ThreadPriorityBooster;->boost()V
HPLcom/android/server/ThreadPriorityBooster;->reset()V
+HPLcom/android/server/ThreadPriorityBooster;->setBoostToPriority(I)V
+HPLcom/android/server/UiModeManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/UiModeManagerService;->isDeskDockState(I)Z
+HPLcom/android/server/UiModeManagerService;->sendConfigurationAndStartDreamOrDockAppLocked(Ljava/lang/String;)V
+HPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V
+HPLcom/android/server/UiModeManagerService;->updateLocked(II)V
+HPLcom/android/server/VibratorService$Vibration;->-get0(Lcom/android/server/VibratorService$Vibration;)Landroid/os/VibrationEffect;
+HPLcom/android/server/VibratorService$Vibration;->-get4(Lcom/android/server/VibratorService$Vibration;)I
+HPLcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
+HPLcom/android/server/VibratorService;->doCancelVibrateLocked()V
+HPLcom/android/server/VibratorService;->doVibratorOff()V
+HPLcom/android/server/VibratorService;->doVibratorPrebakedEffectLocked(Lcom/android/server/VibratorService$Vibration;)J
+HPLcom/android/server/VibratorService;->getAppOpMode(Lcom/android/server/VibratorService$Vibration;)I
+HPLcom/android/server/VibratorService;->reportFinishVibrationLocked()V
+HPLcom/android/server/VibratorService;->startVibrationInnerLocked(Lcom/android/server/VibratorService$Vibration;)V
+HPLcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
+HPLcom/android/server/VibratorService;->verifyIncomingUid(I)V
+HPLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILandroid/os/IBinder;)V
+HPLcom/android/server/Watchdog$BinderThreadMonitor;->monitor()V
+HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I
+HPLcom/android/server/Watchdog$HandlerChecker;->run()V
+HPLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked()V
+HPLcom/android/server/Watchdog$OpenFdMonitor;->monitor()Z
+HPLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I
+HPLcom/android/server/Watchdog;->run()V
+HPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;->-get0(Lcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;)Landroid/view/accessibility/IAccessibilityInteractionConnection;
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap1(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)Landroid/view/accessibility/AccessibilityWindowInfo;
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap3(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Landroid/view/accessibility/AccessibilityEvent;)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canDispatchAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canGetAccessibilityNodeInfoLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;I)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canRetrieveWindowContentLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->findA11yWindowInfoById(I)Landroid/view/accessibility/AccessibilityWindowInfo;
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->getActiveWindowId()I
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isCallerInteractingAcrossUsers(I)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isRetrievalAllowingWindow(I)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->notifyWindowsChanged()V
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveProfileParentLocked(I)I
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateActiveAndAccessibilityFocusedWindowLocked(IJII)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateEventSourceLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateWindowsLocked(Ljava/util/List;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service$1;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->-wrap3(Lcom/android/server/accessibility/AccessibilityManagerService$Service;ILandroid/view/accessibility/AccessibilityEvent;Z)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->canReceiveEventsLocked()Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->getConnectionLocked(I)Landroid/view/accessibility/IAccessibilityInteractionConnection;
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->getWindows()Ljava/util/List;
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->isCalledForCurrentUserLocked()Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;Z)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->notifyAccessibilityEventInternal(ILandroid/view/accessibility/AccessibilityEvent;Z)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->performAccessibilityAction(IJILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->replaceCallbackIfNeeded(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIIJ)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
+HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->resolveAccessibilityWindowIdLocked(I)I
+HPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isHandlingAccessibilityEvents()Z
+HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;Landroid/view/WindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo;
+HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->getTypeForWindowManagerWindowType(I)I
+HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->onWindowsForAccessibilityChanged(Ljava/util/List;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->populateReportedWindow(Landroid/view/WindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-get14(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-get16(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/graphics/Rect;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-get2(Lcom/android/server/accessibility/AccessibilityManagerService;)I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-get20(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-get5(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/util/SparseArray;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-get9(Lcom/android/server/accessibility/AccessibilityManagerService;)Ljava/lang/Object;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService;I)Landroid/view/MagnificationSpec;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap12(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap15(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/IBinder;)I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;I)I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
+HPLcom/android/server/accessibility/AccessibilityManagerService;->doesServiceWantEventLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/view/accessibility/AccessibilityEvent;)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService;->findWindowIdLocked(Landroid/os/IBinder;)I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getCompatibleMagnificationSpecLocked(I)Landroid/view/MagnificationSpec;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserStateLocked()Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityServicesDelayedLocked(Landroid/view/accessibility/AccessibilityEvent;Z)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnectionInternalLocked(Landroid/os/IBinder;Landroid/util/SparseArray;Landroid/util/SparseArray;)I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->isCapturingFingerprintGestures()Z
HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->onFingerprintGesture(I)V
HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->onFingerprintGestureDetectionActiveChanged(Z)V
HPLcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;->onKeyEvent(Landroid/view/KeyEvent;I)Z
+HPLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
+HPLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/accounts/AuthenticatorDescription;
+HPLcom/android/server/accounts/AccountManagerService$8;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V
+HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;Z)V
+HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V
+HPLcom/android/server/accounts/AccountManagerService$Session;->bind()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z
+HPLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->close()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse;
+HPLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/accounts/AccountManagerService$Session;->unbind()V
+HPLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get10(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get8(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get9(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
+HPLcom/android/server/accounts/AccountManagerService;->-get5(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/LinkedHashMap;
+HPLcom/android/server/accounts/AccountManagerService;->-wrap4(Lcom/android/server/accounts/AccountManagerService;I)Z
+HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z
+HPLcom/android/server/accounts/AccountManagerService;->accountTypeManagesContacts(Ljava/lang/String;I)Z
+HPLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;)[B
+HPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Landroid/os/UserHandle;)V
HPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I
HPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
+HPLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account;
HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
HPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;
HPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypesInternal(I)[Landroid/accounts/AuthenticatorDescription;
+HPLcom/android/server/accounts/AccountManagerService;->getCredentialPermissionNotificationId(Landroid/accounts/Account;Ljava/lang/String;I)Lcom/android/server/accounts/AccountManagerService$NotificationId;
+HPLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId;
HPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List;
+HPLcom/android/server/accounts/AccountManagerService;->getTypesManagedByCaller(II)Ljava/util/List;
+HPLcom/android/server/accounts/AccountManagerService;->getTypesVisibleToCaller(IILjava/lang/String;)Ljava/util/List;
+HPLcom/android/server/accounts/AccountManagerService;->getUidsOfInstalledOrUpdatedPackagesAsUser(I)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
HPLcom/android/server/accounts/AccountManagerService;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager;
+HPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;I)Z
+HPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z
+HPLcom/android/server/accounts/AccountManagerService;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z
+HPLcom/android/server/accounts/AccountManagerService;->isLocalUnlockedUser(I)Z
HPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;II[Ljava/lang/String;)Z
HPLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z
+HPLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z
+HPLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z
+HPLcom/android/server/accounts/AccountManagerService;->onAccountAccessed(Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z
+HPLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->readCachedTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
HPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;
+HPLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-get0(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)Z
+HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J
+HPLcom/android/server/accounts/AccountsDb;->findUserExtrasForAccount(Landroid/accounts/Account;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z
HPLcom/android/server/accounts/IAccountAuthenticatorCache;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;I)V
HPLcom/android/server/accounts/IAccountAuthenticatorCache;->getAllServices(I)Ljava/util/Collection;
HPLcom/android/server/accounts/IAccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
HPLcom/android/server/accounts/IAccountAuthenticatorCache;->invalidateCache(I)V
HPLcom/android/server/accounts/IAccountAuthenticatorCache;->setListener(Landroid/content/pm/RegisteredServicesCacheListener;Landroid/os/Handler;)V
HPLcom/android/server/accounts/IAccountAuthenticatorCache;->updateServices(I)V
+HPLcom/android/server/accounts/TokenCache$Key;->hashCode()I
+HPLcom/android/server/accounts/TokenCache;->get(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String;
+HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->$m$1()V
+HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;-><init>(BIIIIIIIILjava/lang/Object;)V
+HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->run()V
+HPLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->$m$0(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+HPLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+HPLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
HPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V
+HPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;)V
+HPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$ServiceRestarter;)V
+HPLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z
HPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I
+HPLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZZ)Z
+HPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
HPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;)V
HPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZ)Ljava/lang/String;
HPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;)V
+HPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;Landroid/content/ComponentName;Landroid/content/Intent;)V
+HPLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZZLandroid/util/ArrayMap;)Z
+HPLcom/android/server/am/ActiveServices;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Lcom/android/server/am/ServiceRecord;
+HPLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V
+HPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List;
+HPLcom/android/server/am/ActiveServices;->getServiceByNameLocked(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
HPLcom/android/server/am/ActiveServices;->getServiceMapLocked(I)Lcom/android/server/am/ActiveServices$ServiceMap;
+HPLcom/android/server/am/ActiveServices;->hasBackgroundServicesLocked(I)Z
+HPLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z
+HPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V
+HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
+HPLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V
HPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V
HPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Z)V
HPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZ)Z
+HPLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;Z)V
HPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IIIZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;
+HPLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
HPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V
HPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;III)V
HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZ)Landroid/content/ComponentName;
HPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;I)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V
+HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
+HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V
HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
+HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V
HPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z
+HPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
+HPLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V
HPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;Z)Z
+HPLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessRecord;)V
HPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessRecord;Z)V
+HPLcom/android/server/am/ActivityManagerService$1;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
HPLcom/android/server/am/ActivityManagerService$1;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z
HPLcom/android/server/am/ActivityManagerService$1;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
HPLcom/android/server/am/ActivityManagerService$1;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/am/BroadcastFilter;)Z
+HPLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Landroid/content/IntentFilter;
+HPLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Lcom/android/server/am/BroadcastFilter;
+HPLcom/android/server/am/ActivityManagerService$1;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
+HPLcom/android/server/am/ActivityManagerService$1;->newResult(Lcom/android/server/am/BroadcastFilter;II)Lcom/android/server/am/BroadcastFilter;
+HPLcom/android/server/am/ActivityManagerService$20;->run()V
+HPLcom/android/server/am/ActivityManagerService$24;->compare(Lcom/android/server/am/ActivityManagerService$MemItem;Lcom/android/server/am/ActivityManagerService$MemItem;)I
+HPLcom/android/server/am/ActivityManagerService$24;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HPLcom/android/server/am/ActivityManagerService$2;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService$2;->lambda$-com_android_server_am_ActivityManagerService$2_102488(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
+HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V
+HPLcom/android/server/am/ActivityManagerService$AppTaskImpl;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;
+HPLcom/android/server/am/ActivityManagerService$GrantUri;-><init>(ILandroid/net/Uri;Z)V
+HPLcom/android/server/am/ActivityManagerService$GrantUri;->resolve(ILandroid/net/Uri;)Lcom/android/server/am/ActivityManagerService$GrantUri;
+HPLcom/android/server/am/ActivityManagerService$GraphicsBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
HPLcom/android/server/am/ActivityManagerService$Injector;->ensureHasNetworkManagementInternal()Z
HPLcom/android/server/am/ActivityManagerService$Injector;->isNetworkRestrictedForUid(I)Z
+HPLcom/android/server/am/ActivityManagerService$KillHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionFinished()V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionStarting(Landroid/util/SparseIntArray;J)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService$MemBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJI)V
+HPLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJIZ)V
+HPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService;->-get5(Lcom/android/server/am/ActivityManagerService;)Ljava/lang/StringBuilder;
+HPLcom/android/server/am/ActivityManagerService;->-wrap2(Lcom/android/server/am/ActivityManagerService;II)V
+HPLcom/android/server/am/ActivityManagerService;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
+HPLcom/android/server/am/ActivityManagerService;->activityPaused(Landroid/os/IBinder;)V
+HPLcom/android/server/am/ActivityManagerService;->activityResumed(Landroid/os/IBinder;)V
+HPLcom/android/server/am/ActivityManagerService;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+HPLcom/android/server/am/ActivityManagerService;->addBackgroundCheckViolationLocked(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V
+HPLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;Z)V
+HPLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLocked(ILjava/lang/String;I)I
+HPLcom/android/server/am/ActivityManagerService;->appServicesRestrictedInBackgroundLocked(ILjava/lang/String;I)I
HPLcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V
HPLcom/android/server/am/ActivityManagerService;->applyOomAdjLocked(Lcom/android/server/am/ProcessRecord;ZJJ)Z
+HPLcom/android/server/am/ActivityManagerService;->applyUpdateLockStateLocked(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;)V
HPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;I)Z
+HPLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V
+HPLcom/android/server/am/ActivityManagerService;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I
HPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V
HPLcom/android/server/am/ActivityManagerService;->broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I
+HPLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZI)I
HPLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIII)I
+HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
+HPLcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V
HPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
HPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
HPLcom/android/server/am/ActivityManagerService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
HPLcom/android/server/am/ActivityManagerService;->checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;IZ)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked()V
+HPLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;I)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
+HPLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;II)I
HPLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
+HPLcom/android/server/am/ActivityManagerService;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I
HPLcom/android/server/am/ActivityManagerService;->checkTime(JLjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZIZ)Z
+HPLcom/android/server/am/ActivityManagerService;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
+HPLcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;IZ[Ljava/lang/String;)Ljava/util/ArrayList;
HPLcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;I[I)Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
HPLcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJ)I
HPLcom/android/server/am/ActivityManagerService;->createRecentTaskInfoFromTaskRecord(Lcom/android/server/am/TaskRecord;)Landroid/app/ActivityManager$RecentTaskInfo;
HPLcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
+HPLcom/android/server/am/ActivityManagerService;->dispatchProcessDied(II)V
+HPLcom/android/server/am/ActivityManagerService;->dispatchProcessesChanged()V
HPLcom/android/server/am/ActivityManagerService;->dispatchUidsChanged()V
HPLcom/android/server/am/ActivityManagerService;->dispatchUidsChangedForObserver(Landroid/app/IUidObserver;Lcom/android/server/am/ActivityManagerService$UidObserverRegistration;I)V
+HPLcom/android/server/am/ActivityManagerService;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;ZLjava/io/PrintWriter;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsageHeader(Ljava/io/PrintWriter;JJZZ)V
+HPLcom/android/server/am/ActivityManagerService;->dumpGraphicsHardwareUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;ZZZ)V
+HPLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
HPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V
+HPLcom/android/server/am/ActivityManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/am/ActivityRecord;I)Z
+HPLcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V
HPLcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z
HPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V
+HPLcom/android/server/am/ActivityManagerService;->forceStopPackage(Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZILjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle;
HPLcom/android/server/am/ActivityManagerService;->getAppStartModeLocked(ILjava/lang/String;IIZZ)I
+HPLcom/android/server/am/ActivityManagerService;->getAppTasks(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet;
+HPLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
HPLcom/android/server/am/ActivityManagerService;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ZI)Landroid/app/ContentProviderHolder;
+HPLcom/android/server/am/ActivityManagerService;->getCurrentUser()Landroid/content/pm/UserInfo;
+HPLcom/android/server/am/ActivityManagerService;->getFocusedStack()Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityManagerService;->getFocusedStackId()I
+HPLcom/android/server/am/ActivityManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/am/ActivityManagerService;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent;
HPLcom/android/server/am/ActivityManagerService;->getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;
HPLcom/android/server/am/ActivityManagerService;->getIntentSenderLocked(ILjava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender;
HPLcom/android/server/am/ActivityManagerService;->getLRURecordIndexForAppLocked(Landroid/app/IApplicationThread;)I
+HPLcom/android/server/am/ActivityManagerService;->getLastResumedActivityUserId()I
+HPLcom/android/server/am/ActivityManagerService;->getLockTaskModeState()I
+HPLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I
+HPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal;
+HPLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
+HPLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;IZ)Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/ActivityManagerService;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice;
HPLcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo;
+HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/am/ActivityManagerService;->getTasks(II)Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getUidForIntentSender(Landroid/content/IIntentSender;)I
HPLcom/android/server/am/ActivityManagerService;->grantEphemeralAccessLocked(ILandroid/content/Intent;II)V
+HPLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
HPLcom/android/server/am/ActivityManagerService;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->idleUids()V
HPLcom/android/server/am/ActivityManagerService;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection;
HPLcom/android/server/am/ActivityManagerService;->incrementProcStateSeqAndNotifyAppsLocked()V
+HPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z
+HPLcom/android/server/am/ActivityManagerService;->isInMultiWindowMode(Landroid/os/IBinder;)Z
HPLcom/android/server/am/ActivityManagerService;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z
+HPLcom/android/server/am/ActivityManagerService;->isOnDeviceIdleWhitelistLocked(I)Z
+HPLcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z
HPLcom/android/server/am/ActivityManagerService;->isProcessAliveLocked(Lcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;Landroid/util/ArraySet;)Z
+HPLcom/android/server/am/ActivityManagerService;->isShuttingDownLocked()Z
+HPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
HPLcom/android/server/am/ActivityManagerService;->isSleepingLocked()Z
+HPLcom/android/server/am/ActivityManagerService;->isTopOfTask(Landroid/os/IBinder;)Z
+HPLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z
+HPLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z
+HPLcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZLjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->killProcessGroup(II)V
HPLcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
HPLcom/android/server/am/ActivityManagerService;->maybeUpdateProviderUsageStatsLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/am/ActivityManagerService;->maybeUpdateUsageStatsLocked(Lcom/android/server/am/ProcessRecord;J)V
+HPLcom/android/server/am/ActivityManagerService;->monitor()V
+HPLcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZI)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(II)V
+HPLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->notifyActivityDrawn(Landroid/os/IBinder;)V
+HPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V
HPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/am/ActivityManagerService;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I
HPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
+HPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V
+HPLcom/android/server/am/ActivityManagerService;->recordPssSampleLocked(Lcom/android/server/am/ProcessRecord;IJJJJ)V
HPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z
HPLcom/android/server/am/ActivityManagerService;->registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;
HPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V
+HPLcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
+HPLcom/android/server/am/ActivityManagerService;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
+HPLcom/android/server/am/ActivityManagerService;->requestPssLocked(Lcom/android/server/am/ProcessRecord;I)V
HPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V
HPLcom/android/server/am/ActivityManagerService;->resumedAppLocked()Lcom/android/server/am/ActivityRecord;
HPLcom/android/server/am/ActivityManagerService;->rotateBroadcastStatsIfNeededLocked()V
+HPLcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
+HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
+HPLcom/android/server/am/ActivityManagerService;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/ActivityManagerService;->serviceDoneExecuting(Landroid/os/IBinder;III)V
+HPLcom/android/server/am/ActivityManagerService;->setAppIdTempWhitelistStateLocked(IZ)V
+HPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLocked(Lcom/android/server/am/ProcessRecord;IJ)V
+HPLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V
+HPLcom/android/server/am/ActivityManagerService;->setRequestedOrientation(Landroid/os/IBinder;I)V
+HPLcom/android/server/am/ActivityManagerService;->setResumedActivityUncheckLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V
+HPLcom/android/server/am/ActivityManagerService;->showAskCompatModeDialogLocked(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I
+HPLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IILandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association;
HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZIZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZZ)Lcom/android/server/am/ProcessRecord;
HPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActivityManagerService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;ILandroid/content/ComponentName;)V
+HPLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
+HPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
+HPLcom/android/server/am/ActivityManagerService;->stringifyKBSize(J)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->stringifySize(JI)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->trimApplications()V
+HPLcom/android/server/am/ActivityManagerService;->uidOnBackgroundWhitelist(I)Z
+HPLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z
+HPLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V
HPLcom/android/server/am/ActivityManagerService;->updateCpuStats()V
+HPLcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
+HPLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZILcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)Z
+HPLcom/android/server/am/ActivityManagerService;->updateGlobalConfiguration(Landroid/content/res/Configuration;ZZIZ)I
HPLcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;JILjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I
HPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V
HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJ)Z
HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;Z)Z
+HPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
+HPLcom/android/server/am/ActivityManagerService;->updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V
+HPLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
+HPLcom/android/server/am/ActivityManagerShellCommand;->runStartActivity(Ljava/io/PrintWriter;)I
+HPLcom/android/server/am/ActivityMetricsLogger;->allStacksWindowsDrawn()Z
+HPLcom/android/server/am/ActivityMetricsLogger;->isAnyTransitionActive()Z
+HPLcom/android/server/am/ActivityMetricsLogger;->logAppTransitionMultiEvents()V
+HPLcom/android/server/am/ActivityMetricsLogger;->logWindowState()V
+HPLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;ZZ)V
+HPLcom/android/server/am/ActivityMetricsLogger;->notifyBindApplication(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityMetricsLogger;->notifyStartingWindowDrawn(IJ)V
+HPLcom/android/server/am/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/SparseIntArray;J)V
+HPLcom/android/server/am/ActivityMetricsLogger;->notifyVisibilityChanged(Lcom/android/server/am/ActivityRecord;Z)V
+HPLcom/android/server/am/ActivityMetricsLogger;->notifyWindowsDrawn(IJ)V
+HPLcom/android/server/am/ActivityRecord$Token;->-wrap0(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityRecord$Token;->toString()Ljava/lang/String;
+HPLcom/android/server/am/ActivityRecord$Token;->tokenToActivityRecordLocked(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/am/ActivityStackSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityRecord;->activityStoppedLocked(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+HPLcom/android/server/am/ActivityRecord;->applyOptionsLocked()V
+HPLcom/android/server/am/ActivityRecord;->canShowWhenLocked()Z
+HPLcom/android/server/am/ActivityRecord;->canTurnScreenOn()Z
+HPLcom/android/server/am/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;Z)Z
+HPLcom/android/server/am/ActivityRecord;->completeResumeLocked()V
+HPLcom/android/server/am/ActivityRecord;->computeBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/am/ActivityRecord;->continueLaunchTickingLocked()Z
+HPLcom/android/server/am/ActivityRecord;->createWindowContainer()V
+HPLcom/android/server/am/ActivityRecord;->ensureActivityConfigurationLocked(IZ)Z
+HPLcom/android/server/am/ActivityRecord;->finishLaunchTickingLocked()V
+HPLcom/android/server/am/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityRecord;->getDisplayId()I
+HPLcom/android/server/am/ActivityRecord;->getParent()Lcom/android/server/am/ConfigurationContainer;
HPLcom/android/server/am/ActivityRecord;->getStack()Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityRecord;->getStackId()I
+HPLcom/android/server/am/ActivityRecord;->getStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityRecord;->getTask()Lcom/android/server/am/TaskRecord;
+HPLcom/android/server/am/ActivityRecord;->handleAlreadyVisible()Z
+HPLcom/android/server/am/ActivityRecord;->hasDismissKeyguardWindows()Z
+HPLcom/android/server/am/ActivityRecord;->isAssistantActivity()Z
+HPLcom/android/server/am/ActivityRecord;->isConfigurationCompatible(Landroid/content/res/Configuration;)Z
+HPLcom/android/server/am/ActivityRecord;->isFocusable()Z
+HPLcom/android/server/am/ActivityRecord;->isHomeActivity()Z
+HPLcom/android/server/am/ActivityRecord;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityRecord;->isPersistable()Z
+HPLcom/android/server/am/ActivityRecord;->isRecentsActivity()Z
+HPLcom/android/server/am/ActivityRecord;->isResolverActivity()Z
HPLcom/android/server/am/ActivityRecord;->okToShowLocked()Z
+HPLcom/android/server/am/ActivityRecord;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/am/ActivityRecord;->onStartingWindowDrawn(J)V
+HPLcom/android/server/am/ActivityRecord;->onWindowsDrawn(J)V
+HPLcom/android/server/am/ActivityRecord;->onWindowsVisible()V
+HPLcom/android/server/am/ActivityRecord;->removeOrphanedStartingWindow(Z)V
+HPLcom/android/server/am/ActivityRecord;->reportLaunchTimeLocked(J)V
+HPLcom/android/server/am/ActivityRecord;->resumeKeyDispatchingLocked()V
+HPLcom/android/server/am/ActivityRecord;->setActivityType(ZILandroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;)V
+HPLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;Z)V
+HPLcom/android/server/am/ActivityRecord;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
+HPLcom/android/server/am/ActivityRecord;->setVisibility(Z)V
+HPLcom/android/server/am/ActivityRecord;->setVisible(Z)V
+HPLcom/android/server/am/ActivityRecord;->shouldBeVisibleIgnoringKeyguard(Z)Z
+HPLcom/android/server/am/ActivityRecord;->showStartingWindow(Lcom/android/server/am/ActivityRecord;ZZZ)V
+HPLcom/android/server/am/ActivityRecord;->startLaunchTickingLocked()V
+HPLcom/android/server/am/ActivityRecord;->stopFreezingScreenLocked(Z)V
+HPLcom/android/server/am/ActivityRecord;->supportsPictureInPicture()Z
+HPLcom/android/server/am/ActivityRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/am/ActivityRecord;->updateOverrideConfiguration()V
+HPLcom/android/server/am/ActivityStack$ActivityStackHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityStack;->activityDestroyedLocked(Landroid/os/IBinder;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityStack;->activityPausedLocked(Landroid/os/IBinder;Z)V
+HPLcom/android/server/am/ActivityStack;->addTask(Lcom/android/server/am/TaskRecord;IZLjava/lang/String;)V
+HPLcom/android/server/am/ActivityStack;->addToStopping(Lcom/android/server/am/ActivityRecord;ZZ)V
+HPLcom/android/server/am/ActivityStack;->adjustFocusedActivityStackLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityStack;->canShowWithInsecureKeyguard()Z
+HPLcom/android/server/am/ActivityStack;->cancelInitializingActivities()V
HPLcom/android/server/am/ActivityStack;->checkKeyguardVisibility(Lcom/android/server/am/ActivityRecord;ZZ)Z
+HPLcom/android/server/am/ActivityStack;->checkReadyForSleep()V
+HPLcom/android/server/am/ActivityStack;->checkTranslucentActivityWaiting(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStack;->cleanUpActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V
+HPLcom/android/server/am/ActivityStack;->closeSystemDialogsLocked()V
+HPLcom/android/server/am/ActivityStack;->completePauseLocked(ZLcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStack;->destroyActivityLocked(Lcom/android/server/am/ActivityRecord;ZLjava/lang/String;)Z
HPLcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;IZ)V
+HPLcom/android/server/am/ActivityStack;->executeAppTransition(Landroid/app/ActivityOptions;)V
+HPLcom/android/server/am/ActivityStack;->findStackInsertIndex(Z)I
+HPLcom/android/server/am/ActivityStack;->findTaskLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStackSupervisor$FindTaskResult;)V
+HPLcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;ZZ)Z
+HPLcom/android/server/am/ActivityStack;->finishCurrentActivityLocked(Lcom/android/server/am/ActivityRecord;IZ)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStack;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z
+HPLcom/android/server/am/ActivityStack;->getAdjustedPositionForTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityRecord;)I
+HPLcom/android/server/am/ActivityStack;->getAllRunningVisibleActivitiesLocked(Ljava/util/ArrayList;)V
+HPLcom/android/server/am/ActivityStack;->getAllTasks()Ljava/util/ArrayList;
+HPLcom/android/server/am/ActivityStack;->getDisplay()Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;
+HPLcom/android/server/am/ActivityStack;->getStackId()I
+HPLcom/android/server/am/ActivityStack;->getTasksLocked(Ljava/util/List;IZ)V
+HPLcom/android/server/am/ActivityStack;->getTopDismissingKeyguardActivity()Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStack;->getTopStackOnDisplay()Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityStack;->getWindowContainerBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/am/ActivityStack;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ActivityStack;->insertTaskAtTop(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStack;->isAssistantStack()Z
+HPLcom/android/server/am/ActivityStack;->isAttached()Z
+HPLcom/android/server/am/ActivityStack;->isDockedStack()Z
+HPLcom/android/server/am/ActivityStack;->isFocusable()Z
+HPLcom/android/server/am/ActivityStack;->isHomeOrRecentsStack()Z
+HPLcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStack;->isInStackLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStack;->isPinnedStack()Z
+HPLcom/android/server/am/ActivityStack;->isStackTranslucent(Lcom/android/server/am/ActivityRecord;I)Z
+HPLcom/android/server/am/ActivityStack;->logStartActivity(ILcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;)V
+HPLcom/android/server/am/ActivityStack;->makeInvisible(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityStack;->moveToFront(Ljava/lang/String;Lcom/android/server/am/TaskRecord;)V
+HPLcom/android/server/am/ActivityStack;->numActivities()I
+HPLcom/android/server/am/ActivityStack;->rankTaskLayers(I)I
+HPLcom/android/server/am/ActivityStack;->removeActivityFromHistoryLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Ljava/util/ArrayList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityStack;->removeTask(Lcom/android/server/am/TaskRecord;Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityStack;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStack;->resetAffinityTaskIfNeededLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/TaskRecord;ZZI)I
+HPLcom/android/server/am/ActivityStack;->resetTaskIfNeededLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStack;->resumeTopActivityInnerLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HPLcom/android/server/am/ActivityStack;->resumeTopActivityUncheckedLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HPLcom/android/server/am/ActivityStack;->schedulePauseTimeout(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStack;->setLaunchTime(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStack;->setResumedActivityLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
HPLcom/android/server/am/ActivityStack;->shouldBeVisible(Lcom/android/server/am/ActivityRecord;)I
+HPLcom/android/server/am/ActivityStack;->shouldSleepActivities()Z
+HPLcom/android/server/am/ActivityStack;->shouldSleepOrShutDownActivities()Z
+HPLcom/android/server/am/ActivityStack;->startActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;ZZLandroid/app/ActivityOptions;)V
+HPLcom/android/server/am/ActivityStack;->startLaunchTraces(Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityStack;->startPausingLocked(ZZLcom/android/server/am/ActivityRecord;Z)Z
+HPLcom/android/server/am/ActivityStack;->stopActivityLocked(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStack;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
+HPLcom/android/server/am/ActivityStack;->topActivity()Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStack;->topActivityOccludesKeyguard()Z
HPLcom/android/server/am/ActivityStack;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord;
HPLcom/android/server/am/ActivityStack;->topRunningActivityLocked(Z)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStack;->topRunningNonDelayedActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStack;->topTask()Lcom/android/server/am/TaskRecord;
+HPLcom/android/server/am/ActivityStack;->updateActivityApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/ActivityStack;->updateBehindFullscreen(ZZLcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)Z
+HPLcom/android/server/am/ActivityStack;->updateTaskMovement(Lcom/android/server/am/TaskRecord;Z)V
+HPLcom/android/server/am/ActivityStack;->updateTaskReturnToForTopInsertion(Lcom/android/server/am/TaskRecord;)V
+HPLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->isPrivate()Z
+HPLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->isSleeping()Z
+HPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->activityIdleInternal(Lcom/android/server/am/ActivityRecord;Z)V
+HPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityStackSupervisor;->acquireLaunchWakelock()V
+HPLcom/android/server/am/ActivityStackSupervisor;->activityIdleInternalLocked(Landroid/os/IBinder;ZZLandroid/content/res/Configuration;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStackSupervisor;->allPausedActivitiesComplete()Z
+HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesComplete()Z
+HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesIdle()Z
+HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesVisible()Z
+HPLcom/android/server/am/ActivityStackSupervisor;->anyTaskForIdLocked(III)Lcom/android/server/am/TaskRecord;
+HPLcom/android/server/am/ActivityStackSupervisor;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->cancelInitializingActivities()V
+HPLcom/android/server/am/ActivityStackSupervisor;->checkActivityBelongsInStack(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;ZLcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;Landroid/app/ActivityOptions;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->continueUpdateBounds(I)V
+HPLcom/android/server/am/ActivityStackSupervisor;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;IZ)V
+HPLcom/android/server/am/ActivityStackSupervisor;->findTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStackSupervisor;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->getActivityDisplay(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;
+HPLcom/android/server/am/ActivityStackSupervisor;->getActivityDisplayOrCreateLocked(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;
+HPLcom/android/server/am/ActivityStackSupervisor;->getDisplayOverrideConfiguration(I)Landroid/content/res/Configuration;
+HPLcom/android/server/am/ActivityStackSupervisor;->getFocusedStack()Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityStackSupervisor;->getLastStack()Lcom/android/server/am/ActivityStack;
HPLcom/android/server/am/ActivityStackSupervisor;->getResumedActivityLocked()Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStackSupervisor;->getStack(I)Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityStackSupervisor;->getStack(IZZ)Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(I)Landroid/app/ActivityManager$StackInfo;
+HPLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(Lcom/android/server/am/ActivityStack;)Landroid/app/ActivityManager$StackInfo;
+HPLcom/android/server/am/ActivityStackSupervisor;->getStacksOnDefaultDisplay()Ljava/util/ArrayList;
+HPLcom/android/server/am/ActivityStackSupervisor;->getTasksLocked(ILjava/util/List;IZ)V
+HPLcom/android/server/am/ActivityStackSupervisor;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/am/TaskRecord;IIIZ)V
+HPLcom/android/server/am/ActivityStackSupervisor;->isCurrentProfileLocked(I)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->isFocusedStack(Lcom/android/server/am/ActivityStack;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->isFrontOfStackList(Lcom/android/server/am/ActivityStack;Ljava/util/List;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->isFrontStackOnDisplay(Lcom/android/server/am/ActivityStack;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->isInAnyStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStackSupervisor;->isStackDockedInEffect(I)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->isStoppingNoHistoryActivity()Z
+HPLcom/android/server/am/ActivityStackSupervisor;->moveFocusableActivityStackToFrontLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->notifyAppTransitionDone()V
+HPLcom/android/server/am/ActivityStackSupervisor;->pauseBackStacks(ZLcom/android/server/am/ActivityRecord;Z)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->processStoppingActivitiesLocked(Lcom/android/server/am/ActivityRecord;ZZ)Ljava/util/ArrayList;
+HPLcom/android/server/am/ActivityStackSupervisor;->rankTaskLayersIfNeeded()V
+HPLcom/android/server/am/ActivityStackSupervisor;->readyToResume()Z
+HPLcom/android/server/am/ActivityStackSupervisor;->realStartActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ProcessRecord;ZZ)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStackSupervisor;->reportResumedActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/am/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/am/ActivityStackSupervisor;->resumeFocusedStackTopActivityLocked(Lcom/android/server/am/ActivityStack;Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HPLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleLocked()V
+HPLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleTimeoutLocked(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStackSupervisor;->sendWaitingVisibleReportLocked(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStackSupervisor;->setFocusStackUnchecked(Ljava/lang/String;Lcom/android/server/am/ActivityStack;)V
+HPLcom/android/server/am/ActivityStackSupervisor;->setLaunchSource(I)V
+HPLcom/android/server/am/ActivityStackSupervisor;->startSpecificActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V
+HPLcom/android/server/am/ActivityStackSupervisor;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStackSupervisor;->updatePreviousProcessLocked(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStackSupervisor;->updateUIDsPresentOnDisplay()V
+HPLcom/android/server/am/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/am/TaskRecord;IILandroid/app/ActivityOptions;)V
+HPLcom/android/server/am/ActivityStarter;->computeStackFocus(Lcom/android/server/am/ActivityRecord;ZLandroid/graphics/Rect;ILandroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityStarter;->getLaunchStack(Lcom/android/server/am/ActivityRecord;ILcom/android/server/am/TaskRecord;Landroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/ActivityStarter;->postStartActivityProcessing(Lcom/android/server/am/ActivityRecord;IILcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)V
+HPLcom/android/server/am/ActivityStarter;->sendPowerHintForLaunchStartIfNeeded(ZLcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/ActivityStarter;->setInitialState(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;ZILcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V
+HPLcom/android/server/am/ActivityStarter;->setTargetStackAndMoveToFrontIfNeeded(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/ActivityStarter;->setTaskFromReuseOrCreateNewTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityStack;)I
+HPLcom/android/server/am/ActivityStarter;->startActivity(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILandroid/app/ActivityOptions;ZZ[Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;)I
+HPLcom/android/server/am/ActivityStarter;->startActivity(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I
+HPLcom/android/server/am/ActivityStarter;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILandroid/app/ActivityOptions;ZZ[Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityStarter;->startActivityMayWait(Landroid/app/IApplicationThread;ILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/app/WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;ZILcom/android/server/am/TaskRecord;Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityStarter;->startActivityUnchecked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I
+HPLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppErrors;->isBadProcessLocked(Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleRunnable(Ljava/lang/Runnable;)V
HPLcom/android/server/am/BatteryStatsService;->enforceCallingPermission()V
+HPLcom/android/server/am/BatteryStatsService;->getService()Lcom/android/internal/app/IBatteryStats;
+HPLcom/android/server/am/BatteryStatsService;->isOnBattery()Z
+HPLcom/android/server/am/BatteryStatsService;->lambda$-com_android_server_am_BatteryStatsService_31479(IIIIIIII)V
+HPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
+HPLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteFullWifiLockAcquiredFromSource(Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteFullWifiLockReleasedFromSource(Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;II)V
+HPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteNetworkInterfaceType(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteProcessStart(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V
HPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopAudio(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V
HPLcom/android/server/am/BatteryStatsService;->noteStopWakelock(IILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteUserActivity(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteWifiRadioPowerState(IJI)V
+HPLcom/android/server/am/BatteryStatsService;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIII)V
+HPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;IIZZ)V
+HPLcom/android/server/am/BroadcastQueue$BroadcastHandler;->handleMessage(Landroid/os/Message;)V
HPLcom/android/server/am/BroadcastQueue;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueue;->backgroundServicesFinishedLocked(I)V
+HPLcom/android/server/am/BroadcastQueue;->cancelBroadcastTimeoutLocked()V
+HPLcom/android/server/am/BroadcastQueue;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
HPLcom/android/server/am/BroadcastQueue;->deliverToRegisteredReceiverLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;ZI)V
HPLcom/android/server/am/BroadcastQueue;->enqueueBroadcastHelper(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueue;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
HPLcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
+HPLcom/android/server/am/BroadcastQueue;->getMatchingOrderedReceiver(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z
+HPLcom/android/server/am/BroadcastQueue;->performReceiveLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
HPLcom/android/server/am/BroadcastQueue;->processCurBroadcastLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/ProcessRecord;)V
HPLcom/android/server/am/BroadcastQueue;->processNextBroadcast(Z)V
+HPLcom/android/server/am/BroadcastQueue;->replaceBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastQueue;->replaceParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastQueue;->ringAdvance(III)I
+HPLcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
+HPLcom/android/server/am/BroadcastQueue;->setBroadcastTimeoutLocked(J)V
+HPLcom/android/server/am/BroadcastQueue;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZI)V
+HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V
HPLcom/android/server/am/BroadcastRecord;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
+HPLcom/android/server/am/BroadcastRecord;->maybeStripForHistory()Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastStats$ActionEntry;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastStats$PackageEntry;-><init>()V
+HPLcom/android/server/am/BroadcastStats;->addBackgroundCheckViolation(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V
HPLcom/android/server/am/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
+HPLcom/android/server/am/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I
+HPLcom/android/server/am/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/am/ConfigurationContainer;->getOverrideConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/am/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V
+HPLcom/android/server/am/ConfigurationContainer;->onParentChanged()V
+HPLcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/IServiceConnection;IILandroid/app/PendingIntent;)V
HPLcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
+HPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
HPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
+HPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/ContentProviderHolder;
+HPLcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle;
+HPLcom/android/server/am/EventLogTags;->writeAmFocusedStack(IIILjava/lang/String;)V
+HPLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJ)V
+HPLcom/android/server/am/EventLogTags;->writeAmSetResumedActivity(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/EventLogTags;->writeAmStopActivity(IILjava/lang/String;)V
+HPLcom/android/server/am/EventLogTags;->writeAmUidActive(I)V
+HPLcom/android/server/am/EventLogTags;->writeAmUidRunning(I)V
+HPLcom/android/server/am/EventLogTags;->writeAmUidStopped(I)V
+HPLcom/android/server/am/IntentBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V
+HPLcom/android/server/am/KeyguardController;->beginActivityVisibilityUpdate()V
+HPLcom/android/server/am/KeyguardController;->endActivityVisibilityUpdate()V
+HPLcom/android/server/am/KeyguardController;->isKeyguardLocked()Z
+HPLcom/android/server/am/KeyguardController;->isKeyguardShowing()Z
+HPLcom/android/server/am/KeyguardController;->visibilitiesUpdated()V
+HPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)V
+HPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I
+HPLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/PendingIntentRecord$Key;I)V
+HPLcom/android/server/am/PendingIntentRecord;->completeFinalize()V
+HPLcom/android/server/am/PendingIntentRecord;->finalize()V
+HPLcom/android/server/am/PendingIntentRecord;->sendInner(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
+HPLcom/android/server/am/PendingIntentRecord;->sendWithResult(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
+HPLcom/android/server/am/ProcessList;->computeNextPssTime(IZZZJ)J
HPLcom/android/server/am/ProcessList;->procStatesDifferForMem(II)Z
+HPLcom/android/server/am/ProcessList;->remove(I)V
HPLcom/android/server/am/ProcessList;->setOomAdj(III)V
HPLcom/android/server/am/ProcessList;->writeLmkd(Ljava/nio/ByteBuffer;)V
+HPLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)V
+HPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;ILcom/android/server/am/ProcessStatsService;)Z
+HPLcom/android/server/am/ProcessRecord;->forceProcessStateUpTo(I)V
HPLcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String;
+HPLcom/android/server/am/ProcessRecord;->getSetAdjWithServices()I
+HPLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;Z)V
+HPLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V
HPLcom/android/server/am/ProcessRecord;->modifyRawOomAdj(I)I
+HPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ProcessRecord;->setPid(I)V
+HPLcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
+HPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V
+HPLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
HPLcom/android/server/am/ProcessStatsService;->getMemFactorLocked()I
+HPLcom/android/server/am/ProcessStatsService;->getProcessStateLocked(Ljava/lang/String;IILjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState;
+HPLcom/android/server/am/ProcessStatsService;->getServiceStateLocked(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState;
HPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IZJ)Z
+HPLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z
+HPLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z
+HPLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
+HPLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
+HPLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap;
+HPLcom/android/server/am/ProviderMap;->getProvidersByName(I)Ljava/util/HashMap;
+HPLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
+HPLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
+HPLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V
+HPLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V
+HPLcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V
+HPLcom/android/server/am/ReceiverList;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/am/ReceiverList;->hashCode()I
+HPLcom/android/server/am/RecentTasks;->addLocked(Lcom/android/server/am/TaskRecord;)V
+HPLcom/android/server/am/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/am/TaskRecord;Z)V
+HPLcom/android/server/am/RecentTasks;->shouldPersistTaskLocked(Lcom/android/server/am/TaskRecord;)Z
+HPLcom/android/server/am/RecentTasks;->syncPersistentTaskIdsLocked()V
+HPLcom/android/server/am/RecentTasks;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
+HPLcom/android/server/am/RecentTasks;->trimForTaskLocked(Lcom/android/server/am/TaskRecord;Z)I
+HPLcom/android/server/am/RecentTasks;->usersWithRecentsLoadedLocked()[I
+HPLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/am/ActivityManagerService$NeededUriGrants;I)V
+HPLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V
HPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;Landroid/content/ComponentName;Landroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;)V
+HPLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V
HPLcom/android/server/am/ServiceRecord;->findDeliveredStart(IZ)Lcom/android/server/am/ServiceRecord$StartItem;
+HPLcom/android/server/am/ServiceRecord;->getLastStartId()I
+HPLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState;
HPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z
+HPLcom/android/server/am/ServiceRecord;->makeNextStartId()I
+HPLcom/android/server/am/ServiceRecord;->postNotification()V
+HPLcom/android/server/am/ServiceRecord;->resetRestartCounter()V
HPLcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord;
+HPLcom/android/server/am/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/TaskChangeNotificationController;->-wrap0(Lcom/android/server/am/TaskChangeNotificationController;Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+HPLcom/android/server/am/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+HPLcom/android/server/am/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+HPLcom/android/server/am/TaskChangeNotificationController;->notifyTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V
+HPLcom/android/server/am/TaskChangeNotificationController;->notifyTaskStackChanged()V
+HPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->processNextItem()V
+HPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->run()V
+HPLcom/android/server/am/TaskPersister;->-get0(Lcom/android/server/am/TaskPersister;)J
+HPLcom/android/server/am/TaskPersister;->-get1(Lcom/android/server/am/TaskPersister;)Lcom/android/server/am/RecentTasks;
+HPLcom/android/server/am/TaskPersister;->getUserImagesDir(I)Ljava/io/File;
+HPLcom/android/server/am/TaskPersister;->getUserTasksDir(I)Ljava/io/File;
+HPLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V
+HPLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[Ljava/io/File;)V
+HPLcom/android/server/am/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List;
+HPLcom/android/server/am/TaskPersister;->saveToXml(Lcom/android/server/am/TaskRecord;)Ljava/io/StringWriter;
+HPLcom/android/server/am/TaskPersister;->wakeup(Lcom/android/server/am/TaskRecord;Z)V
+HPLcom/android/server/am/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V
+HPLcom/android/server/am/TaskPersister;->writeTaskIdsFiles()V
+HPLcom/android/server/am/TaskRecord;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;I)V
+HPLcom/android/server/am/TaskRecord;->addActivityAtIndex(ILcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/TaskRecord;->addActivityToTop(Lcom/android/server/am/ActivityRecord;)V
+HPLcom/android/server/am/TaskRecord;->createWindowContainer(ZZ)V
+HPLcom/android/server/am/TaskRecord;->findEffectiveRootIndex()I
+HPLcom/android/server/am/TaskRecord;->freeLastThumbnail()V
+HPLcom/android/server/am/TaskRecord;->getAllRunningVisibleActivitiesLocked(Ljava/util/ArrayList;)V
+HPLcom/android/server/am/TaskRecord;->getBaseIntent()Landroid/content/Intent;
+HPLcom/android/server/am/TaskRecord;->getLaunchBounds()Landroid/graphics/Rect;
HPLcom/android/server/am/TaskRecord;->getStack()Lcom/android/server/am/ActivityStack;
+HPLcom/android/server/am/TaskRecord;->getStackId()I
+HPLcom/android/server/am/TaskRecord;->getTaskToReturnTo()I
+HPLcom/android/server/am/TaskRecord;->getTopActivity()Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/TaskRecord;->getWindowContainerBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/am/TaskRecord;->isHomeTask()Z
+HPLcom/android/server/am/TaskRecord;->isOverHomeStack()Z
+HPLcom/android/server/am/TaskRecord;->isResizeable()Z
+HPLcom/android/server/am/TaskRecord;->isResizeable(Z)Z
+HPLcom/android/server/am/TaskRecord;->performClearTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord;
HPLcom/android/server/am/TaskRecord;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/am/ActivityStackSupervisor;)Lcom/android/server/am/TaskRecord;
+HPLcom/android/server/am/TaskRecord;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/am/TaskRecord;->setFrontOfTask()V
+HPLcom/android/server/am/TaskRecord;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
+HPLcom/android/server/am/TaskRecord;->supportsSplitScreen()Z
HPLcom/android/server/am/TaskRecord;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord;
+HPLcom/android/server/am/TaskRecord;->touchActiveTime()V
+HPLcom/android/server/am/TaskRecord;->updateEffectiveIntent()V
+HPLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;)Z
+HPLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
+HPLcom/android/server/am/TaskRecord;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect;
+HPLcom/android/server/am/TaskRecord;->updateTaskDescription()V
+HPLcom/android/server/am/UidRecord;-><init>(I)V
HPLcom/android/server/am/UidRecord;->reset()V
+HPLcom/android/server/am/UidRecord;->updateHasInternetPermission()V
+HPLcom/android/server/am/UidRecord;->updateLastDispatchedProcStateSeq(I)V
+HPLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I
+HPLcom/android/server/am/UserController$Injector;->checkComponentPermission(Ljava/lang/String;IIIZ)I
+HPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService;
+HPLcom/android/server/am/UserController;->exists(I)Z
+HPLcom/android/server/am/UserController;->getCurrentUser()Landroid/content/pm/UserInfo;
+HPLcom/android/server/am/UserController;->getCurrentUserIdLocked()I
+HPLcom/android/server/am/UserController;->getProfileIds(I)Ljava/util/Set;
+HPLcom/android/server/am/UserController;->getStartedUserArrayLocked()[I
HPLcom/android/server/am/UserController;->getStartedUserStateLocked(I)Lcom/android/server/am/UserState;
+HPLcom/android/server/am/UserController;->getUserInfo(I)Landroid/content/pm/UserInfo;
HPLcom/android/server/am/UserController;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I
-HPLcom/android/server/am/UserController;->isUserStoppingOrShuttingDownLocked(I)Z
+HPLcom/android/server/am/UserController;->hasStartedUserState(I)Z
+HPLcom/android/server/am/UserController;->isSameProfileGroup(II)Z
+HPLcom/android/server/am/UserController;->isUserRunningLocked(II)Z
+HPLcom/android/server/am/UserController;->unsafeConvertIncomingUserLocked(I)I
+HPLcom/android/server/am/VrController;->onTopProcChangedLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/VrController;->onVrModeChanged(Lcom/android/server/am/ActivityRecord;)Z
+HPLcom/android/server/am/VrController;->setVrRenderThreadLocked(IIZ)I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->getUserId()I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceCallFromPackage(Ljava/lang/String;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getGroupParent(I)I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->-get10(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/os/UserManager;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->-get9(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I
HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isBoundWidgetPackage(Ljava/lang/String;I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isUserRunningAndUnlocked(I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->onPackageBroadcastReceived(Landroid/content/Intent;I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseProviderInfoXml(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ResolveInfo;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedState(I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateProvidersForPackageLocked(Ljava/lang/String;ILjava/util/Set;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->writeProfileStateToFileLocked(Ljava/io/FileOutputStream;I)Z
+HPLcom/android/server/audio/AudioEventLogger$Event;-><init>()V
+HPLcom/android/server/audio/AudioEventLogger;->log(Lcom/android/server/audio/AudioEventLogger$Event;)V
+HPLcom/android/server/audio/AudioService$2;->disableAudioForUid(ZI)V
+HPLcom/android/server/audio/AudioService$2;->onUidCachedChanged(IZ)V
+HPLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/audio/AudioService$AudioHandler;->onLoadSoundEffects()Z
+HPLcom/android/server/audio/AudioService$AudioHandler;->onPlaySoundEffect(II)V
+HPLcom/android/server/audio/AudioService$AudioHandler;->setAllVolumes(Lcom/android/server/audio/AudioService$VolumeStreamState;)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->applyAllVolumes()V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->getMaxIndex()I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->getSettingNameForDevice(I)Ljava/lang/String;
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->hasValidSettingsName()Z
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(IILjava/lang/String;)Z
+HPLcom/android/server/audio/AudioService;->-get17(Lcom/android/server/audio/AudioService;)Landroid/content/ContentResolver;
+HPLcom/android/server/audio/AudioService;->-get27(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/PlaybackActivityMonitor;
+HPLcom/android/server/audio/AudioService;->-get35(Lcom/android/server/audio/AudioService;)Landroid/media/SoundPool;
+HPLcom/android/server/audio/AudioService;->-get39(Lcom/android/server/audio/AudioService;)[Lcom/android/server/audio/AudioService$VolumeStreamState;
+HPLcom/android/server/audio/AudioService;->-get8(Lcom/android/server/audio/AudioService;)Landroid/os/PowerManager$WakeLock;
+HPLcom/android/server/audio/AudioService;->-get9(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$AudioHandler;
+HPLcom/android/server/audio/AudioService;->-wrap32(Lcom/android/server/audio/AudioService;Landroid/os/Handler;IIILjava/lang/Object;I)V
+HPLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V
+HPLcom/android/server/audio/AudioService;->getDeviceForStream(I)I
+HPLcom/android/server/audio/AudioService;->getDevicesForStream(I)I
+HPLcom/android/server/audio/AudioService;->getDevicesForStream(IZ)I
+HPLcom/android/server/audio/AudioService;->playerEvent(II)V
+HPLcom/android/server/audio/AudioService;->queueMsgUnderWakeLock(Landroid/os/Handler;IIILjava/lang/Object;I)V
+HPLcom/android/server/audio/AudioService;->rescaleIndex(III)I
+HPLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;)V
+HPLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->checkBanPlayer(Landroid/media/AudioPlaybackConfiguration;I)Z
+HPLcom/android/server/audio/PlaybackActivityMonitor;->disableAudioForUid(ZI)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange()V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(III)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
+HPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V
+HPLcom/android/server/autofill/AutofillManagerService;->getServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl;
+HPLcom/android/server/autofill/AutofillManagerService;->peekServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl;
+HPLcom/android/server/autofill/AutofillManagerServiceImpl;->updateSessionLocked(IILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)Z
HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onFillRequestFailure(Ljava/lang/CharSequence;Ljava/lang/String;)V
HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onFillRequestSuccess(ILandroid/service/autofill/FillResponse;ILjava/lang/String;)V
HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onSaveRequestFailure(Ljava/lang/CharSequence;Ljava/lang/String;)V
HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onSaveRequestSuccess(Ljava/lang/String;)V
HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onServiceDied(Lcom/android/server/autofill/RemoteFillService;)V
-HPLcom/android/server/autofill/RemoteFillService$PendingRequest;->fail(Lcom/android/server/autofill/RemoteFillService;)V
+HPLcom/android/server/autofill/RemoteFillService$PendingRequest;->onTimeout(Lcom/android/server/autofill/RemoteFillService;)V
HPLcom/android/server/autofill/ViewState$Listener;->onFillReady(Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;)V
HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->authenticate(IILandroid/content/IntentSender;Landroid/os/Bundle;)V
HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->cancelSave()V
@@ -831,7 +2134,23 @@ HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->requestHideFil
HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->requestShowFillUi(Landroid/view/autofill/AutofillId;IILandroid/view/autofill/IAutofillWindowPresenter;)V
HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->save()V
HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->startIntentSender(Landroid/content/IntentSender;)V
+HPLcom/android/server/backup/BackupManagerService$1;->run()V
+HPLcom/android/server/backup/BackupManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/backup/BackupManagerService$7;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
+HPLcom/android/server/backup/BackupManagerService$7;->run()V
+HPLcom/android/server/backup/BackupManagerService$BackupRequest;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V
+HPLcom/android/server/backup/BackupManagerService;->-wrap18(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
+HPLcom/android/server/backup/BackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V
+HPLcom/android/server/backup/BackupManagerService;->allAgentPackages()Ljava/util/List;
+HPLcom/android/server/backup/BackupManagerService;->appIsDisabled(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z
+HPLcom/android/server/backup/BackupManagerService;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z
+HPLcom/android/server/backup/BackupManagerService;->dataChanged(Ljava/lang/String;)V
+HPLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;)V
+HPLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V
HPLcom/android/server/backup/BackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet;
+HPLcom/android/server/backup/BackupManagerService;->dequeueFullBackupLocked(Ljava/lang/String;)V
+HPLcom/android/server/backup/BackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList;
+HPLcom/android/server/backup/BackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V
HPLcom/android/server/backup/BackupManagerServiceInterface;->acknowledgeAdbBackupOrRestore(IZLjava/lang/String;Ljava/lang/String;Landroid/app/backup/IFullBackupRestoreObserver;)V
HPLcom/android/server/backup/BackupManagerServiceInterface;->adbBackup(Landroid/os/ParcelFileDescriptor;ZZZZZZZZ[Ljava/lang/String;)V
HPLcom/android/server/backup/BackupManagerServiceInterface;->adbRestore(Landroid/os/ParcelFileDescriptor;)V
@@ -857,6 +2176,7 @@ HPLcom/android/server/backup/BackupManagerServiceInterface;->getDataManagementLa
HPLcom/android/server/backup/BackupManagerServiceInterface;->getDestinationString(Ljava/lang/String;)Ljava/lang/String;
HPLcom/android/server/backup/BackupManagerServiceInterface;->getTransportWhitelist()[Ljava/lang/String;
HPLcom/android/server/backup/BackupManagerServiceInterface;->hasBackupPassword()Z
+HPLcom/android/server/backup/BackupManagerServiceInterface;->initializeTransports([Ljava/lang/String;Landroid/app/backup/IBackupObserver;)V
HPLcom/android/server/backup/BackupManagerServiceInterface;->isAppEligibleForBackup(Ljava/lang/String;)Z
HPLcom/android/server/backup/BackupManagerServiceInterface;->isBackupEnabled()Z
HPLcom/android/server/backup/BackupManagerServiceInterface;->listAllTransportComponents()[Landroid/content/ComponentName;
@@ -874,55 +2194,278 @@ HPLcom/android/server/backup/BackupManagerServiceInterface;->setBackupPassword(L
HPLcom/android/server/backup/BackupManagerServiceInterface;->setBackupProvisioned(Z)V
HPLcom/android/server/backup/BackupManagerServiceInterface;->tearDownAgentAndKill(Landroid/content/pm/ApplicationInfo;)V
HPLcom/android/server/backup/BackupManagerServiceInterface;->waitUntilOperationComplete(I)Z
+HPLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;)V
+HPLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;J)V
+HPLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;)Ljava/util/List;
+HPLcom/android/server/backup/Trampoline;->dataChanged(Ljava/lang/String;)V
HPLcom/android/server/backup/TransportManager$TransportBoundListener;->onTransportBound(Lcom/android/internal/backup/IBackupTransport;)Z
+HPLcom/android/server/backup/TransportManager;->onPackageRemoved(Ljava/lang/String;)V
+HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->hasPrimaryClip(Ljava/lang/String;)Z
+HPLcom/android/server/clipboard/ClipboardService;->clipboardAccessAllowed(ILjava/lang/String;I)Z
+HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCallerIsSystemOr(Ljava/lang/String;I)V
+HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkUsesFeature(Ljava/lang/String;I)V
+HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap3()Z
+HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap4()I
+HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap6(Lcom/android/server/companion/CompanionDeviceManagerService;ILjava/lang/String;)Ljava/util/Set;
HPLcom/android/server/companion/CompanionDeviceManagerService;->getCallingUserId()I
+HPLcom/android/server/companion/CompanionDeviceManagerService;->getStorageFileForUser(I)Landroid/util/AtomicFile;
+HPLcom/android/server/companion/CompanionDeviceManagerService;->isCallerSystem()Z
+HPLcom/android/server/companion/CompanionDeviceManagerService;->readAllAssociations(ILjava/lang/String;)Ljava/util/Set;
+HPLcom/android/server/connectivity/NetdEventListenerService;->maybeVerboseLog(Ljava/lang/String;[Ljava/lang/Object;)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore(Z)I
HPLcom/android/server/connectivity/NetworkAgentInfo;->getNetworkState()Landroid/net/NetworkState;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isBackgroundNetwork()Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isLingering()Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isSatisfyingRequest(I)Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isVPN()Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->numForegroundNetworkRequests()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->numNetworkRequests()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->numRequestNetworkRequests()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->requestAt(I)Landroid/net/NetworkRequest;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->satisfies(Landroid/net/NetworkRequest;)Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->setCurrentScore(I)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->updateLingerTimer()V
+HPLcom/android/server/connectivity/PermissionMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/connectivity/PermissionMonitor;->hasNetworkPermission(Landroid/content/pm/PackageInfo;)Z
HPLcom/android/server/connectivity/PermissionMonitor;->hasPermission(Landroid/content/pm/PackageInfo;Ljava/lang/String;)Z
+HPLcom/android/server/connectivity/PermissionMonitor;->startMonitoring()V
+HPLcom/android/server/connectivity/PermissionMonitor;->toIntArray(Ljava/util/List;)[I
+HPLcom/android/server/connectivity/PermissionMonitor;->update(Ljava/util/Set;Ljava/util/Map;Z)V
HPLcom/android/server/connectivity/Vpn;->appliesToUid(I)Z
+HPLcom/android/server/connectivity/Vpn;->isBlockingUid(I)Z
+HPLcom/android/server/connectivity/Vpn;->isRunningLocked()Z
+HPLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats;
+HPLcom/android/server/content/ContentService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/content/ContentService$ObserverCall;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZI)V
+HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->-get0(Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;)I
HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V
+HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V
+HPLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V
HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V
+HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V
HPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(ZLandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V
HPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V
HPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I
HPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String;
HPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z
+HPLcom/android/server/content/ContentService;->enforceCrossUserPermission(ILjava/lang/String;)V
+HPLcom/android/server/content/ContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I
+HPLcom/android/server/content/ContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I
+HPLcom/android/server/content/ContentService;->getMasterSyncAutomatically()Z
+HPLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z
+HPLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;)Ljava/lang/String;
+HPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
+HPLcom/android/server/content/ContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z
+HPLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z
+HPLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager;
+HPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I
+HPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V
+HPLcom/android/server/content/ContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z
+HPLcom/android/server/content/ContentService;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z
HPLcom/android/server/content/ContentService;->notifyChange(Landroid/net/Uri;Landroid/database/IContentObserver;ZIII)V
+HPLcom/android/server/content/ContentService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V
+HPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V
+HPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->closeCurrentLogLocked()V
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String;
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->log([Ljava/lang/Object;)V
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V
+HPLcom/android/server/content/SyncManager$7;->run()V
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->toString()Ljava/lang/String;
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->toString(Ljava/lang/StringBuilder;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I
+HPLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z
+HPLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->tryEnqueueMessageUntilReadyToRun(Landroid/os/Message;)Z
+HPLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V
+HPLcom/android/server/content/SyncManager;->-get15(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager$WakeLock;
+HPLcom/android/server/content/SyncManager;->-wrap5(Lcom/android/server/content/SyncManager;)Z
+HPLcom/android/server/content/SyncManager;->canAccessAccount(Landroid/accounts/Account;Ljava/lang/String;I)Z
+HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;Z)I
+HPLcom/android/server/content/SyncManager;->formatDurationHMS(Ljava/lang/StringBuilder;J)Ljava/lang/StringBuilder;
+HPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;
+HPLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
+HPLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
+HPLcom/android/server/content/SyncManager;->getSyncAdapterTypes(I)[Landroid/content/SyncAdapterType;
+HPLcom/android/server/content/SyncManager;->getSyncStorageEngine()Lcom/android/server/content/SyncStorageEngine;
+HPLcom/android/server/content/SyncManager;->isJobIdInUseLockedH(ILjava/util/List;)Z
+HPLcom/android/server/content/SyncManager;->printTwoDigitNumber(Ljava/lang/StringBuilder;JCZ)Z
+HPLcom/android/server/content/SyncManager;->readDataConnectionState()Z
+HPLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;)V
HPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJ)V
+HPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V
+HPLcom/android/server/content/SyncManager;->setAuthorityPendingState(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HPLcom/android/server/content/SyncManager;->verifyJobScheduler()V
+HPLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJ)V
+HPLcom/android/server/content/SyncOperation;->dump(Landroid/content/pm/PackageManager;Z)Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V
HPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation;
+HPLcom/android/server/content/SyncOperation;->reasonToString(Landroid/content/pm/PackageManager;I)Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle;
HPLcom/android/server/content/SyncOperation;->toKey()Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->toString()Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String;
+HPLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V
+HPLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+HPLcom/android/server/content/SyncStorageEngine$EndPoint;->toString()Ljava/lang/String;
HPLcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener;->onAuthorityRemoved(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
HPLcom/android/server/content/SyncStorageEngine$OnSyncRequestListener;->onSyncRequest(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILandroid/os/Bundle;)V
HPLcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;->onPeriodicSyncAdded(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;JJ)V
+HPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+HPLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair;
+HPLcom/android/server/content/SyncStorageEngine;->getCurrentSyncs(I)Ljava/util/List;
+HPLcom/android/server/content/SyncStorageEngine;->getCurrentSyncsLocked(I)Ljava/util/List;
+HPLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
+HPLcom/android/server/content/SyncStorageEngine;->getMasterSyncAutomatically(I)Z
+HPLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+HPLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;)Z
+HPLcom/android/server/content/SyncStorageEngine;->isSyncActive(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+HPLcom/android/server/content/SyncStorageEngine;->isSyncPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+HPLcom/android/server/content/SyncStorageEngine;->parseAuthority(Lorg/xmlpull/v1/XmlPullParser;ILcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+HPLcom/android/server/content/SyncStorageEngine;->readAccountInfoLocked()V
+HPLcom/android/server/content/SyncStorageEngine;->reportChange(I)V
+HPLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJ)V
+HPLcom/android/server/content/SyncStorageEngine;->writeAccountInfoLocked()V
+HPLcom/android/server/content/SyncStorageEngine;->writeStatusLocked()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUid()I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J
HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V
HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->userHandleGetCallingUserId()I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveAdminWithPolicy(II)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap3(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceFullCrossUsersPermission(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceSystemUserOrPermissionIfCrossUser(ILjava/lang/String;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminWithPolicyForUidLocked(Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(IZ)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwner(I)Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;
HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z
+HPLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z
HPLcom/android/server/display/AutomaticBrightnessController$1;->onSensorChanged(Landroid/hardware/SensorEvent;)V
HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getLux(I)F
HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getTime(I)J
HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->offsetOf(I)I
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V
HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->size()I
+HPLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->handleMessage(Landroid/os/Message;)V
HPLcom/android/server/display/AutomaticBrightnessController$Callbacks;->updateBrightness()V
-HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(J)F
+HPLcom/android/server/display/AutomaticBrightnessController;->-get0(Lcom/android/server/display/AutomaticBrightnessController;)Z
+HPLcom/android/server/display/AutomaticBrightnessController;->-wrap1(Lcom/android/server/display/AutomaticBrightnessController;JF)V
+HPLcom/android/server/display/AutomaticBrightnessController;->-wrap2(Lcom/android/server/display/AutomaticBrightnessController;)V
+HPLcom/android/server/display/AutomaticBrightnessController;->applyLightSensorMeasurement(JF)V
+HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F
HPLcom/android/server/display/AutomaticBrightnessController;->calculateWeight(JJ)F
+HPLcom/android/server/display/AutomaticBrightnessController;->configure(ZFZZ)V
HPLcom/android/server/display/AutomaticBrightnessController;->handleLightSensorEvent(JF)V
HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightBrighteningTransition(J)J
HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J
+HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux()V
HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V
HPLcom/android/server/display/AutomaticBrightnessController;->weightIntegral(J)F
HPLcom/android/server/display/DisplayBlanker;->requestDisplayState(II)V
+HPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds()[I
+HPLcom/android/server/display/DisplayManagerService$CallbackRecord;->binderDied()V
+HPLcom/android/server/display/DisplayManagerService$LocalService$1;->requestDisplayState(II)V
+HPLcom/android/server/display/DisplayManagerService$LocalService;->performTraversalInTransactionFromWindowManager()V
HPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z
+HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V
+HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIZ)V
+HPLcom/android/server/display/DisplayManagerService;->-get2(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayPowerController;
+HPLcom/android/server/display/DisplayManagerService;->-wrap16(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
+HPLcom/android/server/display/DisplayManagerService;->-wrap25(Lcom/android/server/display/DisplayManagerService;II)V
+HPLcom/android/server/display/DisplayManagerService;->-wrap29(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V
+HPLcom/android/server/display/DisplayManagerService;->-wrap30(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/DisplayManagerService;->-wrap32(Lcom/android/server/display/DisplayManagerService;IZFIZ)V
+HPLcom/android/server/display/DisplayManagerService;->-wrap5(Lcom/android/server/display/DisplayManagerService;I)[I
+HPLcom/android/server/display/DisplayManagerService;->applyGlobalDisplayStateLocked(Ljava/util/List;)V
+HPLcom/android/server/display/DisplayManagerService;->getDisplayIdsInternal(I)[I
+HPLcom/android/server/display/DisplayManagerService;->onCallbackDied(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
+HPLcom/android/server/display/DisplayManagerService;->performTraversalInTransactionFromWindowManagerInternal()V
+HPLcom/android/server/display/DisplayManagerService;->requestGlobalDisplayStateInternal(II)V
+HPLcom/android/server/display/DisplayManagerService;->setDisplayAccessUIDsInternal(Landroid/util/SparseArray;)V
+HPLcom/android/server/display/DisplayManagerService;->setDisplayInfoOverrideFromWindowManagerInternal(ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIZ)V
+HPLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(II)V
+HPLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IZ)V
HPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z
+HPLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V
+HPLcom/android/server/display/DisplayPowerController;->setScreenState(IZ)Z
+HPLcom/android/server/display/DisplayPowerController;->updatePowerState()V
+HPLcom/android/server/display/DisplayPowerState$2;->setValue(Lcom/android/server/display/DisplayPowerState;I)V
+HPLcom/android/server/display/DisplayPowerState$2;->setValue(Ljava/lang/Object;I)V
+HPLcom/android/server/display/DisplayPowerState$3;->run()V
+HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V
+HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(II)Z
+HPLcom/android/server/display/DisplayPowerState;->-get1()Z
+HPLcom/android/server/display/DisplayPowerState;->-get2(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayBlanker;
+HPLcom/android/server/display/DisplayPowerState;->-get4(Lcom/android/server/display/DisplayPowerState;)F
+HPLcom/android/server/display/DisplayPowerState;->-get6(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayPowerState$PhotonicModulator;
+HPLcom/android/server/display/DisplayPowerState;->-get7(Lcom/android/server/display/DisplayPowerState;)I
+HPLcom/android/server/display/DisplayPowerState;->-get8(Lcom/android/server/display/DisplayPowerState;)I
+HPLcom/android/server/display/DisplayPowerState;->-set2(Lcom/android/server/display/DisplayPowerState;Z)Z
+HPLcom/android/server/display/DisplayPowerState;->-set3(Lcom/android/server/display/DisplayPowerState;Z)Z
+HPLcom/android/server/display/DisplayPowerState;->-wrap0(Lcom/android/server/display/DisplayPowerState;)V
+HPLcom/android/server/display/DisplayPowerState;->-wrap1(Lcom/android/server/display/DisplayPowerState;)V
+HPLcom/android/server/display/DisplayPowerState;->dismissColorFade()V
+HPLcom/android/server/display/DisplayPowerState;->getScreenState()I
+HPLcom/android/server/display/DisplayPowerState;->invokeCleanListenerIfNeeded()V
+HPLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V
+HPLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V
+HPLcom/android/server/display/DisplayPowerState;->setScreenBrightness(I)V
+HPLcom/android/server/display/DisplayTransformManager;->setColorMatrix(I[F)V
+HPLcom/android/server/display/LogicalDisplay;->getRequestedModeIdLocked()I
+HPLcom/android/server/display/LogicalDisplay;->hasContentLocked()Z
+HPLcom/android/server/display/LogicalDisplay;->setDisplayInfoOverrideFromWindowManagerLocked(Landroid/view/DisplayInfo;)Z
+HPLcom/android/server/display/NightDisplayService$3;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
+HPLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
HPLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->evaluate(F[F[F)[F
+HPLcom/android/server/display/RampAnimator$1;->run()V
HPLcom/android/server/display/RampAnimator$Listener;->onAnimationEnd()V
-HPLcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;->createDisplay(Ljava/lang/String;Z)Landroid/os/IBinder;
+HPLcom/android/server/display/RampAnimator;->-get0(Lcom/android/server/display/RampAnimator;)F
+HPLcom/android/server/display/RampAnimator;->-get1(Lcom/android/server/display/RampAnimator;)Landroid/view/Choreographer;
+HPLcom/android/server/display/RampAnimator;->-get2(Lcom/android/server/display/RampAnimator;)I
+HPLcom/android/server/display/RampAnimator;->-get3(Lcom/android/server/display/RampAnimator;)J
+HPLcom/android/server/display/RampAnimator;->-get5(Lcom/android/server/display/RampAnimator;)Ljava/lang/Object;
+HPLcom/android/server/display/RampAnimator;->-get6(Lcom/android/server/display/RampAnimator;)Landroid/util/IntProperty;
+HPLcom/android/server/display/RampAnimator;->-get7(Lcom/android/server/display/RampAnimator;)I
+HPLcom/android/server/display/RampAnimator;->-get8(Lcom/android/server/display/RampAnimator;)I
+HPLcom/android/server/display/RampAnimator;->-set0(Lcom/android/server/display/RampAnimator;F)F
+HPLcom/android/server/display/RampAnimator;->-set2(Lcom/android/server/display/RampAnimator;I)I
+HPLcom/android/server/display/RampAnimator;->-set3(Lcom/android/server/display/RampAnimator;J)J
+HPLcom/android/server/display/RampAnimator;->-wrap0(Lcom/android/server/display/RampAnimator;)V
+HPLcom/android/server/display/RampAnimator;->animateTo(II)Z
+HPLcom/android/server/display/RampAnimator;->postAnimationCallback()V
HPLcom/android/server/dreams/DreamController$Listener;->onDreamStopped(Landroid/os/Binder;)V
+HPLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z
HPLcom/android/server/dreams/DreamManagerService;->-wrap3(Lcom/android/server/dreams/DreamManagerService;)Z
HPLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z
HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->queryByComponent(Landroid/content/ComponentName;Ljava/util/List;)V
+HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V
HPLcom/android/server/firewall/IntentFirewall;->checkBroadcast(Landroid/content/Intent;IILjava/lang/String;I)Z
HPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z
+HPLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/input/InputManagerService$5;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
+HPLcom/android/server/input/InputManagerService$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
HPLcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->getPointerLayer()I
@@ -936,48 +2479,186 @@ HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyI
HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyLidSwitchChanged(JZ)V
HPLcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;->notifyWiredAccessoryChanged(JII)V
HPLcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;->systemReady()V
+HPLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V
+HPLcom/android/server/input/InputManagerService;->getCurrentKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String;
+HPLcom/android/server/input/InputManagerService;->getExcludedDeviceNames()[Ljava/lang/String;
+HPLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/InputDevice;
+HPLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I
+HPLcom/android/server/input/InputManagerService;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String;
+HPLcom/android/server/input/InputManagerService;->getLayoutDescriptor(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String;
+HPLcom/android/server/input/InputManagerService;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;
+HPLcom/android/server/input/InputManagerService;->getSwitchState(III)I
+HPLcom/android/server/input/InputManagerService;->injectInputEvent(Landroid/view/InputEvent;I)Z
+HPLcom/android/server/input/InputManagerService;->injectInputEventInternal(Landroid/view/InputEvent;II)Z
+HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J
+HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
+HPLcom/android/server/input/InputManagerService;->monitor()V
+HPLcom/android/server/input/InputManagerService;->registerInputChannel(Landroid/view/InputChannel;Lcom/android/server/input/InputWindowHandle;)V
HPLcom/android/server/input/InputManagerService;->setInputWindows([Lcom/android/server/input/InputWindowHandle;Lcom/android/server/input/InputWindowHandle;)V
+HPLcom/android/server/input/InputManagerService;->setSystemUiVisibility(I)V
+HPLcom/android/server/input/InputManagerService;->updateKeyboardLayouts()V
+HPLcom/android/server/input/InputManagerService;->visitAllKeyboardLayouts(Lcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V
HPLcom/android/server/input/InputManagerService;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V
+HPLcom/android/server/input/InputWindowHandle;-><init>(Lcom/android/server/input/InputApplicationHandle;Ljava/lang/Object;Landroid/view/IWindow;I)V
+HPLcom/android/server/input/InputWindowHandle;->finalize()V
+HPLcom/android/server/input/PersistentDataStore;->getCurrentKeyboardLayout(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/input/PersistentDataStore;->getInputDeviceState(Ljava/lang/String;Z)Lcom/android/server/input/PersistentDataStore$InputDeviceState;
+HPLcom/android/server/input/PersistentDataStore;->loadIfNeeded()V
HPLcom/android/server/job/JobCompletedListener;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V
+HPLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;JI)V
+HPLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V
+HPLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
+HPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
+HPLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J
+HPLcom/android/server/job/JobPackageTracker$DataSet;->incPending(ILjava/lang/String;J)V
+HPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;II)V
+HPLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F
+HPLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobPackageTracker;->noteConcurrency(II)V
+HPLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;I)V
+HPLcom/android/server/job/JobPackageTracker;->noteNonpending(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V
HPLcom/android/server/job/JobSchedulerInternal;->addBackingUpUid(I)V
HPLcom/android/server/job/JobSchedulerInternal;->clearAllBackingUpUids()V
+HPLcom/android/server/job/JobSchedulerInternal;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
HPLcom/android/server/job/JobSchedulerInternal;->getSystemScheduledPendingJobs()Ljava/util/List;
HPLcom/android/server/job/JobSchedulerInternal;->removeBackingUpUid(I)V
-HPLcom/android/server/job/JobSchedulerService$3;->process(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService$2;->onUidStateChanged(IIJ)V
+HPLcom/android/server/job/JobSchedulerService$4;->process(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(I)V
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(ILandroid/app/job/JobInfo;)V
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(I)Landroid/app/job/JobInfo;
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Landroid/app/job/JobInfo;)I
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
+HPLcom/android/server/job/JobSchedulerService$LocalService$1;->process(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService$LocalService;->getSystemScheduledPendingJobs()Ljava/util/List;
HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->process(Lcom/android/server/job/controllers/JobStatus;)V
HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->process(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService;->-wrap0(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)Z
HPLcom/android/server/job/JobSchedulerService;->-wrap1(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobSchedulerService;->-wrap5(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobSchedulerService;->-wrap6(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobSchedulerService;->addOrderedItem(Ljava/util/ArrayList;Ljava/lang/Object;Ljava/util/Comparator;)V
+HPLcom/android/server/job/JobSchedulerService;->adjustJobPriority(ILcom/android/server/job/controllers/JobStatus;)I
HPLcom/android/server/job/JobSchedulerService;->assignJobsToContextsLocked()V
+HPLcom/android/server/job/JobSchedulerService;->cancelJob(II)V
+HPLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Ljava/lang/String;)V
+HPLcom/android/server/job/JobSchedulerService;->evaluateJobPriorityLocked(Lcom/android/server/job/controllers/JobStatus;)I
+HPLcom/android/server/job/JobSchedulerService;->findJobContextIdFromMap(Lcom/android/server/job/controllers/JobStatus;[Lcom/android/server/job/controllers/JobStatus;)I
+HPLcom/android/server/job/JobSchedulerService;->getPendingJob(II)Landroid/app/job/JobInfo;
+HPLcom/android/server/job/JobSchedulerService;->getPendingJobs(I)Ljava/util/List;
+HPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;
HPLcom/android/server/job/JobSchedulerService;->isCurrentlyActiveLocked(Lcom/android/server/job/controllers/JobStatus;)Z
HPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V
+HPLcom/android/server/job/JobSchedulerService;->noteJobsNonpending(Ljava/util/List;)V
+HPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V
+HPLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V
HPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V
+HPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;)I
HPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)Z
HPLcom/android/server/job/JobSchedulerService;->stopNonReadyActiveJobsLocked()V
+HPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z
+HPLcom/android/server/job/JobSchedulerService;->updateUidState(II)V
+HPLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V
+HPLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V
+HPLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V
+HPLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->clearPreferredUid()V
+HPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->doAcknowledgeStartMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
+HPLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->doCompleteWork(Lcom/android/server/job/JobServiceContext$JobCallback;II)Z
+HPLcom/android/server/job/JobServiceContext;->doDequeueWork(Lcom/android/server/job/JobServiceContext$JobCallback;I)Landroid/app/job/JobWorkItem;
+HPLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
+HPLcom/android/server/job/JobServiceContext;->doServiceBoundLocked()V
+HPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobServiceContext;->getPreferredUid()I
HPLcom/android/server/job/JobServiceContext;->getRunningJobLocked()Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V
+HPLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V
+HPLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/job/JobServiceContext;->removeOpTimeOutLocked()V
+HPLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V
+HPLcom/android/server/job/JobServiceContext;->verifyCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z
+HPLcom/android/server/job/JobStore$1$1;->process(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobStore$1;->addAttributesToJobTag(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobStore$1;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle;
+HPLcom/android/server/job/JobStore$1;->run()V
+HPLcom/android/server/job/JobStore$1;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/job/JobStore$1;->writeConstraintsToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobStore$1;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobStore$1;->writeJobsMapImpl(Ljava/util/List;)V
+HPLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I
+HPLcom/android/server/job/JobStore$JobSet;->forEachJob(ILcom/android/server/job/JobStore$JobStatusFunctor;)V
HPLcom/android/server/job/JobStore$JobSet;->forEachJob(Lcom/android/server/job/JobStore$JobStatusFunctor;)V
-HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildExecutionTimesFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/Pair;
-HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/job/controllers/JobStatus;
-HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable$1;->process(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->addAttributesToJobTag(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle;
-HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V
-HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->writeConstraintsToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->writeJobsMapImpl(Ljava/util/List;)V
+HPLcom/android/server/job/JobStore$JobSet;->get(II)Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore$JobSet;->getJobsByUid(I)Ljava/util/List;
+HPLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildBuilderFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/job/JobInfo$Builder;
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildRtcExecutionTimesFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/Pair;
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(Ljava/io/FileInputStream;Z)Ljava/util/List;
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(ZLorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V
+HPLcom/android/server/job/JobStore;->-get1(Lcom/android/server/job/JobStore;)Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
+HPLcom/android/server/job/JobStore;->-wrap1(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore;->containsJob(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore;->convertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair;
+HPLcom/android/server/job/JobStore;->countJobsForUid(I)I
+HPLcom/android/server/job/JobStore;->forEachJob(Lcom/android/server/job/JobStore$JobStatusFunctor;)V
+HPLcom/android/server/job/JobStore;->getJobByUidAndJobId(II)Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore;->isSyncJob(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V
+HPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z
HPLcom/android/server/job/StateChangedListener;->onControllerStateChanged()V
HPLcom/android/server/job/StateChangedListener;->onDeviceIdleStateChanged(Z)V
HPLcom/android/server/job/StateChangedListener;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V
+HPLcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc;->process(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc;-><init>(ILjava/lang/String;Z)V
HPLcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc;->process(Lcom/android/server/job/controllers/JobStatus;)V
-HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/NetworkCapabilities;)Z
-HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobs(ILandroid/net/NetworkCapabilities;)V
-HPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;IJJ)V
+HPLcom/android/server/job/controllers/AppIdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/BatteryController;->maybeReportNewChargingStateLocked()V
+HPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
+HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobs(I)V
+HPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
+HPLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
+HPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;IJJJJ)V
HPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z
+HPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;)Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem;
+HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/IActivityManager;Landroid/app/job/JobWorkItem;)V
+HPLcom/android/server/job/controllers/JobStatus;->getBatteryName()Ljava/lang/String;
HPLcom/android/server/job/controllers/JobStatus;->getEarliestRunTime()J
HPLcom/android/server/job/controllers/JobStatus;->getFlags()I
HPLcom/android/server/job/controllers/JobStatus;->getJob()Landroid/app/job/JobInfo;
HPLcom/android/server/job/controllers/JobStatus;->getJobId()I
+HPLcom/android/server/job/controllers/JobStatus;->getLastFailedRunTime()J
+HPLcom/android/server/job/controllers/JobStatus;->getLastSuccessfulRunTime()J
HPLcom/android/server/job/controllers/JobStatus;->getLatestRunTimeElapsed()J
HPLcom/android/server/job/controllers/JobStatus;->getNumFailures()I
+HPLcom/android/server/job/controllers/JobStatus;->getPersistedUtcTimes()Landroid/util/Pair;
HPLcom/android/server/job/controllers/JobStatus;->getPriority()I
HPLcom/android/server/job/controllers/JobStatus;->getServiceComponent()Landroid/content/ComponentName;
HPLcom/android/server/job/controllers/JobStatus;->getSourcePackageName()Ljava/lang/String;
@@ -985,23 +2666,54 @@ HPLcom/android/server/job/controllers/JobStatus;->getSourceTag()Ljava/lang/Strin
HPLcom/android/server/job/controllers/JobStatus;->getSourceUid()I
HPLcom/android/server/job/controllers/JobStatus;->getSourceUserId()I
HPLcom/android/server/job/controllers/JobStatus;->getUid()I
+HPLcom/android/server/job/controllers/JobStatus;->getUserId()I
HPLcom/android/server/job/controllers/JobStatus;->hasBatteryNotLowConstraint()Z
HPLcom/android/server/job/controllers/JobStatus;->hasChargingConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasConnectivityConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasContentTriggerConstraint()Z
HPLcom/android/server/job/controllers/JobStatus;->hasDeadlineConstraint()Z
HPLcom/android/server/job/controllers/JobStatus;->hasIdleConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasPowerConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasStorageNotLowConstraint()Z
HPLcom/android/server/job/controllers/JobStatus;->hasTimingDelayConstraint()Z
HPLcom/android/server/job/controllers/JobStatus;->isConstraintSatisfied(I)Z
HPLcom/android/server/job/controllers/JobStatus;->isConstraintsSatisfied()Z
HPLcom/android/server/job/controllers/JobStatus;->isPersisted()Z
HPLcom/android/server/job/controllers/JobStatus;->isReady()Z
+HPLcom/android/server/job/controllers/JobStatus;->matches(II)Z
HPLcom/android/server/job/controllers/JobStatus;->needsAnyConnectivity()Z
HPLcom/android/server/job/controllers/JobStatus;->needsMeteredConnectivity()Z
HPLcom/android/server/job/controllers/JobStatus;->needsNonRoamingConnectivity()Z
HPLcom/android/server/job/controllers/JobStatus;->needsUnmeteredConnectivity()Z
+HPLcom/android/server/job/controllers/JobStatus;->prepareLocked(Landroid/app/IActivityManager;)V
+HPLcom/android/server/job/controllers/JobStatus;->setAppNotIdleConstraintSatisfied(Z)Z
+HPLcom/android/server/job/controllers/JobStatus;->setConnectivityConstraintSatisfied(Z)Z
HPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(ZZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setMeteredConstraintSatisfied(Z)Z
+HPLcom/android/server/job/controllers/JobStatus;->setNotRoamingConstraintSatisfied(Z)Z
+HPLcom/android/server/job/controllers/JobStatus;->setTimingDelayConstraintSatisfied(Z)Z
+HPLcom/android/server/job/controllers/JobStatus;->setTrackingController(I)V
+HPLcom/android/server/job/controllers/JobStatus;->setUnmeteredConstraintSatisfied(Z)Z
+HPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Landroid/app/IActivityManager;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/JobStatus;->ungrantWorkList(Landroid/app/IActivityManager;Ljava/util/ArrayList;)V
+HPLcom/android/server/job/controllers/JobStatus;->unprepareLocked(Landroid/app/IActivityManager;)V
+HPLcom/android/server/job/controllers/StateController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
+HPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V
HPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V
+HPLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
HPLcom/android/server/job/controllers/TimeController;->evaluateTimingDelayConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
+HPLcom/android/server/job/controllers/TimeController;->maybeAdjustAlarmTime(J)J
HPLcom/android/server/job/controllers/TimeController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
+HPLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JI)V
+HPLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;JI)V
+HPLcom/android/server/lights/LightsService$LightImpl;->setColor(I)V
+HPLcom/android/server/location/ContextHubService;->addAppInstance(IIJI)I
+HPLcom/android/server/location/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I
+HPLcom/android/server/location/ContextHubService;->onMessageReceipt([I[B)I
HPLcom/android/server/location/CountryDetectorBase;->detectCountry()Landroid/location/Country;
HPLcom/android/server/location/CountryDetectorBase;->stop()V
HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->flush()V
@@ -1010,33 +2722,127 @@ HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->start
HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->stop()Z
HPLcom/android/server/location/GnssLocationProvider$GnssMetricsProvider;->getGnssMetricsAsProtoString()Ljava/lang/String;
HPLcom/android/server/location/GnssLocationProvider$GnssSystemInfoProvider;->getGnssYearOfHardware()I
+HPLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleMessage(Landroid/os/Message;)V
HPLcom/android/server/location/GnssLocationProvider$SetCarrierProperty;->set(I)Z
+HPLcom/android/server/location/GnssLocationProvider;->handleUpdateLocation(Landroid/location/Location;)V
+HPLcom/android/server/location/GnssLocationProvider;->reportNmea(J)V
+HPLcom/android/server/location/GnssLocationProvider;->reportSvStatus()V
+HPLcom/android/server/location/GnssLocationProvider;->sendMessage(IILjava/lang/Object;)V
+HPLcom/android/server/location/GnssLocationProvider;->updateRequirements()V
+HPLcom/android/server/location/GnssLocationProvider;->updateStatus(IIII)V
+HPLcom/android/server/location/GnssStatusListenerHelper$4;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;I[I[F[F[F[F)V
+HPLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/location/IGnssStatusListener;)V
+HPLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/os/IInterface;)V
+HPLcom/android/server/location/GnssStatusListenerHelper$5;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;JLjava/lang/String;)V
+HPLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/location/IGnssStatusListener;)V
+HPLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/os/IInterface;)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->onNmeaReceived(JLjava/lang/String;)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->onSvStatusChanged(I[I[F[F[F[F)V
+HPLcom/android/server/location/LocationBlacklist;->isBlacklisted(Ljava/lang/String;)Z
+HPLcom/android/server/location/LocationFudger;->getOrCreate(Landroid/location/Location;)Landroid/location/Location;
+HPLcom/android/server/location/LocationProviderProxy;->getName()Ljava/lang/String;
+HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;-><init>(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
+HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;->run()V
+HPLcom/android/server/location/RemoteListenerHelper$LinkedListener;->getUnderlyingListener()Landroid/os/IInterface;
HPLcom/android/server/location/RemoteListenerHelper$ListenerOperation;->execute(Landroid/os/IInterface;)V
+HPLcom/android/server/location/RemoteListenerHelper;->foreach(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
+HPLcom/android/server/location/RemoteListenerHelper;->foreachUnsafe(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
+HPLcom/android/server/location/RemoteListenerHelper;->post(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
+HPLcom/android/server/locksettings/LockSettingsService;->checkReadPermission(Ljava/lang/String;I)V
+HPLcom/android/server/locksettings/LockSettingsService;->getLong(Ljava/lang/String;JI)J
+HPLcom/android/server/locksettings/LockSettingsService;->getStringUnchecked(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->set(ILjava/lang/String;I)Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasKeyValue(Ljava/lang/String;I)Z
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object;
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
HPLcom/android/server/locksettings/LockSettingsStorage$Callback;->initialize(Landroid/database/sqlite/SQLiteDatabase;)V
+HPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
HPLcom/android/server/media/AudioPlaybackMonitor$OnAudioPlaybackStartedListener;->onAudioPlaybackStarted(I)V
+HPLcom/android/server/media/AudioPlaybackMonitor$OnAudioPlayerActiveStateChangedListener;->onAudioPlayerActiveStateChanged(IZ)V
+HPLcom/android/server/media/AudioPlaybackMonitor;->dispatchPlaybackConfigChange(Ljava/util/List;)V
+HPLcom/android/server/media/AudioPlaybackMonitor;->isActiveState(Ljava/lang/Integer;)Z
+HPLcom/android/server/media/MediaSessionRecord;->getStateWithUpdatedPosition()Landroid/media/session/PlaybackState;
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List;
+HPLcom/android/server/media/MediaSessionService;->getActiveSessionsLocked(I)Ljava/util/List;
+HPLcom/android/server/media/MediaSessionService;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+HPLcom/android/server/media/MediaSessionService;->pushSessionsChanged(I)V
HPLcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/ArrayList;
HPLcom/android/server/media/RemoteDisplayProviderProxy$Callback;->onDisplayStateChanged(Lcom/android/server/media/RemoteDisplayProviderProxy;Landroid/media/RemoteDisplayState;)V
+HPLcom/android/server/media/RemoteDisplayProviderProxy;->hasComponentName(Ljava/lang/String;Ljava/lang/String;)Z
HPLcom/android/server/media/RemoteDisplayProviderWatcher$Callback;->addProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;)V
HPLcom/android/server/media/RemoteDisplayProviderWatcher$Callback;->removeProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;)V
+HPLcom/android/server/media/RemoteDisplayProviderWatcher;->scanPackages()V
+HPLcom/android/server/midi/MidiService;->addPackageDeviceServer(Landroid/content/pm/ServiceInfo;)V
+HPLcom/android/server/midi/MidiService;->addPackageDeviceServers(Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkIdentitySet;-><init>(Ljava/io/DataInputStream;)V
HPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberMetered()Z
HPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberRoaming()Z
+HPLcom/android/server/net/NetworkIdentitySet;->readOptionalString(Ljava/io/DataInputStream;)Ljava/lang/String;
+HPLcom/android/server/net/NetworkIdentitySet;->writeOptionalString(Ljava/io/DataOutputStream;Ljava/lang/String;)V
HPLcom/android/server/net/NetworkIdentitySet;->writeToStream(Ljava/io/DataOutputStream;)V
HPLcom/android/server/net/NetworkPolicyManagerInternal;->isUidNetworkingBlocked(ILjava/lang/String;)Z
HPLcom/android/server/net/NetworkPolicyManagerInternal;->isUidRestrictedOnMeteredNetworks(I)Z
HPLcom/android/server/net/NetworkPolicyManagerInternal;->resetUserState(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService$14;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/net/NetworkPolicyManagerService$1;->onUidGone(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService$1;->onUidStateChanged(IIJ)V
+HPLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V
HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->isUidNetworkingBlocked(ILjava/lang/String;)Z
-HPLcom/android/server/net/NetworkPolicyManagerService;->findPolicyForNetworkNL(Landroid/net/NetworkIdentity;)Landroid/net/NetworkPolicy;
+HPLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->addProcStateSeqUL(IJ)V
+HPLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->increaseNext(II)I
+HPLcom/android/server/net/NetworkPolicyManagerService;->-get2(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/ArraySet;
+HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap20(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap3(Lcom/android/server/net/NetworkPolicyManagerService;IZ)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap9(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;II)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->dispatchUidRulesChanged(Landroid/net/INetworkPolicyListener;II)V
HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidChanged(IIJ)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->isNetworkMetered(Landroid/net/NetworkState;)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidGone(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissions(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->hasRule(II)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidNetworkingBlockedInternal(IZ)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidStateForegroundUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForBlacklistRules(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForWhitelistRules(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isWhitelistedBatterySaverUL(IZ)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRule(III)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundRulesOnUidStatusChangedUL(III)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllAppsUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleParoleUL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IIZ)I
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IIZ)I
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempWhitelistChangeUL()V
HPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(II)V
+HPLcom/android/server/net/NetworkStatsAccess;->isAccessibleToUser(III)Z
HPLcom/android/server/net/NetworkStatsCollection$Key;-><init>(Lcom/android/server/net/NetworkIdentitySet;III)V
+HPLcom/android/server/net/NetworkStatsCollection$Key;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/net/NetworkStatsCollection$Key;->hashCode()I
HPLcom/android/server/net/NetworkStatsCollection;->findOrCreateHistory(Lcom/android/server/net/NetworkIdentitySet;III)Landroid/net/NetworkStatsHistory;
-HPLcom/android/server/net/NetworkStatsCollection;->getSummary(Landroid/net/NetworkTemplate;JJI)Landroid/net/NetworkStats;
HPLcom/android/server/net/NetworkStatsCollection;->getSummary(Landroid/net/NetworkTemplate;JJII)Landroid/net/NetworkStats;
+HPLcom/android/server/net/NetworkStatsCollection;->noteRecordedHistory(JJJ)V
+HPLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/DataInputStream;)V
HPLcom/android/server/net/NetworkStatsCollection;->recordData(Lcom/android/server/net/NetworkIdentitySet;IIIJJLandroid/net/NetworkStats$Entry;)V
+HPLcom/android/server/net/NetworkStatsCollection;->recordHistory(Lcom/android/server/net/NetworkStatsCollection$Key;Landroid/net/NetworkStatsHistory;)V
HPLcom/android/server/net/NetworkStatsCollection;->templateMatches(Landroid/net/NetworkTemplate;Lcom/android/server/net/NetworkIdentitySet;)Z
HPLcom/android/server/net/NetworkStatsCollection;->write(Ljava/io/DataOutputStream;)V
+HPLcom/android/server/net/NetworkStatsRecorder;->forcePersistLocked(J)V
+HPLcom/android/server/net/NetworkStatsRecorder;->getTotalSinceBootLocked(Landroid/net/NetworkTemplate;)Landroid/net/NetworkStats$Entry;
+HPLcom/android/server/net/NetworkStatsRecorder;->maybePersistLocked(J)V
HPLcom/android/server/net/NetworkStatsRecorder;->recordSnapshotLocked(Landroid/net/NetworkStats;Ljava/util/Map;[Lcom/android/internal/net/VpnInfo;J)V
+HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getAugmentEnabled()Z
HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getDevConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;
HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getDevPersistBytes(J)J
HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getGlobalAlertBytes(J)J
@@ -1049,17 +2855,50 @@ HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getUidTagCo
HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getUidTagPersistBytes(J)J
HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getXtConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;
HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getXtPersistBytes(J)J
+HPLcom/android/server/net/NetworkStatsService;->performPollLocked(I)V
+HPLcom/android/server/net/NetworkStatsService;->performSampleLocked()V
+HPLcom/android/server/net/NetworkStatsService;->recordSnapshotLocked(J)V
+HPLcom/android/server/net/NetworkStatsService;->setUidForeground(IZ)V
+HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->$m$0()V
+HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;-><init>(BILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->run()V
+HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;->$m$0(I)Z
+HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;->apply(I)Z
+HPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
HPLcom/android/server/notification/CalendarTracker$Callback;->onChanged()V
HPLcom/android/server/notification/ConditionProviders$Callback;->onBootComplete()V
HPLcom/android/server/notification/ConditionProviders$Callback;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V
HPLcom/android/server/notification/ConditionProviders$Callback;->onServiceAdded(Landroid/content/ComponentName;)V
HPLcom/android/server/notification/ConditionProviders$Callback;->onUserSwitched()V
+HPLcom/android/server/notification/ConditionProviders;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
+HPLcom/android/server/notification/ConditionProviders;->getRecordLocked(Landroid/net/Uri;Landroid/content/ComponentName;Z)Lcom/android/server/notification/ConditionProviders$ConditionRecord;
HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
+HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HPLcom/android/server/notification/GroupHelper$Callback;->addAutoGroup(Ljava/lang/String;)V
HPLcom/android/server/notification/GroupHelper$Callback;->addAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/notification/GroupHelper$Callback;->removeAutoGroup(Ljava/lang/String;)V
HPLcom/android/server/notification/GroupHelper$Callback;->removeAutoGroupSummary(ILjava/lang/String;)V
+HPLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/ManagedServices$Config;-><init>()V
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z
+HPLcom/android/server/notification/ManagedServices;->-get0(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet;
+HPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+HPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List;
+HPLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;[I)V
+HPLcom/android/server/notification/ManagedServices;->rebindServices(Z)V
+HPLcom/android/server/notification/ManagedServices;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+HPLcom/android/server/notification/NotificationAdjustmentExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
HPLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
+HPLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/notification/NotificationComparator;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isMediaNotification(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isOngoing(Lcom/android/server/notification/NotificationRecord;)Z
HPLcom/android/server/notification/NotificationDelegate;->clearEffects()V
HPLcom/android/server/notification/NotificationDelegate;->onClearAll(III)V
HPLcom/android/server/notification/NotificationDelegate;->onNotificationActionClick(IILjava/lang/String;I)V
@@ -1071,18 +2910,111 @@ HPLcom/android/server/notification/NotificationDelegate;->onNotificationVisibili
HPLcom/android/server/notification/NotificationDelegate;->onPanelHidden()V
HPLcom/android/server/notification/NotificationDelegate;->onPanelRevealed(ZI)V
HPLcom/android/server/notification/NotificationDelegate;->onSetDisabled(I)V
+HPLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
HPLcom/android/server/notification/NotificationManagerInternal;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
HPLcom/android/server/notification/NotificationManagerInternal;->removeForegroundServiceFlagFromNotification(Ljava/lang/String;II)V
-HPLcom/android/server/notification/NotificationManagerService$5;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V
+HPLcom/android/server/notification/NotificationManagerService$14;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;ILjava/lang/String;IIIIZ)V
+HPLcom/android/server/notification/NotificationManagerService$14;->run()V
+HPLcom/android/server/notification/NotificationManagerService$15;->run()V
+HPLcom/android/server/notification/NotificationManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/notification/NotificationManagerService$7;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V
+HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V
+HPLcom/android/server/notification/NotificationManagerService$7;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannel(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
+HPLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->run()V
HPLcom/android/server/notification/NotificationManagerService$FlagChecker;->apply(I)Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$-com_android_server_notification_NotificationManagerService$NotificationListeners_242777(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;)V
+HPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->run()V
+HPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestSort()V
+HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/notification/NotificationManagerService;->-get18(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
+HPLcom/android/server/notification/NotificationManagerService;->-get25(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/RankingHelper;
+HPLcom/android/server/notification/NotificationManagerService;->-get27(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper;
+HPLcom/android/server/notification/NotificationManagerService;->-wrap18(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->-wrap3(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+HPLcom/android/server/notification/NotificationManagerService;->-wrap32(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsByListLocked(Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;Z)Z
+HPLcom/android/server/notification/NotificationManagerService;->clamp(III)I
+HPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationManagerService;->getNotificationCountLocked(Ljava/lang/String;IILjava/lang/String;)I
+HPLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V
+HPLcom/android/server/notification/NotificationManagerService;->handleSavePolicyFile()V
HPLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+HPLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I
HPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z
+HPLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z
+HPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z
+HPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
HPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
+HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;I)Z
+HPLcom/android/server/notification/NotificationManagerService;->savePolicyFile()V
+HPLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;Z)V
+HPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V
+HPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V
+HPLcom/android/server/notification/NotificationRecord;->applyUserImportance()V
+HPLcom/android/server/notification/NotificationRecord;->calculateImportance()I
+HPLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light;
+HPLcom/android/server/notification/NotificationRecord;->canShowBadge()Z
+HPLcom/android/server/notification/NotificationRecord;->getAuthoritativeRank()I
+HPLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel;
+HPLcom/android/server/notification/NotificationRecord;->getContactAffinity()F
+HPLcom/android/server/notification/NotificationRecord;->getFlags()I
+HPLcom/android/server/notification/NotificationRecord;->getFreshnessMs(J)I
HPLcom/android/server/notification/NotificationRecord;->getGlobalSortKey()Ljava/lang/String;
+HPLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String;
HPLcom/android/server/notification/NotificationRecord;->getImportance()I
+HPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence;
+HPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String;
+HPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;
HPLcom/android/server/notification/NotificationRecord;->getNotification()Landroid/app/Notification;
+HPLcom/android/server/notification/NotificationRecord;->getPackagePriority()I
+HPLcom/android/server/notification/NotificationRecord;->getPackageVisibilityOverride()I
+HPLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationRecord;->getRankingTimeMs()J
+HPLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationRecord;->getSuppressedVisualEffects()I
+HPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle;
+HPLcom/android/server/notification/NotificationRecord;->getUserExplanation()Ljava/lang/String;
+HPLcom/android/server/notification/NotificationRecord;->getUserId()I
+HPLcom/android/server/notification/NotificationRecord;->isIntercepted()Z
+HPLcom/android/server/notification/NotificationRecord;->isRecentlyIntrusive()Z
+HPLcom/android/server/notification/NotificationRecord;->setAuthoritativeRank(I)V
+HPLcom/android/server/notification/NotificationRecord;->setGlobalSortKey(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationRecord;->setPackagePriority(I)V
+HPLcom/android/server/notification/NotificationRecord;->setPackageVisibilityOverride(I)V
+HPLcom/android/server/notification/NotificationRecord;->setShowBadge(Z)V
+HPLcom/android/server/notification/NotificationRecord;->setUserImportance(I)V
+HPLcom/android/server/notification/NotificationRecord;->setVisibility(ZI)V
+HPLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V
+HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><init>(Landroid/content/Context;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->increment(I)V
+HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationDetails(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V
+HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->writeEvent(JILcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Lcom/android/server/notification/NotificationRecord;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
+HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
HPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
+HPLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V
+HPLcom/android/server/notification/NotificationUsageStats;->registerUpdatedByApp(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V
+HPLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
HPLcom/android/server/notification/RankingConfig;->badgingEnabled(Landroid/os/UserHandle;)Z
HPLcom/android/server/notification/RankingConfig;->canShowBadge(Ljava/lang/String;I)Z
HPLcom/android/server/notification/RankingConfig;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V
@@ -1099,34 +3031,148 @@ HPLcom/android/server/notification/RankingConfig;->setImportance(Ljava/lang/Stri
HPLcom/android/server/notification/RankingConfig;->setShowBadge(Ljava/lang/String;IZ)V
HPLcom/android/server/notification/RankingConfig;->updateNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;)V
HPLcom/android/server/notification/RankingHandler;->requestReconsideration(Lcom/android/server/notification/RankingReconsideration;)V
-HPLcom/android/server/notification/RankingHandler;->requestSort(Z)V
+HPLcom/android/server/notification/RankingHandler;->requestSort()V
+HPLcom/android/server/notification/RankingHelper;->badgingEnabled(Landroid/os/UserHandle;)Z
+HPLcom/android/server/notification/RankingHelper;->canShowBadge(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/RankingHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V
+HPLcom/android/server/notification/RankingHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;Z)V
+HPLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/RankingHelper;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel;
+HPLcom/android/server/notification/RankingHelper;->getOrCreateRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record;
HPLcom/android/server/notification/RankingHelper;->getOrCreateRecord(Ljava/lang/String;IIIIZ)Lcom/android/server/notification/RankingHelper$Record;
+HPLcom/android/server/notification/RankingHelper;->getRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record;
+HPLcom/android/server/notification/RankingHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)V
HPLcom/android/server/notification/RankingHelper;->readXml(Lorg/xmlpull/v1/XmlPullParser;Z)V
HPLcom/android/server/notification/RankingHelper;->recordKey(Ljava/lang/String;I)Ljava/lang/String;
-HPLcom/android/server/notification/RankingHelper;->safeInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
HPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V
-HPLcom/android/server/notification/RankingHelper;->tryParseInt(Ljava/lang/String;I)I
+HPLcom/android/server/notification/RankingHelper;->updateConfig()V
HPLcom/android/server/notification/RankingHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
-HPLcom/android/server/notification/RankingReconsideration;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V
-HPLcom/android/server/notification/RankingReconsideration;->work()V
HPLcom/android/server/notification/SnoozeHelper$Callback;->repost(ILcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z
+HPLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
+HPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String;
+HPLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[F)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;
+HPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+HPLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Z)V
+HPLcom/android/server/notification/ZenModeHelper;->applyRestrictions()V
+HPLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZI)V
+HPLcom/android/server/notification/ZenModeHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;-><init>(Ljava/lang/Object;)V
+HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;-><init>(I)V
+HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/om/OverlayManagerService$1;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
+HPLcom/android/server/om/OverlayManagerService$1;->handleIncomingUser(ILjava/lang/String;)I
+HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/om/OverlayManagerService;->updateOverlayPaths(ILjava/util/List;)V
HPLcom/android/server/om/OverlayManagerServiceImpl$OverlayChangeListener;->onOverlaysChanged(Ljava/lang/String;I)V
HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->getOverlayPackages(I)Ljava/util/List;
HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->signaturesMatching(Ljava/lang/String;Ljava/lang/String;I)Z
+HPLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPackageNames(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get7(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap9(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetPackageName()Ljava/lang/String;
+HPLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
+HPLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19551(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HPLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19778(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HPLcom/android/server/om/OverlayManagerSettings;->select(Ljava/lang/String;I)I
+HPLcom/android/server/om/OverlayManagerSettings;->selectWhereTarget(Ljava/lang/String;I)Ljava/util/stream/Stream;
+HPLcom/android/server/om/OverlayManagerSettings;->selectWhereUser(I)Ljava/util/stream/Stream;
+HPLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->$m$1(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->test(Ljava/lang/Object;)Z
HPLcom/android/server/pm/AbstractStatsBase;->maybeWriteAsync(Ljava/lang/Object;)Z
-HPLcom/android/server/pm/BasePermission;->isRuntimeOnly()Z
+HPLcom/android/server/pm/BackgroundDexOptService;->getBatteryLevel()I
+HPLcom/android/server/pm/BackgroundDexOptService;->postBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V
+HPLcom/android/server/pm/CompilerStats$PackageStats;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/pm/CompilerStats;->createPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
+HPLcom/android/server/pm/CompilerStats;->getOrCreatePackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
+HPLcom/android/server/pm/CompilerStats;->maybeWriteAsync()Z
+HPLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1;->sendResult(Landroid/os/Bundle;)V
+HPLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->getEphemeralResolveInfoList(Landroid/app/IInstantAppResolver;[ILjava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/EphemeralResolverConnection;->getInstantAppResolveInfoList([ILjava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/EphemeralResolverConnection;->getRemoteInstanceLazy(Ljava/lang/String;)Landroid/app/IInstantAppResolver;
+HPLcom/android/server/pm/EphemeralResolverConnection;->throwIfCalledOnMainThread()V
+HPLcom/android/server/pm/InstantAppRegistry;->grantInstantAccessLPw(ILandroid/content/Intent;II)V
+HPLcom/android/server/pm/InstantAppResolver;->doInstantAppResolutionPhaseOne(Landroid/content/Context;Lcom/android/server/pm/EphemeralResolverConnection;Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/AuxiliaryResolveInfo;
+HPLcom/android/server/pm/InstructionSets;->getAllDexCodeInstructionSets()[Ljava/lang/String;
+HPLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Landroid/content/pm/ApplicationInfo;)[Ljava/lang/String;
+HPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSets([Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/pm/KeySetManagerService;->dumpLPr(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$DumpState;)V
+HPLcom/android/server/pm/KeySetManagerService;->encodePublicKey(Ljava/security/PublicKey;)Ljava/lang/String;
+HPLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/pm/KeySetManagerService;->writeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/pm/KeySetManagerService;->writePublicKeysLPr(Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;ILjava/lang/String;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectCallingUserId()I
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(I)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(Landroid/os/UserHandle;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/PackageDexOptimizer;->acquireWakeLockLI(I)J
+HPLcom/android/server/pm/PackageDexOptimizer;->canOptimizePackage(Landroid/content/pm/PackageParser$Package;)Z
+HPLcom/android/server/pm/PackageDexOptimizer;->dexOptPath(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;IILcom/android/server/pm/CompilerStats$PackageStats;Z)I
+HPLcom/android/server/pm/PackageDexOptimizer;->dumpDexoptState(Lcom/android/internal/util/IndentingPrintWriter;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V
+HPLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)I
+HPLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Z)I
+HPLcom/android/server/pm/PackageDexOptimizer;->getDexoptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I
+HPLcom/android/server/pm/PackageDexOptimizer;->getRealCompilerFilter(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Ljava/lang/String;
+HPLcom/android/server/pm/PackageDexOptimizer;->performDexOpt(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I
+HPLcom/android/server/pm/PackageDexOptimizer;->performDexOptLI(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I
+HPLcom/android/server/pm/PackageDexOptimizer;->releaseWakeLockLI(J)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap3(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIF)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->invokeCallback(Landroid/content/pm/IPackageInstallerCallback;Landroid/os/Message;)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionProgressChanged(IIF)V
+HPLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionProgressChanged(Lcom/android/server/pm/PackageInstallerSession;F)V
+HPLcom/android/server/pm/PackageInstallerService;->-get0(Lcom/android/server/pm/PackageInstallerService;)Lcom/android/server/pm/PackageInstallerService$Callbacks;
+HPLcom/android/server/pm/PackageInstallerService;->createSessionInternal(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageInstallerService;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo;
+HPLcom/android/server/pm/PackageInstallerService;->writeSessionsLocked()V
+HPLcom/android/server/pm/PackageInstallerSession;->addClientProgress(F)V
+HPLcom/android/server/pm/PackageInstallerSession;->assertCallerIsOwnerOrRootLocked()V
+HPLcom/android/server/pm/PackageInstallerSession;->buildAppIconFile(ILjava/io/File;)Ljava/io/File;
+HPLcom/android/server/pm/PackageInstallerSession;->computeProgressLocked(Z)V
+HPLcom/android/server/pm/PackageInstallerSession;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/pm/PackageInstallerSession;->generateInfo()Landroid/content/pm/PackageInstaller$SessionInfo;
+HPLcom/android/server/pm/PackageInstallerSession;->generateInfo(Z)Landroid/content/pm/PackageInstaller$SessionInfo;
+HPLcom/android/server/pm/PackageInstallerSession;->openWriteInternal(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor;
+HPLcom/android/server/pm/PackageInstallerSession;->setClientProgress(F)V
+HPLcom/android/server/pm/PackageInstallerSession;->validateInstallLocked(Landroid/content/pm/PackageInfo;)V
+HPLcom/android/server/pm/PackageInstallerSession;->write(Lorg/xmlpull/v1/XmlSerializer;Ljava/io/File;)V
+HPLcom/android/server/pm/PackageManagerService$20;->getMountMode(ILjava/lang/String;)I
+HPLcom/android/server/pm/PackageManagerService$20;->hasExternalStorage(ILjava/lang/String;)Z
HPLcom/android/server/pm/PackageManagerService$2;->compare(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
HPLcom/android/server/pm/PackageManagerService$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->addActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V
-HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
-HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;Ljava/util/List;)Z
+HPLcom/android/server/pm/PackageManagerService$3;->compare(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I
+HPLcom/android/server/pm/PackageManagerService$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/pm/PackageManagerService$6;->run()V
+HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V
+HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/pm/PackageParser$ActivityIntentInfo;)V
HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z
HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isFilterStopped(Landroid/content/pm/PackageParser$ActivityIntentInfo;I)Z
HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z
-HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;II)Landroid/content/pm/ResolveInfo;
HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/ArrayList;I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->removeActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService$DumpState;->isDumping(I)Z
+HPLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z
HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleReturnCode()V
HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleServiceError()V
HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleStartCopy()V
@@ -1138,154 +3184,421 @@ HPLcom/android/server/pm/PackageManagerService$InstallArgs;->doPreInstall(I)I
HPLcom/android/server/pm/PackageManagerService$InstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z
HPLcom/android/server/pm/PackageManagerService$InstallArgs;->getCodePath()Ljava/lang/String;
HPLcom/android/server/pm/PackageManagerService$InstallArgs;->getResourcePath()Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService$InstallParams;->handleStartCopy()V
HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->addOneIntentFilterVerification(IIILandroid/content/IntentFilter;Ljava/lang/String;)Z
HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->receiveVerificationResponse(I)V
HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->startVerifications(I)V
+HPLcom/android/server/pm/PackageManagerService$PackageHandler;->doHandleMessage(Landroid/os/Message;)V
+HPLcom/android/server/pm/PackageManagerService$PackageHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canAccessInstantApps(II)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getActivityInfo(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getOverlayPackages(I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getTargetPackageNames(I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getUidTargetSdkVersion(I)I
HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->grantEphemeralAccess(ILandroid/content/Intent;II)V
-HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->addService(Landroid/content/pm/PackageParser$Service;)V
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageEphemeral(ILjava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackagePersistent(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILjava/lang/String;Ljava/util/List;)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getNamesForUids([I)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
+HPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ProviderIntentInfo;)Z
+HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)Landroid/util/ArrayMap;
HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ServiceIntentInfo;Ljava/util/List;)Z
+HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V
+HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/pm/PackageParser$ServiceIntentInfo;)V
HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ServiceIntentInfo;)Z
HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newResult(Landroid/content/pm/PackageParser$ServiceIntentInfo;II)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/ArrayList;I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->removeService(Landroid/content/pm/PackageParser$Service;)V
+HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->sortResults(Ljava/util/List;)V
+HPLcom/android/server/pm/PackageManagerService;->-get7(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/InstantAppRegistry;
+HPLcom/android/server/pm/PackageManagerService;->-wrap1(Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/PackageManagerService;->-wrap18(Lcom/android/server/pm/PackageManagerService;I)I
+HPLcom/android/server/pm/PackageManagerService;->-wrap6(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/PackageManagerService;->-wrap7(Lcom/android/server/pm/PackageManagerService;II)Z
+HPLcom/android/server/pm/PackageManagerService;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->canViewInstantApps(II)Z
+HPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Ljava/lang/String;I)V
HPLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerService;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I
HPLcom/android/server/pm/PackageManagerService;->checkUidPermission(Ljava/lang/String;I)I
HPLcom/android/server/pm/PackageManagerService;->checkUidSignatures(II)I
-HPLcom/android/server/pm/PackageManagerService;->commitPackageSettings(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;IZ)V
-HPLcom/android/server/pm/PackageManagerService;->compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
-HPLcom/android/server/pm/PackageManagerService;->enforceCrossUserPermission(IIZZLjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->chooseBestActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/PackageManagerService;->cleanPackageDataStructuresLILPw(Landroid/content/pm/PackageParser$Package;Z)V
+HPLcom/android/server/pm/PackageManagerService;->collectAbsoluteCodePaths()Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->dumpCompilerStatsLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->dumpDexoptStateLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->enforceShellRestriction(Ljava/lang/String;II)V
HPLcom/android/server/pm/PackageManagerService;->filterAppAccessLPr(Lcom/android/server/pm/PackageSetting;II)Z
HPLcom/android/server/pm/PackageManagerService;->filterAppAccessLPr(Lcom/android/server/pm/PackageSetting;ILandroid/content/ComponentName;II)Z
+HPLcom/android/server/pm/PackageManagerService;->filterCandidatesWithDomainPreferredActivitiesLPr(Landroid/content/Intent;ILjava/util/List;Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;I)Ljava/util/List;
HPLcom/android/server/pm/PackageManagerService;->filterSharedLibPackageLPr(Lcom/android/server/pm/PackageSetting;III)Z
-HPLcom/android/server/pm/PackageManagerService;->findPermissionTreeLP(Ljava/lang/String;)Lcom/android/server/pm/BasePermission;
-HPLcom/android/server/pm/PackageManagerService;->fixProcessName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibraries(Landroid/content/pm/PackageParser$Package;)Ljava/util/List;
HPLcom/android/server/pm/PackageManagerService;->generatePackageInfo(Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/PackageManagerService;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/PackageManagerService;->getActivityInfoInternal(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
HPLcom/android/server/pm/PackageManagerService;->getApplicationEnabledSetting(Ljava/lang/String;I)I
HPLcom/android/server/pm/PackageManagerService;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
HPLcom/android/server/pm/PackageManagerService;->getApplicationInfoInternal(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/PackageManagerService;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
HPLcom/android/server/pm/PackageManagerService;->getInstalledApplications(II)Landroid/content/pm/ParceledListSlice;
HPLcom/android/server/pm/PackageManagerService;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/PackageManagerService;->getInstantAppPackageName(I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getNameForUid(I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getNamesForUids([I)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getOptimizablePackages()Landroid/util/ArraySet;
+HPLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/CompilerStats$PackageStats;
+HPLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
+HPLcom/android/server/pm/PackageManagerService;->getPackageGids(Ljava/lang/String;II)[I
HPLcom/android/server/pm/PackageManagerService;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo;
HPLcom/android/server/pm/PackageManagerService;->getPackageInfoInternal(Ljava/lang/String;IIII)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/PackageManagerService;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
HPLcom/android/server/pm/PackageManagerService;->getPackageUid(Ljava/lang/String;II)I
HPLcom/android/server/pm/PackageManagerService;->getPackagesForUid(I)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getPersistentApplicationsInternal(I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/PackageManagerService;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
HPLcom/android/server/pm/PackageManagerService;->getServiceInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ServiceInfo;
+HPLcom/android/server/pm/PackageManagerService;->getSystemSharedLibraryNames()[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getUidTargetSdkVersionLockedLPr(I)I
HPLcom/android/server/pm/PackageManagerService;->getUserManagerInternal()Landroid/os/UserManagerInternal;
-HPLcom/android/server/pm/PackageManagerService;->grantPermissionsLPw(Landroid/content/pm/PackageParser$Package;ZLjava/lang/String;)V
-HPLcom/android/server/pm/PackageManagerService;->grantSignaturePermission(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/BasePermission;Lcom/android/server/pm/PermissionsState;)Z
+HPLcom/android/server/pm/PackageManagerService;->handlePackagePostInstall(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V
+HPLcom/android/server/pm/PackageManagerService;->hasPermission(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageManagerService;->installPackageLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V
HPLcom/android/server/pm/PackageManagerService;->isCallerSameApp(Ljava/lang/String;I)Z
HPLcom/android/server/pm/PackageManagerService;->isInstantApp(Ljava/lang/String;I)Z
HPLcom/android/server/pm/PackageManagerService;->isPackageAvailable(Ljava/lang/String;I)Z
HPLcom/android/server/pm/PackageManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/PackageManagerService;->isSystemApp(Lcom/android/server/pm/PackageSetting;)Z
+HPLcom/android/server/pm/PackageManagerService;->isProtectedBroadcast(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService;->logAppProcessStartIfNeeded(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService;->maybeAddInstantAppInstaller(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V
HPLcom/android/server/pm/PackageManagerService;->notifyPackageUse(Ljava/lang/String;I)V
HPLcom/android/server/pm/PackageManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLcom/android/server/pm/PackageManagerService;->performDexOptInternal(Ljava/lang/String;ZLjava/lang/String;ZZ)I
+HPLcom/android/server/pm/PackageManagerService;->performDexOptInternal(Lcom/android/server/pm/dex/DexoptOptions;)I
+HPLcom/android/server/pm/PackageManagerService;->performDexOptInternalWithDependenciesLI(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/dex/DexoptOptions;)I
+HPLcom/android/server/pm/PackageManagerService;->performDexOptTraced(Lcom/android/server/pm/dex/DexoptOptions;)I
+HPLcom/android/server/pm/PackageManagerService;->performDexOptWithStatus(Lcom/android/server/pm/dex/DexoptOptions;)I
HPLcom/android/server/pm/PackageManagerService;->queryContentProviders(Ljava/lang/String;IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
-HPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZ)Ljava/util/List;
-HPLcom/android/server/pm/PackageManagerService;->queryIntentReceiversInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptionsInternal(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->queryIntentContentProvidersInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService;->queryIntentReceiversInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List;
HPLcom/android/server/pm/PackageManagerService;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
HPLcom/android/server/pm/PackageManagerService;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZ)Ljava/util/List;
HPLcom/android/server/pm/PackageManagerService;->reconcileApps(Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->replacePackageLIF(Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V
+HPLcom/android/server/pm/PackageManagerService;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
HPLcom/android/server/pm/PackageManagerService;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
HPLcom/android/server/pm/PackageManagerService;->resolveExternalPackageNameLPr(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/PackageManagerService;->resolveIntentInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo;
HPLcom/android/server/pm/PackageManagerService;->resolveInternalPackageNameLPr(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
HPLcom/android/server/pm/PackageManagerService;->resolveServiceInternal(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/PackageManagerService;->scanPackageDirtyLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
+HPLcom/android/server/pm/PackageManagerService;->revokeUnusedSharedUserPermissionsLPw(Lcom/android/server/pm/SharedUserSetting;[I)[I
+HPLcom/android/server/pm/PackageManagerService;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V
HPLcom/android/server/pm/PackageManagerService;->setEnabledSetting(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V
HPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Ljava/lang/String;ZI)V
-HPLcom/android/server/pm/PackageManagerService;->updateFlags(II)I
HPLcom/android/server/pm/PackageManagerService;->updateFlagsForApplication(IILjava/lang/Object;)I
-HPLcom/android/server/pm/PackageManagerService;->updateFlagsForComponent(IILjava/lang/Object;)I
HPLcom/android/server/pm/PackageManagerService;->updateFlagsForPackage(IILjava/lang/Object;)I
HPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZ)I
-HPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZZ)I
-HPLcom/android/server/pm/PackageManagerService;->updatePermissionsLPw(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Ljava/lang/String;I)V
-HPLcom/android/server/pm/PackageManagerService;->userNeedsBadging(I)Z
-HPLcom/android/server/pm/PackageSettingBase;->getInstalled(I)Z
-HPLcom/android/server/pm/PackageSettingBase;->getInstantApp(I)Z
-HPLcom/android/server/pm/PackageSettingBase;->readUserState(I)Landroid/content/pm/PackageUserState;
-HPLcom/android/server/pm/PackageSignatures;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V
-HPLcom/android/server/pm/PackageUsage;->readToken(Ljava/io/InputStream;Ljava/lang/StringBuffer;C)Ljava/lang/String;
-HPLcom/android/server/pm/PermissionsState$PermissionData;-><init>(Lcom/android/server/pm/PermissionsState$PermissionData;)V
-HPLcom/android/server/pm/PermissionsState$PermissionData;->getPermissionState(I)Lcom/android/server/pm/PermissionsState$PermissionState;
-HPLcom/android/server/pm/PermissionsState$PermissionState;-><init>(Lcom/android/server/pm/PermissionsState$PermissionState;)V
-HPLcom/android/server/pm/PermissionsState$PermissionState;->getFlags()I
-HPLcom/android/server/pm/PermissionsState$PermissionState;->getName()Ljava/lang/String;
-HPLcom/android/server/pm/PermissionsState$PermissionState;->isGranted()Z
-HPLcom/android/server/pm/PermissionsState;->copyFrom(Lcom/android/server/pm/PermissionsState;)V
-HPLcom/android/server/pm/PermissionsState;->getPermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState;
-HPLcom/android/server/pm/PermissionsState;->getPermissionStatesInternal(I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->updateSettingsInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[I[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V
+HPLcom/android/server/pm/PackageManagerService;->verifyIntentFiltersIfNeeded(IIZLandroid/content/pm/PackageParser$Package;)V
+HPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getCompilerFilterForReason(I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerServiceUtils;->checkISA(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerShellCommand$1;->compare(Landroid/content/pm/FeatureInfo;Landroid/content/pm/FeatureInfo;)I
+HPLcom/android/server/pm/PackageManagerShellCommand$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/pm/PackageManagerShellCommand;->doWriteSplit(ILjava/lang/String;JLjava/lang/String;Z)I
+HPLcom/android/server/pm/PackageManagerShellCommand;->makeInstallParams()Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;
+HPLcom/android/server/pm/PackageManagerShellCommand;->runListFeatures()I
+HPLcom/android/server/pm/PackageManagerShellCommand;->runListPackages(Z)I
+HPLcom/android/server/pm/PackageSetting;->isSystem()Z
+HPLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSettingBase;->enableComponentLPw(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageSettingBase;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageSettingBase;->getEnabled(I)I
+HPLcom/android/server/pm/PackageSettingBase;->getHidden(I)Z
+HPLcom/android/server/pm/PackageSettingBase;->getLastDisabledAppCaller(I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageSettingBase;->getNotLaunched(I)Z
+HPLcom/android/server/pm/PackageSettingBase;->getStopped(I)Z
+HPLcom/android/server/pm/PackageSettingBase;->getSuspended(I)Z
+HPLcom/android/server/pm/PackageSettingBase;->modifyUserStateComponents(IZZ)Landroid/content/pm/PackageUserState;
+HPLcom/android/server/pm/PackageSettingBase;->setCeDataInode(JI)V
+HPLcom/android/server/pm/PackageSettingBase;->setOverlayPaths(Ljava/util/List;I)V
+HPLcom/android/server/pm/PermissionsState;->computeGids([I)[I
HPLcom/android/server/pm/PermissionsState;->getPermissions(I)Ljava/util/Set;
-HPLcom/android/server/pm/PermissionsState;->getRuntimePermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState;
-HPLcom/android/server/pm/PermissionsState;->hasInstallPermission(Ljava/lang/String;)Z
-HPLcom/android/server/pm/PermissionsState;->hasRuntimePermission(Ljava/lang/String;I)Z
-HPLcom/android/server/pm/PreferredComponent$Callbacks;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z
-HPLcom/android/server/pm/SELinuxMMAC;->assignSeInfoValue(Landroid/content/pm/PackageParser$Package;)V
+HPLcom/android/server/pm/PermissionsState;->getRuntimePermissionStates(I)Ljava/util/List;
+HPLcom/android/server/pm/PreferredActivity;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+HPLcom/android/server/pm/PreferredComponent;->sameSet([Landroid/content/ComponentName;)Z
+HPLcom/android/server/pm/PreferredComponent;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
HPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissions(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
-HPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsSync(I)V
-HPLcom/android/server/pm/Settings;->getAllUsers(Lcom/android/server/pm/UserManagerService;)Ljava/util/List;
-HPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/pm/Settings;->getUserIdLPr(I)Ljava/lang/Object;
-HPLcom/android/server/pm/Settings;->isEnabledAndMatchLPr(Landroid/content/pm/ComponentInfo;II)Z
-HPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(I)V
+HPLcom/android/server/pm/Settings;->dumpInstallPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PermissionsState;)V
+HPLcom/android/server/pm/Settings;->dumpPackageLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageSetting;Ljava/text/SimpleDateFormat;Ljava/util/Date;Ljava/util/List;Z)V
+HPLcom/android/server/pm/Settings;->dumpPackagesLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;Z)V
+HPLcom/android/server/pm/Settings;->dumpPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;)V
+HPLcom/android/server/pm/Settings;->dumpRuntimePermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/List;Z)V
+HPLcom/android/server/pm/Settings;->dumpSharedUsersLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;Z)V
+HPLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I
+HPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I
+HPLcom/android/server/pm/Settings;->permissionFlagsToString(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/pm/Settings;->printFlags(Ljava/io/PrintWriter;I[Ljava/lang/Object;)V
HPLcom/android/server/pm/Settings;->setPackageStoppedStateLPw(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZZII)Z
-HPLcom/android/server/pm/Settings;->writeIntToFile(Ljava/io/File;I)V
-HPLcom/android/server/pm/Settings;->writeKernelMappingLPr()V
-HPLcom/android/server/pm/Settings;->writeKernelMappingLPr(Lcom/android/server/pm/PackageSetting;)V
-HPLcom/android/server/pm/Settings;->writeLPr()V
-HPLcom/android/server/pm/Settings;->writePackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/Settings;->writeAllUsersPackageRestrictionsLPr()V
+HPLcom/android/server/pm/Settings;->writeDefaultAppsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
+HPLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V
HPLcom/android/server/pm/Settings;->writePackageListLPr(I)V
HPLcom/android/server/pm/Settings;->writePackageRestrictionsLPr(I)V
-HPLcom/android/server/pm/Settings;->writePermissionLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/BasePermission;)V
-HPLcom/android/server/pm/Settings;->writePermissionsLPr(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
-HPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
+HPLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;IZ)V
+HPLcom/android/server/pm/ShortcutPackage;->adjustRanks()V
+HPLcom/android/server/pm/ShortcutPackage;->areAllActivitiesStillEnabled()Z
+HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;I)V
+HPLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lorg/xmlpull/v1/XmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage;
+HPLcom/android/server/pm/ShortcutPackage;->parseIntent(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent;
+HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/pm/ShortcutPackage;->publishManifestShortcuts(Ljava/util/List;)Z
+HPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z
HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/ShortcutInfo;Z)V
+HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+HPLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap;
+HPLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z
+HPLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V
+HPLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo;
+HPLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I
+HPLcom/android/server/pm/ShortcutParser;->parseShortcutAttributes(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;Ljava/lang/String;Landroid/content/ComponentName;II)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z
+HPLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/pm/ShortcutService$3;->onUidStateChanged(IIJ)V
+HPLcom/android/server/pm/ShortcutService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;II)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;I)V
+HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_86800(JLandroid/util/ArraySet;Landroid/content/ComponentName;ILandroid/content/pm/ShortcutInfo;)Z
+HPLcom/android/server/pm/ShortcutService;->-wrap0(Landroid/content/pm/PackageInfo;)Z
+HPLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V
+HPLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V
+HPLcom/android/server/pm/ShortcutService;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher;
+HPLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage;
+HPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;
+HPLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V
+HPLcom/android/server/pm/ShortcutService;->hasShortcutHostPermissionInner(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I
+HPLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J
+HPLcom/android/server/pm/ShortcutService;->injectCurrentTimeMillis()J
HPLcom/android/server/pm/ShortcutService;->injectElapsedRealtime()J
+HPLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ShortcutService;->injectIsActivityEnabledAndExported(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V
+HPLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/PackageInfo;)Z
+HPLcom/android/server/pm/ShortcutService;->isProcessStateForeground(I)Z
+HPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z
+HPLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V
+HPLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I
+HPLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
+HPLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J
+HPLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
+HPLcom/android/server/pm/ShortcutService;->parseStringAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService;->setReturnedByServer(Ljava/util/List;)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V
+HPLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V
HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/Intent;)V
HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V
+HPLcom/android/server/pm/ShortcutService;->writeTagExtra(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/os/PersistableBundle;)V
+HPLcom/android/server/pm/ShortcutUser$PackageWithUser;-><init>(ILjava/lang/String;)V
+HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->hashCode()I
+HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->of(ILjava/lang/String;)Lcom/android/server/pm/ShortcutUser$PackageWithUser;
+HPLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V
+HPLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;
+HPLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
+HPLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
+HPLcom/android/server/pm/ShortcutUser;->lambda$-com_android_server_pm_ShortcutUser_8319(ILjava/lang/String;Ljava/util/function/Consumer;Lcom/android/server/pm/ShortcutPackageItem;)V
+HPLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V
+HPLcom/android/server/pm/ShortcutUser;->saveShortcutPackageItem(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/ShortcutPackageItem;Z)V
+HPLcom/android/server/pm/ShortcutUser;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+HPLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z
+HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z
HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlockingOrUnlocked(I)Z
HPLcom/android/server/pm/UserManagerService;->-get9(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseIntArray;
-HPLcom/android/server/pm/UserManagerService;->exists(I)Z
-HPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService;
+HPLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermIfCallerInOtherProfileGroup(ILjava/lang/String;)V
+HPLcom/android/server/pm/UserManagerService;->checkManageUsersPermission(Ljava/lang/String;)V
+HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle;
HPLcom/android/server/pm/UserManagerService;->getProfileIds(IZ)[I
-HPLcom/android/server/pm/UserManagerService;->getUserIds()[I
-HPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
-HPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo;
-HPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(IZ)Landroid/util/IntArray;
+HPLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List;
+HPLcom/android/server/pm/UserManagerService;->getProfilesLU(IZZ)Ljava/util/List;
+HPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I
+HPLcom/android/server/pm/UserManagerService;->getUserHandle(I)I
+HPLcom/android/server/pm/UserManagerService;->getUserRestrictions(I)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I
HPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission()Z
HPLcom/android/server/pm/UserManagerService;->hasManagedProfile(I)Z
+HPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z
+HPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z
+HPLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z
+HPLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z
+HPLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Landroid/util/AtomicFile;)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Ljava/lang/String;I)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserRestrictionsUtils;->clone(Landroid/os/Bundle;)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z
+HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->mergeAppDataDirs(Ljava/lang/String;I)V
HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->searchDex(Ljava/lang/String;I)I
+HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->updateCodeLocation(Ljava/lang/String;[Ljava/lang/String;)V
HPLcom/android/server/pm/dex/DexManager;->-get3()I
+HPLcom/android/server/pm/dex/DexManager;->-wrap0(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V
+HPLcom/android/server/pm/dex/DexManager;->cachePackageInfo(Landroid/content/pm/PackageInfo;I)V
HPLcom/android/server/pm/dex/DexManager;->getDexPackage(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Lcom/android/server/pm/dex/DexManager$DexSearchResult;
+HPLcom/android/server/pm/dex/DexManager;->getPackageUseInfoOrDefault(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
+HPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V
+HPLcom/android/server/pm/dex/DexManager;->notifyDexLoadInternal(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;Ljava/lang/String;I)V
+HPLcom/android/server/pm/dex/DexManager;->putIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;II)V
+HPLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoader(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoaderChain(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/dex/DexoptUtils;->encodeClasspath(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/dex/DexoptUtils;->encodeClasspath([Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/dex/DexoptUtils;->getClassLoaderContexts(Landroid/content/pm/ApplicationInfo;[Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/pm/dex/DexoptUtils;->processContextForDexLoad(Ljava/util/List;Ljava/util/List;)[Ljava/lang/String;
+HPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)V
+HPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V
+HPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isUsedByOtherApps(Ljava/lang/String;)Z
+HPLcom/android/server/pm/dex/PackageDexUsage;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
+HPLcom/android/server/pm/dex/PackageDexUsage;->read(Ljava/io/Reader;)V
+HPLcom/android/server/pm/dex/PackageDexUsage;->record(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ZZLjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/Map;Ljava/util/Map;)V
+HPLcom/android/server/pm/dex/PackageDexUsage;->write(Ljava/io/Writer;)V
+HPLcom/android/server/policy/AccessibilityShortcutController;->isAccessibilityShortcutAvailable(Z)Z
HPLcom/android/server/policy/BarController$OnBarVisibilityChangedListener;->onBarVisibilityChanged(Z)V
+HPLcom/android/server/policy/BarController;->adjustSystemUiVisibilityLw(II)V
HPLcom/android/server/policy/BarController;->applyTranslucentFlagLw(Landroid/view/WindowManagerPolicy$WindowState;II)I
+HPLcom/android/server/policy/BarController;->checkHiddenLw()Z
+HPLcom/android/server/policy/BarController;->computeStateLw(ZZLandroid/view/WindowManagerPolicy$WindowState;Z)I
+HPLcom/android/server/policy/BarController;->getStatusBarInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
HPLcom/android/server/policy/BarController;->isTransientShowRequested()Z
HPLcom/android/server/policy/BarController;->isTransientShowing()Z
HPLcom/android/server/policy/BarController;->setBarShowingLw(Z)Z
+HPLcom/android/server/policy/BarController;->setShowTransparent(Z)V
+HPLcom/android/server/policy/BarController;->skipAnimation()Z
+HPLcom/android/server/policy/BarController;->updateStateLw(I)Z
HPLcom/android/server/policy/BarController;->updateVisibilityLw(ZII)I
+HPLcom/android/server/policy/BarController;->wasRecentlyTranslucent()Z
+HPLcom/android/server/policy/GlobalKeyManager;->handleGlobalKey(Landroid/content/Context;ILandroid/view/KeyEvent;)Z
+HPLcom/android/server/policy/GlobalKeyManager;->shouldHandleGlobalKey(ILandroid/view/KeyEvent;)Z
+HPLcom/android/server/policy/ImmersiveModeConfirmation;->getWindowToken()Landroid/os/IBinder;
+HPLcom/android/server/policy/PhoneWindowManager$14;->onDown()V
+HPLcom/android/server/policy/PhoneWindowManager$14;->onUpOrCancel()V
+HPLcom/android/server/policy/PhoneWindowManager$21;-><init>(Lcom/android/server/policy/PhoneWindowManager;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/WindowManagerPolicy$WindowState;Z)V
+HPLcom/android/server/policy/PhoneWindowManager$21;->run()V
+HPLcom/android/server/policy/PhoneWindowManager;->addSplashScreen(Landroid/os/IBinder;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;I)Landroid/view/WindowManagerPolicy$StartingSurface;
+HPLcom/android/server/policy/PhoneWindowManager;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V
+HPLcom/android/server/policy/PhoneWindowManager;->adjustSystemUiVisibilityLw(I)I
+HPLcom/android/server/policy/PhoneWindowManager;->adjustWindowParamsLw(Landroid/view/WindowManager$LayoutParams;)V
HPLcom/android/server/policy/PhoneWindowManager;->applyKeyguardPolicyLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V
HPLcom/android/server/policy/PhoneWindowManager;->applyPostLayoutPolicyLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V
+HPLcom/android/server/policy/PhoneWindowManager;->applyStableConstraints(IILandroid/graphics/Rect;)V
+HPLcom/android/server/policy/PhoneWindowManager;->areTranslucentBarsAllowed()Z
HPLcom/android/server/policy/PhoneWindowManager;->beginLayoutLw(ZIIII)V
+HPLcom/android/server/policy/PhoneWindowManager;->beginPostLayoutPolicyLw(II)V
+HPLcom/android/server/policy/PhoneWindowManager;->calculateRelevantTaskInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;II)V
HPLcom/android/server/policy/PhoneWindowManager;->canBeHiddenByKeyguardLw(Landroid/view/WindowManagerPolicy$WindowState;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->canHideNavigationBar()Z
+HPLcom/android/server/policy/PhoneWindowManager;->canReceiveInput(Landroid/view/WindowManagerPolicy$WindowState;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->configureNavBarOpacity(IZZZ)I
+HPLcom/android/server/policy/PhoneWindowManager;->drawsSystemBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->finishLayoutLw()V
HPLcom/android/server/policy/PhoneWindowManager;->finishPostLayoutPolicyLw()I
+HPLcom/android/server/policy/PhoneWindowManager;->focusChangedLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I
+HPLcom/android/server/policy/PhoneWindowManager;->forcesDrawStatusBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayHeight(IIIII)I
+HPLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayWidth(IIIII)I
+HPLcom/android/server/policy/PhoneWindowManager;->getContentRectLw(Landroid/graphics/Rect;)V
+HPLcom/android/server/policy/PhoneWindowManager;->getInputMethodWindowVisibleHeightLw()I
+HPLcom/android/server/policy/PhoneWindowManager;->getInsetHintLw(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->getNavigationBarHeight(II)I
+HPLcom/android/server/policy/PhoneWindowManager;->getNavigationBarWidth(II)I
+HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayHeight(IIIII)I
+HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayWidth(IIIII)I
+HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorInsetsLw(IIILandroid/graphics/Rect;)V
+HPLcom/android/server/policy/PhoneWindowManager;->getStableInsetsLw(IIILandroid/graphics/Rect;)V
+HPLcom/android/server/policy/PhoneWindowManager;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
+HPLcom/android/server/policy/PhoneWindowManager;->getSystemDecorLayerLw()I
HPLcom/android/server/policy/PhoneWindowManager;->inKeyguardRestrictedKeyInputMode()Z
+HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J
+HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
+HPLcom/android/server/policy/PhoneWindowManager;->isImmersiveMode(I)Z
HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardLocked()Z
HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowingAndNotOccluded()Z
+HPLcom/android/server/policy/PhoneWindowManager;->isNavBarForcedShownLw(Landroid/view/WindowManagerPolicy$WindowState;)Z
HPLcom/android/server/policy/PhoneWindowManager;->isScreenOn()Z
+HPLcom/android/server/policy/PhoneWindowManager;->isShowingDreamLw()Z
HPLcom/android/server/policy/PhoneWindowManager;->isStatusBarKeyguard()Z
+HPLcom/android/server/policy/PhoneWindowManager;->isValidGlobalKey(I)Z
HPLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z
+HPLcom/android/server/policy/PhoneWindowManager;->layoutNavigationBar(IIIIIIILandroid/graphics/Rect;ZZZZ)Z
+HPLcom/android/server/policy/PhoneWindowManager;->layoutStatusBar(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;IZ)Z
+HPLcom/android/server/policy/PhoneWindowManager;->layoutWallpaper(Landroid/view/WindowManagerPolicy$WindowState;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
HPLcom/android/server/policy/PhoneWindowManager;->layoutWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V
+HPLcom/android/server/policy/PhoneWindowManager;->navigationBarPosition(III)I
+HPLcom/android/server/policy/PhoneWindowManager;->offsetInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V
+HPLcom/android/server/policy/PhoneWindowManager;->okToAnimate()Z
+HPLcom/android/server/policy/PhoneWindowManager;->performHapticFeedbackLw(Landroid/view/WindowManagerPolicy$WindowState;IZ)Z
+HPLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V
+HPLcom/android/server/policy/PhoneWindowManager;->readLidState()V
+HPLcom/android/server/policy/PhoneWindowManager;->selectAnimationLw(Landroid/view/WindowManagerPolicy$WindowState;I)I
+HPLcom/android/server/policy/PhoneWindowManager;->setInitialDisplaySize(Landroid/view/Display;III)V
HPLcom/android/server/policy/PhoneWindowManager;->shouldBeHiddenByKeyguard(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->shouldUseOutsets(Landroid/view/WindowManager$LayoutParams;I)Z
+HPLcom/android/server/policy/PhoneWindowManager;->topAppHidesStatusBar()Z
+HPLcom/android/server/policy/PhoneWindowManager;->updateLightNavigationBarLw(ILandroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I
HPLcom/android/server/policy/PhoneWindowManager;->updateLightStatusBarLw(ILandroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I
+HPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V
HPLcom/android/server/policy/PhoneWindowManager;->updateSystemBarsLw(Landroid/view/WindowManagerPolicy$WindowState;II)I
HPLcom/android/server/policy/PhoneWindowManager;->updateSystemUiVisibilityLw()I
+HPLcom/android/server/policy/PhoneWindowManager;->updateWindowSleepToken()V
+HPLcom/android/server/policy/PhoneWindowManager;->userActivity()V
HPLcom/android/server/policy/PolicyControl;->getSystemUiVisibility(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I
HPLcom/android/server/policy/PolicyControl;->getWindowFlags(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I
+HPLcom/android/server/policy/StatusBarController$1$1;-><init>(Lcom/android/server/policy/StatusBarController$1;)V
+HPLcom/android/server/policy/StatusBarController$1$1;->run()V
+HPLcom/android/server/policy/StatusBarController$1$2;->run()V
+HPLcom/android/server/policy/StatusBarController$1$4;-><init>(Lcom/android/server/policy/StatusBarController$1;)V
+HPLcom/android/server/policy/StatusBarController$1$4;->run()V
+HPLcom/android/server/policy/StatusBarController$1;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+HPLcom/android/server/policy/StatusBarController$1;->onAppTransitionPendingLocked()V
+HPLcom/android/server/policy/StatusBarController;->calculateStatusBarTransitionStartTime(Landroid/view/animation/Animation;Landroid/view/animation/Animation;)J
+HPLcom/android/server/policy/StatusBarController;->findAlmostThereFraction(Landroid/view/animation/Interpolator;)F
+HPLcom/android/server/policy/StatusBarController;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation;
+HPLcom/android/server/policy/StatusBarController;->setTopAppHidesStatusBar(Z)V
+HPLcom/android/server/policy/StatusBarController;->skipAnimation()Z
HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onDebug()V
HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onDown()V
HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onFling(I)V
@@ -1297,7 +3610,14 @@ HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSw
HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSwipeFromRight()V
HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSwipeFromTop()V
HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onUpOrCancel()V
+HPLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z
+HPLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onSingleTapUp(Landroid/view/MotionEvent;)Z
+HPLcom/android/server/policy/SystemGesturesPointerEventListener;->-get2(Lcom/android/server/policy/SystemGesturesPointerEventListener;)Landroid/widget/OverScroller;
+HPLcom/android/server/policy/SystemGesturesPointerEventListener;->captureDown(Landroid/view/MotionEvent;I)V
+HPLcom/android/server/policy/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I
HPLcom/android/server/policy/SystemGesturesPointerEventListener;->detectSwipe(Landroid/view/MotionEvent;)I
+HPLcom/android/server/policy/SystemGesturesPointerEventListener;->findIndex(I)I
+HPLcom/android/server/policy/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
HPLcom/android/server/policy/WakeGestureListener;->onWakeUp()V
HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->getProposedRotationLocked()I
@@ -1307,44 +3627,119 @@ HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->onTouc
HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->onTouchStartLocked()V
HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->resetLocked(Z)V
HPLcom/android/server/policy/WindowOrientationListener;->onProposedRotationChanged(I)V
+HPLcom/android/server/policy/WindowOrientationListener;->onTouchEnd()V
+HPLcom/android/server/policy/WindowOrientationListener;->onTouchStart()V
HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;->onDrawn()V
HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z
HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isShowing()Z
HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isInputRestricted()Z
HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isShowing()Z
HPLcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;->onTrustedChanged()V
+HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isInputRestricted()Z
+HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z
+HPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/power/Notifier;->-wrap3(Lcom/android/server/power/Notifier;)V
+HPLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I
+HPLcom/android/server/power/Notifier;->onUserActivity(II)V
HPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
+HPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
HPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
+HPLcom/android/server/power/Notifier;->sendUserActivity()V
+HPLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(I)V
+HPLcom/android/server/power/PowerManagerService$BatteryReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
HPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V
-HPLcom/android/server/power/PowerManagerService$BinderService;->powerHint(II)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z
+HPLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z
+HPLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z
HPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUids(Landroid/os/IBinder;[I)V
HPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->userActivity(JII)V
HPLcom/android/server/power/PowerManagerService$LocalService;->finishUidChanges()V
+HPLcom/android/server/power/PowerManagerService$LocalService;->powerHint(II)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(I)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V
HPLcom/android/server/power/PowerManagerService$LocalService;->startUidChanges()V
+HPLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V
HPLcom/android/server/power/PowerManagerService$PowerManagerHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/power/PowerManagerService$UidState;-><init>(I)V
+HPLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;)V
+HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;II)Z
+HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameWorkSource(Landroid/os/WorkSource;)Z
+HPLcom/android/server/power/PowerManagerService$WakeLock;->updateWorkSource(Landroid/os/WorkSource;)V
HPLcom/android/server/power/PowerManagerService;->-get1(Lcom/android/server/power/PowerManagerService;)Landroid/content/Context;
+HPLcom/android/server/power/PowerManagerService;->-wrap0(Landroid/os/WorkSource;)Landroid/os/WorkSource;
+HPLcom/android/server/power/PowerManagerService;->-wrap1(Lcom/android/server/power/PowerManagerService;)Z
+HPLcom/android/server/power/PowerManagerService;->-wrap13(Lcom/android/server/power/PowerManagerService;)V
+HPLcom/android/server/power/PowerManagerService;->-wrap14(Lcom/android/server/power/PowerManagerService;)V
+HPLcom/android/server/power/PowerManagerService;->-wrap2(Lcom/android/server/power/PowerManagerService;)Z
HPLcom/android/server/power/PowerManagerService;->-wrap22(Lcom/android/server/power/PowerManagerService;II)V
+HPLcom/android/server/power/PowerManagerService;->-wrap23(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V
+HPLcom/android/server/power/PowerManagerService;->-wrap29(Lcom/android/server/power/PowerManagerService;I)V
+HPLcom/android/server/power/PowerManagerService;->-wrap32(Lcom/android/server/power/PowerManagerService;J)V
+HPLcom/android/server/power/PowerManagerService;->-wrap36(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
+HPLcom/android/server/power/PowerManagerService;->-wrap7(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V
HPLcom/android/server/power/PowerManagerService;->acquireWakeLockInternal(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V
+HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V
+HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V
+HPLcom/android/server/power/PowerManagerService;->copyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource;
+HPLcom/android/server/power/PowerManagerService;->enqueueNotifyLongMsgLocked(J)V
HPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landroid/os/IBinder;)I
+HPLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V
+HPLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V
+HPLcom/android/server/power/PowerManagerService;->getDesiredScreenPolicyLocked()I
HPLcom/android/server/power/PowerManagerService;->getScreenDimDurationLocked(I)I
HPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(I)I
+HPLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked()I
+HPLcom/android/server/power/PowerManagerService;->handleBatteryStateChangedLocked()V
HPLcom/android/server/power/PowerManagerService;->handleSandman()V
+HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked()Z
+HPLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z
+HPLcom/android/server/power/PowerManagerService;->isInteractiveInternal()Z
HPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked()Z
+HPLcom/android/server/power/PowerManagerService;->isLowPowerModeInternal()Z
+HPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z
+HPLcom/android/server/power/PowerManagerService;->isValidAutoBrightnessAdjustment(F)Z
HPLcom/android/server/power/PowerManagerService;->isValidBrightness(I)Z
HPLcom/android/server/power/PowerManagerService;->needDisplaySuspendBlockerLocked()Z
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockReleasedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
HPLcom/android/server/power/PowerManagerService;->powerHintInternal(II)V
HPLcom/android/server/power/PowerManagerService;->releaseWakeLockInternal(Landroid/os/IBinder;I)V
HPLcom/android/server/power/PowerManagerService;->removeWakeLockLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V
HPLcom/android/server/power/PowerManagerService;->restartNofifyLongTimerLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
HPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V
+HPLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V
+HPLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(I)V
+HPLcom/android/server/power/PowerManagerService;->setUserActivityTimeoutOverrideFromWindowManagerInternal(J)V
+HPLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
+HPLcom/android/server/power/PowerManagerService;->shouldBoostScreenBrightness()Z
+HPLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z
+HPLcom/android/server/power/PowerManagerService;->startUidChangesInternal()V
+HPLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V
+HPLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V
+HPLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V
HPLcom/android/server/power/PowerManagerService;->updateDisplayPowerStateLocked(I)Z
HPLcom/android/server/power/PowerManagerService;->updateDreamLocked(IZ)V
+HPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V
HPLcom/android/server/power/PowerManagerService;->updatePowerRequestFromBatterySaverPolicy(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V
HPLcom/android/server/power/PowerManagerService;->updatePowerStateLocked()V
+HPLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V
+HPLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V
HPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V
+HPLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V
HPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(JI)V
HPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V
+HPLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
HPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z
+HPLcom/android/server/power/PowerManagerService;->userActivityFromNative(JII)V
+HPLcom/android/server/power/PowerManagerService;->userActivityInternal(JIII)V
+HPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(JIII)Z
+HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onCustomPrinterIconLoaded(Landroid/print/PrinterId;Landroid/graphics/drawable/Icon;)V
HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onPrintersAdded(Ljava/util/List;)V
HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onPrintersRemoved(Ljava/util/List;)V
@@ -1353,6 +3748,11 @@ HPLcom/android/server/print/RemotePrintServiceRecommendationService$RemotePrintS
HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onAllPrintJobsForServiceHandled(Landroid/content/ComponentName;)V
HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V
HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V
+HPLcom/android/server/print/UserState;->getPrintServices(I)Ljava/util/List;
+HPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->updateSearchables()V
+HPLcom/android/server/search/Searchables;->findWebSearchActivity(Landroid/content/ComponentName;)Landroid/content/ComponentName;
+HPLcom/android/server/search/Searchables;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
+HPLcom/android/server/search/Searchables;->updateSearchableList()V
HPLcom/android/server/soundtrigger/SoundTriggerInternal;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
HPLcom/android/server/soundtrigger/SoundTriggerInternal;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
HPLcom/android/server/soundtrigger/SoundTriggerInternal;->startRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
@@ -1371,47 +3771,178 @@ HPLcom/android/server/statusbar/StatusBarManagerInternal;->setCurrentUser(I)V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->setGlobalActionsListener(Lcom/android/server/statusbar/StatusBarManagerInternal$GlobalActionsListener;)V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
+HPLcom/android/server/statusbar/StatusBarManagerInternal;->setTopAppHidesStatusBar(Z)V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->setWindowState(II)V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->showAssistDisclosure()V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->showGlobalActions()V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->showPictureInPictureMenu()V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->showRecentApps(ZZ)V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->showScreenPinningRequest(I)V
+HPLcom/android/server/statusbar/StatusBarManagerInternal;->showShutdownUi(ZLjava/lang/String;)Z
HPLcom/android/server/statusbar/StatusBarManagerInternal;->startAssist(Landroid/os/Bundle;)V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleKeyboardShortcutsMenu(I)V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleRecentApps()V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleSplitScreen()V
HPLcom/android/server/statusbar/StatusBarManagerInternal;->topAppWindowChanged(Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionFinished()V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionPending()V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionStarting(JJ)V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->setTopAppHidesStatusBar(Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->topAppWindowChanged(Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService$3;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService$3;->run()V
+HPLcom/android/server/statusbar/StatusBarManagerService$4;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Landroid/os/IBinder;IIZ)V
+HPLcom/android/server/statusbar/StatusBarManagerService$4;->run()V
+HPLcom/android/server/statusbar/StatusBarManagerService$5;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/statusbar/StatusBarManagerService$5;->run()V
+HPLcom/android/server/statusbar/StatusBarManagerService;->-get0(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/internal/statusbar/IStatusBar;
+HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap0(Lcom/android/server/statusbar/StatusBarManagerService;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap2(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap3(Lcom/android/server/statusbar/StatusBarManagerService;Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->disableLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V
+HPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarService()V
+HPLcom/android/server/statusbar/StatusBarManagerService;->gatherDisableActionsLocked(II)I
+HPLcom/android/server/statusbar/StatusBarManagerService;->manageDisableListLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->topAppWindowChanged(Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->updateUiVisibilityLocked(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List;
+HPLcom/android/server/storage/CacheQuotaStrategy;->pushProcessedQuotas(Ljava/util/List;)V
HPLcom/android/server/storage/DeviceStorageMonitorInternal;->checkMemory()V
HPLcom/android/server/storage/DeviceStorageMonitorInternal;->getMemoryLowThreshold()J
HPLcom/android/server/storage/DeviceStorageMonitorInternal;->isMemoryLow()Z
+HPLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap0(III)Z
+HPLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap1(III)Z
+HPLcom/android/server/storage/DeviceStorageMonitorService$State;->isEntering(III)Z
+HPLcom/android/server/storage/DeviceStorageMonitorService$State;->isLeaving(III)Z
+HPLcom/android/server/storage/DeviceStorageMonitorService;->check()V
+HPLcom/android/server/storage/DeviceStorageMonitorService;->isBootImageOnDisk()Z
+HPLcom/android/server/storage/DeviceStorageMonitorService;->updateBroadcasts(Landroid/os/storage/VolumeInfo;III)V
+HPLcom/android/server/storage/DeviceStorageMonitorService;->updateNotifications(Landroid/os/storage/VolumeInfo;II)V
+HPLcom/android/server/timezone/ClockHelper;->currentTimestamp()J
+HPLcom/android/server/timezone/ConfigHelper;->getCheckTimeAllowedMillis()I
+HPLcom/android/server/timezone/ConfigHelper;->getDataAppPackageName()Ljava/lang/String;
+HPLcom/android/server/timezone/ConfigHelper;->getFailedCheckRetryCount()I
+HPLcom/android/server/timezone/ConfigHelper;->getUpdateAppPackageName()Ljava/lang/String;
+HPLcom/android/server/timezone/ConfigHelper;->isTrackingEnabled()Z
+HPLcom/android/server/timezone/IntentHelper$Listener;->triggerUpdateIfNeeded(Z)V
+HPLcom/android/server/timezone/IntentHelper;->disableReliabilityTriggering()V
+HPLcom/android/server/timezone/IntentHelper;->enableReliabilityTriggering()V
+HPLcom/android/server/timezone/IntentHelper;->initialize(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/timezone/IntentHelper$Listener;)V
+HPLcom/android/server/timezone/IntentHelper;->sendTriggerUpdateCheck(Lcom/android/server/timezone/CheckToken;)V
+HPLcom/android/server/timezone/PackageManagerHelper;->contentProviderRegistered(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/timezone/PackageManagerHelper;->getInstalledPackageVersion(Ljava/lang/String;)I
+HPLcom/android/server/timezone/PackageManagerHelper;->isPrivilegedApp(Ljava/lang/String;)Z
+HPLcom/android/server/timezone/PackageManagerHelper;->receiverRegistered(Landroid/content/Intent;Ljava/lang/String;)Z
+HPLcom/android/server/timezone/PackageManagerHelper;->usesPermission(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/timezone/PermissionHelper;->checkDumpPermission(Ljava/lang/String;Ljava/io/PrintWriter;)Z
+HPLcom/android/server/timezone/PermissionHelper;->enforceCallerHasPermission(Ljava/lang/String;)V
+HPLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(I)Z
+HPLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(I)Z
+HPLcom/android/server/trust/TrustManagerService;->-wrap3(Lcom/android/server/trust/TrustManagerService;I)I
+HPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V
+HPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I
HPLcom/android/server/twilight/TwilightListener;->onTwilightStateChanged(Lcom/android/server/twilight/TwilightState;)V
HPLcom/android/server/twilight/TwilightManager;->getLastTwilightState()Lcom/android/server/twilight/TwilightState;
HPLcom/android/server/twilight/TwilightManager;->registerListener(Lcom/android/server/twilight/TwilightListener;Landroid/os/Handler;)V
HPLcom/android/server/twilight/TwilightManager;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V
+HPLcom/android/server/twilight/TwilightService$1;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V
+HPLcom/android/server/twilight/TwilightService;->-get1(Lcom/android/server/twilight/TwilightService;)Landroid/util/ArrayMap;
+HPLcom/android/server/usage/AppIdleHistory$PackageHistory;-><init>()V
+HPLcom/android/server/usage/AppIdleHistory$PackageHistory;-><init>(Lcom/android/server/usage/AppIdleHistory$PackageHistory;)V
+HPLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;J)Lcom/android/server/usage/AppIdleHistory$PackageHistory;
+HPLcom/android/server/usage/AppIdleHistory;->getScreenOnTime(J)J
+HPLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap;
+HPLcom/android/server/usage/AppIdleHistory;->hasPassedThresholds(Lcom/android/server/usage/AppIdleHistory$PackageHistory;J)Z
HPLcom/android/server/usage/AppIdleHistory;->isIdle(Ljava/lang/String;IJ)Z
+HPLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V
+HPLcom/android/server/usage/AppIdleHistory;->reportUsage(Ljava/lang/String;IJ)V
+HPLcom/android/server/usage/AppIdleHistory;->shiftHistoryToNow(Landroid/util/ArrayMap;J)V
+HPLcom/android/server/usage/AppIdleHistory;->writeAppIdleTimes(I)V
+HPLcom/android/server/usage/IntervalStats;->buildEvent(Ljava/lang/String;Ljava/lang/String;)Landroid/app/usage/UsageEvents$Event;
+HPLcom/android/server/usage/IntervalStats;->getCachedStringRef(Ljava/lang/String;)Ljava/lang/String;
HPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats;
+HPLcom/android/server/usage/IntervalStats;->isStatefulEvent(I)Z
HPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;JI)V
+HPLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/usage/StorageStatsService;->enforcePermission(ILjava/lang/String;)V
+HPLcom/android/server/usage/StorageStatsService;->getAppIds(I)[I
+HPLcom/android/server/usage/StorageStatsService;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J
+HPLcom/android/server/usage/StorageStatsService;->isCacheQuotaCalculationsEnabled(Landroid/content/ContentResolver;)Z
+HPLcom/android/server/usage/StorageStatsService;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/usage/StorageStatsService;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
+HPLcom/android/server/usage/UnixCalendar;->getTimeInMillis()J
HPLcom/android/server/usage/UsageStatsService$2;->onUidStateChanged(IIJ)V
+HPLcom/android/server/usage/UsageStatsService$BinderService;->hasPermission(Ljava/lang/String;)Z
HPLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;I)Z
+HPLcom/android/server/usage/UsageStatsService$BinderService;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V
HPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdle(Ljava/lang/String;II)Z
+HPLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;II)V
HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Ljava/lang/String;II)V
+HPLcom/android/server/usage/UsageStatsService;->-get0()Ljava/io/File;
+HPLcom/android/server/usage/UsageStatsService;->-get4(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseIntArray;
+HPLcom/android/server/usage/UsageStatsService;->-wrap0(Lcom/android/server/usage/UsageStatsService;Ljava/lang/String;IIJ)Z
+HPLcom/android/server/usage/UsageStatsService;->-wrap2(Lcom/android/server/usage/UsageStatsService;II)Z
HPLcom/android/server/usage/UsageStatsService;->checkAndGetTimeLocked()J
+HPLcom/android/server/usage/UsageStatsService;->checkIdleStates(I)Z
+HPLcom/android/server/usage/UsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/usage/UsageStatsService;->forceIdleState(Ljava/lang/String;IZ)V
+HPLcom/android/server/usage/UsageStatsService;->getAppId(Ljava/lang/String;)I
+HPLcom/android/server/usage/UsageStatsService;->getIdleUidsForUser(I)[I
+HPLcom/android/server/usage/UsageStatsService;->getUserDataAndInitializeIfNeededLocked(IJ)Lcom/android/server/usage/UserUsageStatsService;
+HPLcom/android/server/usage/UsageStatsService;->informListeners(Ljava/lang/String;IZ)V
+HPLcom/android/server/usage/UsageStatsService;->isActiveDeviceAdmin(Ljava/lang/String;I)Z
HPLcom/android/server/usage/UsageStatsService;->isActiveNetworkScorer(Ljava/lang/String;)Z
HPLcom/android/server/usage/UsageStatsService;->isAppIdleFiltered(Ljava/lang/String;IIJ)Z
+HPLcom/android/server/usage/UsageStatsService;->isAppIdleFilteredOrParoled(Ljava/lang/String;IJZ)Z
+HPLcom/android/server/usage/UsageStatsService;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z
HPLcom/android/server/usage/UsageStatsService;->isDeviceProvisioningPackage(Ljava/lang/String;)Z
+HPLcom/android/server/usage/UsageStatsService;->isParoledOrCharging()Z
+HPLcom/android/server/usage/UsageStatsService;->queryEvents(IJJZ)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V
+HPLcom/android/server/usage/UsageStatsService;->shouldObfuscateInstantAppsForCaller(II)Z
+HPLcom/android/server/usage/UsageStatsXmlV1;->loadEvent(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsXmlV1;->loadUsageStats(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V
HPLcom/android/server/usage/UsageStatsXmlV1;->read(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsXmlV1;->write(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsXmlV1;->writeChooserCounts(Lorg/xmlpull/v1/XmlSerializer;Landroid/app/usage/UsageStats;)V
+HPLcom/android/server/usage/UsageStatsXmlV1;->writeConfigStats(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/ConfigurationStats;Z)V
+HPLcom/android/server/usage/UsageStatsXmlV1;->writeEvent(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/usage/UsageStatsXmlV1;->writeUsageStats(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageStats;)V
+HPLcom/android/server/usage/UserUsageStatsService$3;-><init>(Lcom/android/server/usage/UserUsageStatsService;JJZLandroid/util/ArraySet;)V
+HPLcom/android/server/usage/UserUsageStatsService$3;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onNewUpdate(I)V
HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onStatsReloaded()V
HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onStatsUpdated()V
+HPLcom/android/server/usage/UserUsageStatsService;->init(J)V
+HPLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V
+HPLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJZ)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List;
HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V
HPLcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;->onOpenInApp(Landroid/hardware/usb/UsbDevice;)V
+HPLcom/android/server/usb/UsbAlsaManager$AlsaDevice;->toString()Ljava/lang/String;
+HPLcom/android/server/usb/UsbAlsaManager;->alsaFileAdded(Ljava/lang/String;)V
+HPLcom/android/server/usb/UsbAlsaManager;->systemReady()V
+HPLcom/android/server/usb/UsbDeviceManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(IZ)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V
HPLcom/android/server/utils/ManagedApplicationService$BinderChecker;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
HPLcom/android/server/utils/ManagedApplicationService$BinderChecker;->checkType(Landroid/os/IInterface;)Z
HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->onSessionHidden(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->onSessionShown(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->sessionConnectionGone(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
+HPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNames(Landroid/content/pm/PackageManager;ILjava/lang/String;Ljava/lang/String;)Landroid/util/ArraySet;
+HPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet;
+HPLcom/android/server/vr/EnabledComponentsObserver;->rebuildAll()V
+HPLcom/android/server/vr/EnabledComponentsObserver;->sendSettingChanged()V
HPLcom/android/server/vr/SettingsObserver$SettingChangeListener;->onSettingChanged()V
HPLcom/android/server/vr/SettingsObserver$SettingChangeListener;->onSettingRestored(Ljava/lang/String;Ljava/lang/String;I)V
HPLcom/android/server/vr/VrManagerInternal;->addPersistentVrModeStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V
@@ -1422,7 +3953,17 @@ HPLcom/android/server/vr/VrManagerInternal;->onScreenStateChanged(Z)V
HPLcom/android/server/vr/VrManagerInternal;->onSleepStateChanged(Z)V
HPLcom/android/server/vr/VrManagerInternal;->setPersistentVrModeEnabled(Z)V
HPLcom/android/server/vr/VrManagerInternal;->setVr2dDisplayProperties(Landroid/app/Vr2dDisplayProperties;)V
-HPLcom/android/server/vr/VrManagerInternal;->setVrMode(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V
+HPLcom/android/server/vr/VrManagerInternal;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
+HPLcom/android/server/vr/VrManagerService$NotificationAccessManager;->update(Ljava/util/Collection;)V
+HPLcom/android/server/vr/VrManagerService$VrState;-><init>(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
+HPLcom/android/server/vr/VrManagerService;->isDefaultAllowed(Ljava/lang/String;)Z
+HPLcom/android/server/vr/VrManagerService;->onEnabledComponentChanged()V
+HPLcom/android/server/vr/VrManagerService;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
+HPLcom/android/server/vr/VrManagerService;->updateCurrentVrServiceLocked(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)Z
+HPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->dataForEvent(ZZ)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;
+HPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->onEvent(ILjava/lang/String;)V
+HPLcom/android/server/wallpaper/WallpaperManagerService;->isSetWallpaperAllowed(Ljava/lang/String;)Z
+HPLcom/android/server/wallpaper/WallpaperManagerService;->notifyColorListeners(Landroid/app/WallpaperColors;II)V
HPLcom/android/server/webkit/SystemInterface;->enableFallbackLogic(Z)V
HPLcom/android/server/webkit/SystemInterface;->enablePackageForAllUsers(Landroid/content/Context;Ljava/lang/String;Z)V
HPLcom/android/server/webkit/SystemInterface;->enablePackageForUser(Ljava/lang/String;ZI)V
@@ -1441,53 +3982,278 @@ HPLcom/android/server/webkit/SystemInterface;->setMultiProcessSetting(Landroid/c
HPLcom/android/server/webkit/SystemInterface;->systemIsDebuggable()Z
HPLcom/android/server/webkit/SystemInterface;->uninstallAndDisablePackageForAllUsers(Landroid/content/Context;Ljava/lang/String;)V
HPLcom/android/server/webkit/SystemInterface;->updateUserSetting(Landroid/content/Context;Ljava/lang/String;)V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;->$m$0()V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;->run()V
+HPLcom/android/server/wifi/AggressiveConnectedScore;->generateScore()I
+HPLcom/android/server/wifi/AggressiveConnectedScore;->updateUsingWifiInfo(Landroid/net/wifi/WifiInfo;J)V
HPLcom/android/server/wifi/BuildProperties;->isEngBuild()Z
HPLcom/android/server/wifi/BuildProperties;->isUserBuild()Z
HPLcom/android/server/wifi/BuildProperties;->isUserdebugBuild()Z
+HPLcom/android/server/wifi/CarrierNetworkConfig;->isCarrierNetwork(Ljava/lang/String;)Z
+HPLcom/android/server/wifi/Clock;->getElapsedSinceBootMillis()J
+HPLcom/android/server/wifi/Clock;->getUptimeSinceBootMillis()J
+HPLcom/android/server/wifi/Clock;->getWallClockMillis()J
+HPLcom/android/server/wifi/ConfigurationMap;->getByScanResultForCurrentUser(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/ConfigurationMap;->getForCurrentUser(I)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/ConfigurationMap;->valuesForCurrentUser()Ljava/util/Collection;
+HPLcom/android/server/wifi/ConnectedScore;->getMillis()J
+HPLcom/android/server/wifi/DummyLogMessage;->c(J)Lcom/android/server/wifi/WifiLog$LogMessage;
+HPLcom/android/server/wifi/DummyLogMessage;->flush()V
+HPLcom/android/server/wifi/FakeWifiLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
HPLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->action()V
HPLcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;->onStatusChanged()V
+HPLcom/android/server/wifi/HalDeviceManager$Mutable;-><init>()V
+HPLcom/android/server/wifi/HalDeviceManager;->getAllChipInfo()[Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;
+HPLcom/android/server/wifi/HalDeviceManager;->getSupportedIfaceTypesInternal(Landroid/hardware/wifi/V1_0/IWifiChip;)Ljava/util/Set;
+HPLcom/android/server/wifi/LegacyConnectedScore;->calculateScore(Landroid/net/wifi/WifiInfo;)I
+HPLcom/android/server/wifi/LegacyConnectedScore;->generateScore()I
+HPLcom/android/server/wifi/LegacyConnectedScore;->isHomeNetwork(Landroid/net/wifi/WifiInfo;)Z
+HPLcom/android/server/wifi/LegacyConnectedScore;->multiBandScanResults(Landroid/net/wifi/WifiInfo;)Z
+HPLcom/android/server/wifi/LegacyConnectedScore;->updateUsingWifiInfo(Landroid/net/wifi/WifiInfo;J)V
HPLcom/android/server/wifi/LogcatLog$RealLogMessage;-><init>(ILjava/lang/String;Ljava/lang/String;)V
HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(J)Lcom/android/server/wifi/WifiLog$LogMessage;
HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->copyUntilPlaceholder()V
HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->flush()V
+HPLcom/android/server/wifi/LogcatLog;->-get0()Z
+HPLcom/android/server/wifi/LogcatLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
HPLcom/android/server/wifi/LogcatLog;->makeLogMessage(ILjava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
+HPLcom/android/server/wifi/LogcatLog;->tC(Ljava/lang/String;)V
HPLcom/android/server/wifi/LogcatLog;->trace(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
HPLcom/android/server/wifi/PropertyService;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
HPLcom/android/server/wifi/PropertyService;->getBoolean(Ljava/lang/String;Z)Z
HPLcom/android/server/wifi/PropertyService;->set(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/wifi/SavedNetworkEvaluator;->calculateBssidScore(Landroid/net/wifi/ScanResult;Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;Ljava/lang/StringBuffer;)I
+HPLcom/android/server/wifi/SavedNetworkEvaluator;->evaluateNetworks(Ljava/util/List;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;ZZLjava/util/List;)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/SavedNetworkEvaluator;->updateSavedNetworkSelectionStatus()V
+HPLcom/android/server/wifi/ScanDetail;-><init>(Landroid/net/wifi/ScanResult;Lcom/android/server/wifi/hotspot2/NetworkDetail;)V
HPLcom/android/server/wifi/ScanDetail;-><init>(Lcom/android/server/wifi/hotspot2/NetworkDetail;Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;IIJ[Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/List;)V
+HPLcom/android/server/wifi/ScanDetail;->getBSSIDString()Ljava/lang/String;
+HPLcom/android/server/wifi/ScanDetail;->getNetworkDetail()Lcom/android/server/wifi/hotspot2/NetworkDetail;
+HPLcom/android/server/wifi/ScanDetail;->getSSID()Ljava/lang/String;
HPLcom/android/server/wifi/ScanDetail;->getScanResult()Landroid/net/wifi/ScanResult;
+HPLcom/android/server/wifi/ScanDetail;->getSeen()J
+HPLcom/android/server/wifi/ScanDetail;->setSeen()J
+HPLcom/android/server/wifi/ScanDetailCache;->getScanDetail(Ljava/lang/String;)Lcom/android/server/wifi/ScanDetail;
+HPLcom/android/server/wifi/ScanDetailCache;->getScanResult(Ljava/lang/String;)Landroid/net/wifi/ScanResult;
+HPLcom/android/server/wifi/ScanDetailCache;->getVisibility(J)Landroid/net/wifi/WifiConfiguration$Visibility;
HPLcom/android/server/wifi/ScanDetailCache;->getVisibilityByRssi(J)Landroid/net/wifi/WifiConfiguration$Visibility;
+HPLcom/android/server/wifi/ScanDetailCache;->put(Lcom/android/server/wifi/ScanDetail;)V
+HPLcom/android/server/wifi/ScanDetailCache;->values()Ljava/util/Collection;
+HPLcom/android/server/wifi/ScanResultMatchInfo;-><init>()V
+HPLcom/android/server/wifi/ScanResultMatchInfo;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/wifi/ScanResultMatchInfo;->fromScanResult(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ScanResultMatchInfo;
+HPLcom/android/server/wifi/ScanResultMatchInfo;->hashCode()I
+HPLcom/android/server/wifi/ScoredNetworkEvaluator;->updateNetworkScoreCache(Ljava/util/List;)V
HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkAdded(I)V
HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkEnabled(I)V
HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkPermanentlyDisabled(I)V
HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkRemoved(I)V
HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkTemporarilyDisabled(I)V
HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkUpdated(I)V
+HPLcom/android/server/wifi/WifiConfigManager;->addToChannelSetForNetworkFromScanDetailCache(Ljava/util/Set;Lcom/android/server/wifi/ScanDetailCache;JJI)Z
+HPLcom/android/server/wifi/WifiConfigManager;->attemptNetworkLinking(Landroid/net/wifi/WifiConfiguration;)V
+HPLcom/android/server/wifi/WifiConfigManager;->clearNetworkCandidateScanResult(I)Z
+HPLcom/android/server/wifi/WifiConfigManager;->createExternalWifiConfiguration(Landroid/net/wifi/WifiConfiguration;Z)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetail(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetailAndCache(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworks(ZZ)Ljava/util/List;
+HPLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetworks()Ljava/util/Collection;
+HPLcom/android/server/wifi/WifiConfigManager;->getLastSelectedNetwork()I
+HPLcom/android/server/wifi/WifiConfigManager;->getOrCreateScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ScanDetailCache;
+HPLcom/android/server/wifi/WifiConfigManager;->getScanDetailCacheForNetwork(I)Lcom/android/server/wifi/ScanDetailCache;
+HPLcom/android/server/wifi/WifiConfigManager;->maskPasswordsInWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)V
+HPLcom/android/server/wifi/WifiConfigManager;->retrieveHiddenNetworkList()Ljava/util/List;
+HPLcom/android/server/wifi/WifiConfigManager;->saveToScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;Lcom/android/server/wifi/ScanDetail;)V
+HPLcom/android/server/wifi/WifiConfigManager;->setNetworkCandidateScanResult(ILandroid/net/wifi/ScanResult;I)Z
+HPLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(I)Z
+HPLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(Landroid/net/wifi/WifiConfiguration;)Z
+HPLcom/android/server/wifi/WifiConfigManager;->updateScanDetailCacheFromWifiInfo(Landroid/net/wifi/WifiInfo;)V
+HPLcom/android/server/wifi/WifiConfigStore;->serializeData(Z)[B
HPLcom/android/server/wifi/WifiConfigurationUtil$WifiConfigurationComparator;->compareNetworksWithSameStatus(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;)I
+HPLcom/android/server/wifi/WifiConfigurationUtil;->hasAnyValidWepKey([Ljava/lang/String;)Z
+HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForEapNetwork(Landroid/net/wifi/WifiConfiguration;)Z
+HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForOpenNetwork(Landroid/net/wifi/WifiConfiguration;)Z
+HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForPskNetwork(Landroid/net/wifi/WifiConfiguration;)Z
+HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForWepNetwork(Landroid/net/wifi/WifiConfiguration;)Z
+HPLcom/android/server/wifi/WifiConnectivityHelper;->isFirmwareRoamingSupported()Z
+HPLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V
+HPLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V
+HPLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V
+HPLcom/android/server/wifi/WifiConnectivityManager;->-get1(Lcom/android/server/wifi/WifiConnectivityManager;)Z
+HPLcom/android/server/wifi/WifiConnectivityManager;->-get8(Lcom/android/server/wifi/WifiConnectivityManager;)Z
+HPLcom/android/server/wifi/WifiConnectivityManager;->-get9(Lcom/android/server/wifi/WifiConnectivityManager;)Z
+HPLcom/android/server/wifi/WifiConnectivityManager;->buildBssidBlacklist()Ljava/util/HashSet;
+HPLcom/android/server/wifi/WifiConnectivityManager;->connectToNetwork(Landroid/net/wifi/WifiConfiguration;)V
+HPLcom/android/server/wifi/WifiConnectivityManager;->handleScanResults(Ljava/util/List;Ljava/lang/String;)Z
+HPLcom/android/server/wifi/WifiConnectivityManager;->localLog(Ljava/lang/String;)V
+HPLcom/android/server/wifi/WifiConnectivityManager;->setScanChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)Z
+HPLcom/android/server/wifi/WifiConnectivityManager;->startSingleScan(Z)V
+HPLcom/android/server/wifi/WifiController$DefaultState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiController$DeviceActiveState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiController$StaEnabledState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiDiagnostics$1;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V
+HPLcom/android/server/wifi/WifiDiagnostics$2;->compare(Lcom/android/server/wifi/WifiNative$FateReport;Lcom/android/server/wifi/WifiNative$FateReport;)I
+HPLcom/android/server/wifi/WifiDiagnostics$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/wifi/WifiDiagnostics$BugReport;->toString()Ljava/lang/String;
+HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->addLast(Ljava/lang/Object;)V
+HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->get(I)Ljava/lang/Object;
+HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->size()I
+HPLcom/android/server/wifi/WifiDiagnostics;->captureBugreport(IZ)Lcom/android/server/wifi/WifiDiagnostics$BugReport;
+HPLcom/android/server/wifi/WifiDiagnostics;->compressToBase64([B)Ljava/lang/String;
+HPLcom/android/server/wifi/WifiDiagnostics;->dumpPacketFatesInternal(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
+HPLcom/android/server/wifi/WifiDiagnostics;->getKernelLog(I)Lcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;
+HPLcom/android/server/wifi/WifiDiagnostics;->getLogcat(I)Ljava/util/ArrayList;
HPLcom/android/server/wifi/WifiDiagnostics;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V
+HPLcom/android/server/wifi/WifiLastResortWatchdog;->updateAvailableNetworks(Ljava/util/List;)V
+HPLcom/android/server/wifi/WifiLockManager$WifiLock;-><init>(Lcom/android/server/wifi/WifiLockManager;ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)V
+HPLcom/android/server/wifi/WifiLockManager$WifiLock;->unlinkDeathRecipient()V
+HPLcom/android/server/wifi/WifiLockManager;->acquireWifiLock(ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)Z
+HPLcom/android/server/wifi/WifiLockManager;->addLock(Lcom/android/server/wifi/WifiLockManager$WifiLock;)Z
+HPLcom/android/server/wifi/WifiLockManager;->findLockByBinder(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock;
+HPLcom/android/server/wifi/WifiLockManager;->releaseLock(Landroid/os/IBinder;)Z
+HPLcom/android/server/wifi/WifiLockManager;->releaseWifiLock(Landroid/os/IBinder;)Z
+HPLcom/android/server/wifi/WifiLockManager;->removeLock(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock;
HPLcom/android/server/wifi/WifiMetrics;->countScanResults(Ljava/util/List;)V
+HPLcom/android/server/wifi/WifiMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/wifi/WifiMetrics;->handlePollResult(Landroid/net/wifi/WifiInfo;)V
+HPLcom/android/server/wifi/WifiMetrics;->increment(Landroid/util/SparseIntArray;I)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementAvailableNetworksHistograms(Ljava/util/List;Z)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementBssid(Landroid/util/SparseIntArray;I)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementRssiPollRssiCount(I)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementScanReturnEntry(II)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementSsid(Landroid/util/SparseIntArray;I)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementTotalScanResults(Landroid/util/SparseIntArray;I)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementTotalScanSsids(Landroid/util/SparseIntArray;I)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementWifiScoreCount(I)V
+HPLcom/android/server/wifi/WifiMetrics;->incrementWifiSystemScanStateCount(IZ)V
+HPLcom/android/server/wifi/WifiMetrics;->maybeIncrementRssiDeltaCount(I)V
+HPLcom/android/server/wifi/WifiMonitor;->isMonitoring(Ljava/lang/String;)Z
+HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Landroid/os/Handler;Landroid/os/Message;)V
+HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;I)V
+HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;Landroid/os/Message;)V
HPLcom/android/server/wifi/WifiMulticastLockManager$FilterController;->startFilteringMulticastPackets()V
HPLcom/android/server/wifi/WifiMulticastLockManager$FilterController;->stopFilteringMulticastPackets()V
+HPLcom/android/server/wifi/WifiNative$FateReport;-><init>(BJB[B)V
+HPLcom/android/server/wifi/WifiNative$FateReport;->convertDriverTimestampUSecToWallclockMSec(J)J
+HPLcom/android/server/wifi/WifiNative$FateReport;->toTableRowString()Ljava/lang/String;
HPLcom/android/server/wifi/WifiNative$PnoEventHandler;->onPnoNetworkFound([Landroid/net/wifi/ScanResult;)V
HPLcom/android/server/wifi/WifiNative$PnoEventHandler;->onPnoScanFailed()V
+HPLcom/android/server/wifi/WifiNative$RingBufferStatus;-><init>()V
HPLcom/android/server/wifi/WifiNative$RttEventHandler;->onRttResults([Landroid/net/wifi/RttManager$RttResult;)V
+HPLcom/android/server/wifi/WifiNative$SignalPollResult;-><init>()V
HPLcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;->onDeath()V
HPLcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V
HPLcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;->onWifiAlert(I[B)V
HPLcom/android/server/wifi/WifiNative$WifiRssiEventHandler;->onRssiThresholdBreached(B)V
+HPLcom/android/server/wifi/WifiNative;->getChannelsForBand(I)[I
+HPLcom/android/server/wifi/WifiNative;->getScanResults()Ljava/util/ArrayList;
+HPLcom/android/server/wifi/WifiNative;->getWifiLinkLayerStats(Ljava/lang/String;)Landroid/net/wifi/WifiLinkLayerStats;
+HPLcom/android/server/wifi/WifiNative;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult;
HPLcom/android/server/wifi/WifiNetworkSelector;->filterScanResults(Ljava/util/List;Ljava/util/HashSet;ZLjava/lang/String;)Ljava/util/List;
-HPLcom/android/server/wifi/WifiServiceImpl;->getConnectionInfo()Landroid/net/wifi/WifiInfo;
-HPLcom/android/server/wifi/WifiStateMachine;->getWiFiInfoForUid(I)Landroid/net/wifi/WifiInfo;
-HPLcom/android/server/wifi/WifiStateMachine;->syncRequestConnectionInfo()Landroid/net/wifi/WifiInfo;
-HPLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->lambda$-com_android_server_wifi_WifiVendorHal$ChipEventCallback_95009(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V
+HPLcom/android/server/wifi/WifiNetworkSelector;->isCurrentNetworkSufficient(Landroid/net/wifi/WifiInfo;Ljava/util/List;)Z
+HPLcom/android/server/wifi/WifiNetworkSelector;->isNetworkSelectionNeeded(Ljava/util/List;Landroid/net/wifi/WifiInfo;ZZ)Z
+HPLcom/android/server/wifi/WifiNetworkSelector;->isSignalTooWeak(Landroid/net/wifi/ScanResult;)Z
+HPLcom/android/server/wifi/WifiNetworkSelector;->localLog(Ljava/lang/String;)V
+HPLcom/android/server/wifi/WifiNetworkSelector;->selectNetwork(Ljava/util/List;Ljava/util/HashSet;Landroid/net/wifi/WifiInfo;ZZZ)Landroid/net/wifi/WifiConfiguration;
+HPLcom/android/server/wifi/WifiNetworkSelector;->toScanId(Landroid/net/wifi/ScanResult;)Ljava/lang/String;
+HPLcom/android/server/wifi/WifiScoreReport;->calculateAndReportScore(Landroid/net/wifi/WifiInfo;Landroid/net/NetworkAgent;ILcom/android/server/wifi/WifiMetrics;)V
+HPLcom/android/server/wifi/WifiScoreReport;->logLinkMetrics(Landroid/net/wifi/WifiInfo;II)V
+HPLcom/android/server/wifi/WifiServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/wifi/WifiServiceImpl;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
+HPLcom/android/server/wifi/WifiServiceImpl;->enforceAccessPermission()V
+HPLcom/android/server/wifi/WifiServiceImpl;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/wifi/WifiServiceImpl;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo;
+HPLcom/android/server/wifi/WifiServiceImpl;->getDhcpInfo()Landroid/net/DhcpInfo;
+HPLcom/android/server/wifi/WifiServiceImpl;->getScanResults(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/wifi/WifiServiceImpl;->getWifiEnabledState()I
+HPLcom/android/server/wifi/WifiServiceImpl;->releaseWifiLock(Landroid/os/IBinder;)Z
+HPLcom/android/server/wifi/WifiServiceImpl;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo;
+HPLcom/android/server/wifi/WifiServiceImpl;->requestActivityInfo(Landroid/os/ResultReceiver;)V
+HPLcom/android/server/wifi/WifiSettingsStore;->getLocationModeSetting(Landroid/content/Context;)I
+HPLcom/android/server/wifi/WifiStateMachine$4;->onFullResult(Landroid/net/wifi/ScanResult;)V
+HPLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiStateMachine$ConnectedState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiStateMachine;->-get0(Lcom/android/server/wifi/WifiStateMachine;)I
+HPLcom/android/server/wifi/WifiStateMachine;->-get14(Lcom/android/server/wifi/WifiStateMachine;)Z
+HPLcom/android/server/wifi/WifiStateMachine;->-get29(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;
+HPLcom/android/server/wifi/WifiStateMachine;->-get41(Lcom/android/server/wifi/WifiStateMachine;)I
+HPLcom/android/server/wifi/WifiStateMachine;->-get46(Lcom/android/server/wifi/WifiStateMachine;)I
+HPLcom/android/server/wifi/WifiStateMachine;->-get65(Lcom/android/server/wifi/WifiStateMachine;)Z
+HPLcom/android/server/wifi/WifiStateMachine;->-get71(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiInfo;
+HPLcom/android/server/wifi/WifiStateMachine;->-get74(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMetrics;
+HPLcom/android/server/wifi/WifiStateMachine;->-get80(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiScoreReport;
+HPLcom/android/server/wifi/WifiStateMachine;->-wrap18(Lcom/android/server/wifi/WifiStateMachine;)V
+HPLcom/android/server/wifi/WifiStateMachine;->-wrap30(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;Lcom/android/internal/util/State;)V
+HPLcom/android/server/wifi/WifiStateMachine;->fetchRssiLinkSpeedAndFrequencyNative()V
+HPLcom/android/server/wifi/WifiStateMachine;->getLogRecString(Landroid/os/Message;)Ljava/lang/String;
+HPLcom/android/server/wifi/WifiStateMachine;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats;
+HPLcom/android/server/wifi/WifiStateMachine;->isDisconnected()Z
+HPLcom/android/server/wifi/WifiStateMachine;->logStateAndMessage(Landroid/os/Message;Lcom/android/internal/util/State;)V
+HPLcom/android/server/wifi/WifiStateMachine;->recordLogRec(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/WifiStateMachine;->setScanResults()V
+HPLcom/android/server/wifi/WifiStateMachine;->smToString(I)Ljava/lang/String;
+HPLcom/android/server/wifi/WifiStateMachine;->smToString(Landroid/os/Message;)Ljava/lang/String;
+HPLcom/android/server/wifi/WifiStateMachine;->syncGetWifiState()I
+HPLcom/android/server/wifi/WifiStateMachine;->syncRequestConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo;
+HPLcom/android/server/wifi/WifiTrafficPoller$TrafficHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wifi/WifiTrafficPoller;->-get3(Lcom/android/server/wifi/WifiTrafficPoller;)I
+HPLcom/android/server/wifi/WifiTrafficPoller;->-wrap1(Lcom/android/server/wifi/WifiTrafficPoller;)V
+HPLcom/android/server/wifi/WifiTrafficPoller;->notifyOnDataActivity()V
+HPLcom/android/server/wifi/WifiVendorHal$1AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
+HPLcom/android/server/wifi/WifiVendorHal$4AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
+HPLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->lambda$-com_android_server_wifi_WifiVendorHal$ChipEventCallback_98937(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V
HPLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->onDebugRingBufferDataAvailable(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V
+HPLcom/android/server/wifi/WifiVendorHal;->-get2(Lcom/android/server/wifi/WifiVendorHal;)Landroid/os/Handler;
+HPLcom/android/server/wifi/WifiVendorHal;->-get3(Lcom/android/server/wifi/WifiVendorHal;)Lcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;
+HPLcom/android/server/wifi/WifiVendorHal;->-wrap3(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;)Lcom/android/server/wifi/WifiNative$RingBufferStatus;
+HPLcom/android/server/wifi/WifiVendorHal;->enter(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
HPLcom/android/server/wifi/WifiVendorHal;->frameworkFromHalLinkLayerStats(Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)Landroid/net/wifi/WifiLinkLayerStats;
HPLcom/android/server/wifi/WifiVendorHal;->frameworkRingBufferFlagsFromHal(I)I
+HPLcom/android/server/wifi/WifiVendorHal;->getChannelsForBand(I)[I
+HPLcom/android/server/wifi/WifiVendorHal;->getSupportedFeatureSet()I
+HPLcom/android/server/wifi/WifiVendorHal;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats;
+HPLcom/android/server/wifi/WifiVendorHal;->intArrayFromArrayList(Ljava/util/ArrayList;)[I
+HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_25531(Lcom/android/server/wifi/WifiVendorHal$1AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V
+HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_56256(Lcom/android/server/wifi/WifiVendorHal$4AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_75348([Lcom/android/server/wifi/WifiNative$TxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_77135([Lcom/android/server/wifi/WifiNative$RxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+HPLcom/android/server/wifi/WifiVendorHal;->makeWifiBandFromFrameworkBand(I)I
+HPLcom/android/server/wifi/WifiVendorHal;->ok(Landroid/hardware/wifi/V1_0/WifiStatus;)Z
HPLcom/android/server/wifi/WifiVendorHal;->ringBufferStatus(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;)Lcom/android/server/wifi/WifiNative$RingBufferStatus;
-HPLcom/android/server/wifi/WificondControl;->getScanResults()Ljava/util/ArrayList;
+HPLcom/android/server/wifi/WifiVendorHal;->wifiFeatureMaskFromStaCapabilities(I)I
+HPLcom/android/server/wifi/WificondControl$ScanEventHandler;->OnScanResultReady()V
+HPLcom/android/server/wifi/WificondControl;->getScanResults(I)Ljava/util/ArrayList;
+HPLcom/android/server/wifi/WificondControl;->scan(Ljava/util/Set;Ljava/util/Set;)Z
+HPLcom/android/server/wifi/WificondControl;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult;
+HPLcom/android/server/wifi/hotspot2/NetworkDetail$Ant;->values()[Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant;
HPLcom/android/server/wifi/hotspot2/NetworkDetail;-><init>(Ljava/lang/String;[Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/List;I)V
-HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getTrimmedSSID()Ljava/lang/String;
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getAnqpDomainID()I
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getBSSIDString()Ljava/lang/String;
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq0()I
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq1()I
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getChannelWidth()I
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getDtimInterval()I
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getHESSID()J
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getHSRelease()Lcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease;
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getOsuProviders()[B
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getSSID()Ljava/lang/String;
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->is80211McResponderSupport()Z
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isBeaconFrame()Z
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isHiddenBeaconFrame()Z
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isInterworking()Z
+HPLcom/android/server/wifi/hotspot2/NetworkDetail;->toMACString(J)Ljava/lang/String;
HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->getProviderIndex()J
HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->getProviders()Ljava/util/List;
HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->setProviderIndex(J)V
@@ -1497,8 +4263,16 @@ HPLcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;->onIconResp
HPLcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;->onWnmFrameReceived(Lcom/android/server/wifi/hotspot2/WnmData;)V
HPLcom/android/server/wifi/hotspot2/Utils;->fromHex(CZ)I
HPLcom/android/server/wifi/hotspot2/Utils;->parseMac(Ljava/lang/String;)J
+HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;-><init>(J)V
+HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;->$m$0(I)Ljava/lang/Object;
+HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;->apply(I)Ljava/lang/Object;
+HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;-><init>(Lcom/android/server/wifi/scanner/ChannelHelper;)V
HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addBand(I)V
HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannel(I)V
+HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)V
+HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Lcom/android/server/wifi/WifiNative$BucketSettings;)V
HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->clear()V
HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsBand(I)Z
HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsChannel(I)Z
@@ -1514,27 +4288,110 @@ HPLcom/android/server/wifi/scanner/ChannelHelper;->createChannelCollection()Lcom
HPLcom/android/server/wifi/scanner/ChannelHelper;->estimateScanDuration(Landroid/net/wifi/WifiScanner$ScanSettings;)I
HPLcom/android/server/wifi/scanner/ChannelHelper;->getAvailableScanChannels(I)[Landroid/net/wifi/WifiScanner$ChannelSpec;
HPLcom/android/server/wifi/scanner/ChannelHelper;->settingsContainChannel(Landroid/net/wifi/WifiScanner$ScanSettings;I)Z
+HPLcom/android/server/wifi/scanner/HalChannelHelper;->updateChannels()V
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;-><init>(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;)V
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addBand(I)V
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addChannel(I)V
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsBand(I)Z
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsChannel(I)Z
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->fillBucketSettings(Lcom/android/server/wifi/WifiNative$BucketSettings;I)V
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->-wrap0(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;I)I
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->copyChannels([Landroid/net/wifi/WifiScanner$ChannelSpec;I[I)V
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getAvailableScanChannels(I)[Landroid/net/wifi/WifiScanner$ChannelSpec;
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getBandFromChannel(I)I
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->isDfsChannel(I)Z
+HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->setBandChannels([I[I[I)V
HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->settingsContainChannel(Landroid/net/wifi/WifiScanner$ScanSettings;I)Z
+HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->filterResultsForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;[Landroid/net/wifi/WifiScanner$ScanData;Landroid/net/wifi/WifiScanner$ScanSettings;I)[Landroid/net/wifi/WifiScanner$ScanData;
+HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->isBucketMaybeScanned(II)Z
+HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->shouldReportFullScanResultForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;Landroid/net/wifi/ScanResult;ILandroid/net/wifi/WifiScanner$ScanSettings;I)Z
+HPLcom/android/server/wifi/scanner/WifiScannerImpl$2;->compare(Landroid/net/wifi/ScanResult;Landroid/net/wifi/ScanResult;)I
HPLcom/android/server/wifi/scanner/WifiScannerImpl$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HPLcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory;->create(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)Lcom/android/server/wifi/scanner/WifiScannerImpl;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V
HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->reportEvent(IIILjava/lang/Object;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->toString()Ljava/lang/String;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo;->reportEvent(IIILjava/lang/Object;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;->reportEvent(IILjava/lang/Object;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->addRequest(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->createMergedWorkSource()Landroid/os/WorkSource;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->-com_android_server_wifi_scanner_WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState-mthref-0(I)[Landroid/net/wifi/ScanResult;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->filterCachedScanResultsByAge()[Landroid/net/wifi/ScanResult;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->lambda$-com_android_server_wifi_scanner_WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState_23945(JLandroid/net/wifi/ScanResult;)Z
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->enter()V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->exit()V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->processMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Ljava/util/List;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onFullScanResult(Landroid/net/wifi/ScanResult;I)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onScanStatus(I)V
HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->reportFullScanResult(Landroid/net/wifi/ScanResult;I)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->reportScanResults(Landroid/net/wifi/WifiScanner$ScanData;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendOpFailedToAllAndClear(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;ILjava/lang/String;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendScanResultBroadcast(Z)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->tryToStartNewScan()V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get14(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get15(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get16(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/WifiMetrics;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/ChannelHelper;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get5(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/util/ArrayMap;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get6(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/Clock;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;I)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->computeWorkSource(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;Landroid/os/WorkSource;)Landroid/os/WorkSource;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeForLog([Landroid/net/wifi/WifiScanner$ScanData;)Ljava/lang/String;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeTo(Ljava/lang/StringBuilder;Landroid/net/wifi/WifiScanner$ScanSettings;)Ljava/lang/String;
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->enforceLocationHardwarePermission(I)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->isWorkSourceValid(Landroid/os/WorkSource;)Z
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->localLog(Ljava/lang/String;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logCallback(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILjava/lang/String;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logScanRequest(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;)V
+HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->replySucceeded(Landroid/os/Message;)V
HPLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer$Listener;->onPnoScanFailed()V
+HPLcom/android/server/wifi/scanner/WificondScannerImpl$LastScanSettings;-><init>(J)V
+HPLcom/android/server/wifi/scanner/WificondScannerImpl;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/wifi/scanner/WificondScannerImpl;->isAllChannelsScanned(Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;)Z
HPLcom/android/server/wifi/scanner/WificondScannerImpl;->pollLatestScanData()V
+HPLcom/android/server/wifi/scanner/WificondScannerImpl;->processPendingScans()V
+HPLcom/android/server/wifi/util/BitMask;-><init>(I)V
HPLcom/android/server/wifi/util/BitMask;->testAndClear(I)Z
HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->appendBuffer([B)Z
+HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->getBuffer(I)[B
+HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->getNumBuffers()I
HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->pruneToSize(I)V
+HPLcom/android/server/wifi/util/FrameParser;-><init>(B[B)V
+HPLcom/android/server/wifi/util/FrameParser;->getUnsignedByte(Ljava/nio/ByteBuffer;)S
+HPLcom/android/server/wifi/util/FrameParser;->getUnsignedShort(Ljava/nio/ByteBuffer;)I
+HPLcom/android/server/wifi/util/FrameParser;->parseEthernetFrame(Ljava/nio/ByteBuffer;)V
+HPLcom/android/server/wifi/util/FrameParser;->parseIpv4Packet(Ljava/nio/ByteBuffer;)V
+HPLcom/android/server/wifi/util/FrameParser;->parseTcpPacket(Ljava/nio/ByteBuffer;)V
HPLcom/android/server/wifi/util/InformationElementUtil$BssLoad;-><init>()V
HPLcom/android/server/wifi/util/InformationElementUtil$BssLoad;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
+HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;-><init>()V
+HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->cipherToString(I)Ljava/lang/String;
HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->from([Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/BitSet;)V
HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->generateCapabilitiesString()Ljava/lang/String;
HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->isWpaOneElement(Landroid/net/wifi/ScanResult$InformationElement;)Z
HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->isWpsElement(Landroid/net/wifi/ScanResult$InformationElement;)Z
+HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->keyManagementToString(I)Ljava/lang/String;
+HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseRsnCipher(I)I
HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseRsnElement(Landroid/net/wifi/ScanResult$InformationElement;)V
+HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseWpaOneElement(Landroid/net/wifi/ScanResult$InformationElement;)V
+HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->protocolToString(I)Ljava/lang/String;
HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;-><init>()V
HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
+HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->is80211McRTTResponder()Z
HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;-><init>()V
+HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
+HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getCenterFreq0(I)I
+HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getChannelWidth()I
HPLcom/android/server/wifi/util/InformationElementUtil$Interworking;-><init>()V
+HPLcom/android/server/wifi/util/InformationElementUtil$Interworking;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
HPLcom/android/server/wifi/util/InformationElementUtil$RoamingConsortium;-><init>()V
HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;-><init>()V
HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
@@ -1542,168 +4399,673 @@ HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->getRateF
HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->isValid()Z
HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;-><init>()V
HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
+HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->isValid()Z
HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;-><init>()V
+HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
+HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq0()I
+HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq1()I
+HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getChannelWidth()I
HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->isValid()Z
HPLcom/android/server/wifi/util/InformationElementUtil$Vsa;-><init>()V
HPLcom/android/server/wifi/util/InformationElementUtil$Vsa;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
+HPLcom/android/server/wifi/util/InformationElementUtil$WifiMode;->determineMode(IIZZZ)I
HPLcom/android/server/wifi/util/InformationElementUtil;->parseInformationElements([B)[Landroid/net/wifi/ScanResult$InformationElement;
HPLcom/android/server/wifi/util/NativeUtil;->byteArrayFromArrayList(Ljava/util/ArrayList;)[B
HPLcom/android/server/wifi/util/NativeUtil;->byteArrayToArrayList([B)Ljava/util/ArrayList;
HPLcom/android/server/wifi/util/NativeUtil;->macAddressFromByteArray([B)Ljava/lang/String;
+HPLcom/android/server/wifi/util/ScanResultUtil;->createQuotedSSID(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForEapNetwork(Landroid/net/wifi/ScanResult;)Z
+HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForOpenNetwork(Landroid/net/wifi/ScanResult;)Z
+HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForPskNetwork(Landroid/net/wifi/ScanResult;)Z
+HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForWepNetwork(Landroid/net/wifi/ScanResult;)Z
+HPLcom/android/server/wifi/util/ScanResultUtil;->toScanDetail(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ScanDetail;
+HPLcom/android/server/wifi/util/TelephonyUtil;->getSimMethodForConfig(Landroid/net/wifi/WifiConfiguration;)I
+HPLcom/android/server/wifi/util/TelephonyUtil;->isSimConfig(Landroid/net/wifi/WifiConfiguration;)Z
+HPLcom/android/server/wifi/util/TelephonyUtil;->isSimEapMethod(I)Z
+HPLcom/android/server/wifi/util/WifiAsyncChannel;->getOrInitLog()Lcom/android/server/wifi/WifiLog;
HPLcom/android/server/wifi/util/WifiAsyncChannel;->sendMessage(Landroid/os/Message;)V
+HPLcom/android/server/wifi/util/WifiAsyncChannel;->sendMessageSynchronously(Landroid/os/Message;)Landroid/os/Message;
+HPLcom/android/server/wifi/util/WifiHandler;->getOrInitLog()Lcom/android/server/wifi/WifiLog;
+HPLcom/android/server/wifi/util/WifiHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->canAccessScanResults(Ljava/lang/String;II)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkAppOpAllowed(ILjava/lang/String;I)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallerHasPeersMacAddressPermission(I)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallersLocationPermission(Ljava/lang/String;I)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isCallerActiveNwScorer(I)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isCurrentProfile(I)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isForegroundApp(Ljava/lang/String;)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyForeground(Ljava/lang/String;I)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyVersion(Ljava/lang/String;I)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLocationModeEnabled(Ljava/lang/String;)Z
+HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isScanAllowedbyApps(Ljava/lang/String;I)Z
+HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCallingUserId(I)I
+HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCurrentUser()I
+HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getTopPkgName()Ljava/lang/String;
+HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getUidPermission(Ljava/lang/String;I)I
+HPLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/util/Pair;
+HPLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeToXmlForConfigStore(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V
+HPLcom/android/server/wifi/util/XmlUtil;->readCurrentValue(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;)Ljava/lang/Object;
+HPLcom/android/server/wifi/util/XmlUtil;->writeNextValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/Object;)V
+HPLcom/android/server/wifi/wificond/ChannelSettings;-><init>()V
+HPLcom/android/server/wifi/wificond/ChannelSettings;->writeToParcel(Landroid/os/Parcel;I)V
HPLcom/android/server/wifi/wificond/NativeScanResult$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/server/wifi/wificond/NativeScanResult;
+HPLcom/android/server/wifi/wificond/NativeScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HPLcom/android/server/wifi/wificond/NativeScanResult$1;->newArray(I)[Ljava/lang/Object;
+HPLcom/android/server/wifi/wificond/NativeScanResult;-><init>()V
+HPLcom/android/server/wifi/wificond/SingleScanSettings;->writeToParcel(Landroid/os/Parcel;I)V
+HPLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->$m$0(J)V
+HPLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->doFrame(J)V
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$1(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->$m$1(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->apply(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$1(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$14(Ljava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$17(Ljava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$3(Ljava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$4(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$5(Ljava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$6(Ljava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$7(Ljava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$8(Ljava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$9(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;-><init>(BLjava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$12()V
+HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;-><init>(BLjava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->run()V
HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->$m$0(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->$m$3(Ljava/lang/Object;)V
HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$0(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$1(Ljava/lang/Object;)Z
HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->apply(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->$m$0(I)Ljava/io/File;
+HPLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->getSystemDirectoryForUser(I)Ljava/io/File;
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->cacheWindows(Ljava/util/List;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->clearAndRecycleWindows(Ljava/util/List;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeChangedWindows()V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeWindowBoundsInScreen(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->isReportedWindowType(I)Z
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->lambda$-com_android_server_wm_AccessibilityController$WindowsForAccessibilityObserver_59134(Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->obtainPopulatedWindowInfo(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)Landroid/view/WindowInfo;
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->performComputeChangedWindowsNotLocked()V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->populateVisibleWindowsOnScreenLocked(Landroid/util/SparseArray;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->scheduleComputeChangedWindowsLocked()V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowChangedNoLayer(Landroid/view/WindowInfo;Landroid/view/WindowInfo;)Z
+HPLcom/android/server/wm/AccessibilityController;->-wrap0(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;)V
+HPLcom/android/server/wm/AccessibilityController;->drawMagnifiedRegionBorderIfNeededLocked()V
+HPLcom/android/server/wm/AccessibilityController;->getMagnificationSpecForWindowLocked(Lcom/android/server/wm/WindowState;)Landroid/view/MagnificationSpec;
+HPLcom/android/server/wm/AccessibilityController;->onRectangleOnScreenRequestedLocked(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/AccessibilityController;->onSomeWindowResizedOrMovedLocked()V
+HPLcom/android/server/wm/AccessibilityController;->onWindowLayersChangedLocked()V
+HPLcom/android/server/wm/AccessibilityController;->populateTransformationMatrixLocked(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;)V
+HPLcom/android/server/wm/AppTransition;->createClipRevealAnimationLocked(IZLandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/view/animation/Animation;
+HPLcom/android/server/wm/AppTransition;->getAppStackClipMode()I
+HPLcom/android/server/wm/AppTransition;->getAppTransition()I
+HPLcom/android/server/wm/AppTransition;->getCachedAnimations(Landroid/view/WindowManager$LayoutParams;)Lcom/android/server/AttributeCache$Entry;
+HPLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/AppWindowAnimator;Lcom/android/server/wm/AppWindowAnimator;Landroid/util/ArraySet;Landroid/util/ArraySet;)I
+HPLcom/android/server/wm/AppTransition;->isKeyguardGoingAwayTransit(I)Z
+HPLcom/android/server/wm/AppTransition;->isKeyguardTransit(I)Z
+HPLcom/android/server/wm/AppTransition;->isReady()Z
+HPLcom/android/server/wm/AppTransition;->isRunning()Z
+HPLcom/android/server/wm/AppTransition;->isTimeout()Z
HPLcom/android/server/wm/AppTransition;->isTransitionSet()Z
+HPLcom/android/server/wm/AppTransition;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)Landroid/view/animation/Animation;
+HPLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;I)Landroid/view/animation/Animation;
+HPLcom/android/server/wm/AppTransition;->notifyAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/AppTransition;->notifyAppTransitionPendingLocked()V
+HPLcom/android/server/wm/AppTransition;->notifyAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I
+HPLcom/android/server/wm/AppTransition;->prepare()Z
+HPLcom/android/server/wm/AppTransition;->prepareAppTransitionLocked(IZIZ)Z
+HPLcom/android/server/wm/AppTransition;->setAppTransitionState(I)V
+HPLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/AppWindowToken;)V
+HPLcom/android/server/wm/AppTransition;->setReady()V
+HPLcom/android/server/wm/AppTransition;->updateBooster()V
+HPLcom/android/server/wm/AppWindowAnimator;->clearAnimation()V
+HPLcom/android/server/wm/AppWindowAnimator;->clearThumbnail()V
+HPLcom/android/server/wm/AppWindowAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J
HPLcom/android/server/wm/AppWindowAnimator;->getStackClip()I
+HPLcom/android/server/wm/AppWindowAnimator;->getStartTimeCorrection()J
+HPLcom/android/server/wm/AppWindowAnimator;->getTransit()I
HPLcom/android/server/wm/AppWindowAnimator;->isAnimating()Z
+HPLcom/android/server/wm/AppWindowAnimator;->isAnimationStarting()Z
+HPLcom/android/server/wm/AppWindowAnimator;->setAnimation(Landroid/view/animation/Animation;IIIIZIII)V
+HPLcom/android/server/wm/AppWindowAnimator;->setDummyAnimation()V
+HPLcom/android/server/wm/AppWindowAnimator;->setNullAnimation()V
+HPLcom/android/server/wm/AppWindowAnimator;->showAllWindowsLocked()Z
+HPLcom/android/server/wm/AppWindowAnimator;->stepAnimation(J)Z
HPLcom/android/server/wm/AppWindowAnimator;->stepAnimationLocked(J)Z
+HPLcom/android/server/wm/AppWindowAnimator;->updateLayers()V
+HPLcom/android/server/wm/AppWindowContainerController$H;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/AppWindowContainerController;-><init>(Lcom/android/server/wm/TaskWindowContainerController;Landroid/view/IApplicationToken;Lcom/android/server/wm/AppWindowContainerListener;IIZZIZZZIIJLcom/android/server/wm/WindowManagerService;Landroid/content/res/Configuration;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/AppWindowContainerController;->addStartingWindow(Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/os/IBinder;ZZZZZZ)Z
+HPLcom/android/server/wm/AppWindowContainerController;->getOrientation()I
+HPLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4735()V
+HPLcom/android/server/wm/AppWindowContainerController;->pauseKeyDispatching()V
+HPLcom/android/server/wm/AppWindowContainerController;->removeStartingWindow()V
+HPLcom/android/server/wm/AppWindowContainerController;->reportStartingWindowDrawn()V
+HPLcom/android/server/wm/AppWindowContainerController;->resumeKeyDispatching()V
+HPLcom/android/server/wm/AppWindowContainerController;->setVisibility(ZZ)V
+HPLcom/android/server/wm/AppWindowContainerController;->stopFreezingScreen(Z)V
+HPLcom/android/server/wm/AppWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;ZLandroid/content/res/Configuration;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/AppWindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/AppWindowToken;->allDrawnStatesConsidered()Z
+HPLcom/android/server/wm/AppWindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken;
+HPLcom/android/server/wm/AppWindowToken;->canRestoreSurfaces()Z
HPLcom/android/server/wm/AppWindowToken;->checkAppWindowsReadyToShow()V
+HPLcom/android/server/wm/AppWindowToken;->checkCompleteDeferredRemoval()Z
+HPLcom/android/server/wm/AppWindowToken;->checkKeyguardFlagsChanged()V
+HPLcom/android/server/wm/AppWindowToken;->clearAllDrawn()V
+HPLcom/android/server/wm/AppWindowToken;->clearAnimatingFlags()V
+HPLcom/android/server/wm/AppWindowToken;->clearWasVisibleBeforeClientHidden()V
HPLcom/android/server/wm/AppWindowToken;->containsDismissKeyguardWindow()Z
HPLcom/android/server/wm/AppWindowToken;->containsShowWhenLockedWindow()Z
+HPLcom/android/server/wm/AppWindowToken;->destroySavedSurfaces()V
+HPLcom/android/server/wm/AppWindowToken;->destroySurfaces()V
+HPLcom/android/server/wm/AppWindowToken;->destroySurfaces(Z)V
+HPLcom/android/server/wm/AppWindowToken;->fillsParent()Z
+HPLcom/android/server/wm/AppWindowToken;->findMainWindow()Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/AppWindowToken;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
HPLcom/android/server/wm/AppWindowToken;->forAllWindowsUnchecked(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HPLcom/android/server/wm/AppWindowToken;->getAnimLayerAdjustment()I
+HPLcom/android/server/wm/AppWindowToken;->getController()Lcom/android/server/wm/AppWindowContainerController;
+HPLcom/android/server/wm/AppWindowToken;->getOrientation(I)I
+HPLcom/android/server/wm/AppWindowToken;->getOrientationIgnoreVisibility()I
+HPLcom/android/server/wm/AppWindowToken;->getStack()Lcom/android/server/wm/TaskStack;
HPLcom/android/server/wm/AppWindowToken;->getTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/AppWindowToken;->hasBounds()Z
+HPLcom/android/server/wm/AppWindowToken;->isAnimatingInvisibleWithSavedSurface()Z
+HPLcom/android/server/wm/AppWindowToken;->isClientHidden()Z
+HPLcom/android/server/wm/AppWindowToken;->isRelaunching()Z
+HPLcom/android/server/wm/AppWindowToken;->isVisible()Z
+HPLcom/android/server/wm/AppWindowToken;->markSavedSurfaceExiting()V
+HPLcom/android/server/wm/AppWindowToken;->notifyAppStopped()V
+HPLcom/android/server/wm/AppWindowToken;->onAppTransitionDone()V
+HPLcom/android/server/wm/AppWindowToken;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V
+HPLcom/android/server/wm/AppWindowToken;->onParentSet()V
+HPLcom/android/server/wm/AppWindowToken;->onRemovedFromDisplay()V
+HPLcom/android/server/wm/AppWindowToken;->removeDeadWindows()V
+HPLcom/android/server/wm/AppWindowToken;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/AppWindowToken;->requestUpdateWallpaperIfNeeded()V
+HPLcom/android/server/wm/AppWindowToken;->restoreSavedSurfaceForInterestingWindows()V
+HPLcom/android/server/wm/AppWindowToken;->setAllAppWinAnimators()V
+HPLcom/android/server/wm/AppWindowToken;->setAppLayoutChanges(ILjava/lang/String;)V
+HPLcom/android/server/wm/AppWindowToken;->setClientHidden(Z)V
+HPLcom/android/server/wm/AppWindowToken;->setVisibility(Landroid/view/WindowManager$LayoutParams;ZIZZ)Z
HPLcom/android/server/wm/AppWindowToken;->stepAppWindowsAnimation(J)V
+HPLcom/android/server/wm/AppWindowToken;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/AppWindowToken;->updateAllDrawn()V
HPLcom/android/server/wm/AppWindowToken;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/AppWindowToken;->updateReportedVisibilityLocked()V
HPLcom/android/server/wm/AppWindowToken;->windowsAreFocusable()Z
+HPLcom/android/server/wm/BlackFrame$BlackSurface;->setMatrix(Landroid/graphics/Matrix;)V
+HPLcom/android/server/wm/BlackFrame;->setMatrix(Landroid/graphics/Matrix;)V
+HPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->animationFinished()V
+HPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
HPLcom/android/server/wm/BoundsAnimationTarget;->onAnimationEnd(ZLandroid/graphics/Rect;Z)V
HPLcom/android/server/wm/BoundsAnimationTarget;->onAnimationStart(Z)V
HPLcom/android/server/wm/BoundsAnimationTarget;->setPinnedStackSize(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
+HPLcom/android/server/wm/DimLayer;->adjustAlpha(F)V
+HPLcom/android/server/wm/DimLayer;->adjustBounds()V
+HPLcom/android/server/wm/DimLayer;->getBoundsForFullscreen(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DimLayer;->getLayer()I
+HPLcom/android/server/wm/DimLayer;->getTargetAlpha()F
HPLcom/android/server/wm/DimLayer;->hide()V
+HPLcom/android/server/wm/DimLayer;->hide(J)V
+HPLcom/android/server/wm/DimLayer;->isAnimating()Z
HPLcom/android/server/wm/DimLayer;->isDimming()Z
+HPLcom/android/server/wm/DimLayer;->setAlpha(F)V
+HPLcom/android/server/wm/DimLayer;->setBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DimLayer;->setBoundsForFullscreen()V
+HPLcom/android/server/wm/DimLayer;->setLayer(I)V
+HPLcom/android/server/wm/DimLayer;->show(IFJ)V
+HPLcom/android/server/wm/DimLayer;->stepAnimation()Z
HPLcom/android/server/wm/DimLayerController;->animateDimLayers()Z
HPLcom/android/server/wm/DimLayerController;->animateDimLayers(Lcom/android/server/wm/DimLayer$DimLayerUser;)Z
+HPLcom/android/server/wm/DimLayerController;->applyDim(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;Z)V
+HPLcom/android/server/wm/DimLayerController;->getOrCreateDimLayerState(Lcom/android/server/wm/DimLayer$DimLayerUser;)Lcom/android/server/wm/DimLayerController$DimLayerState;
HPLcom/android/server/wm/DimLayerController;->isDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;)Z
HPLcom/android/server/wm/DimLayerController;->resetDimming()V
HPLcom/android/server/wm/DimLayerController;->stopDimmingIfNeeded()V
HPLcom/android/server/wm/DimLayerController;->stopDimmingIfNeeded(Lcom/android/server/wm/DimLayer$DimLayerUser;)V
+HPLcom/android/server/wm/DimLayerController;->updateDimLayer(Lcom/android/server/wm/DimLayer$DimLayerUser;)V
+HPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V
+HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->fillsParent()Z
HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->get(I)Lcom/android/server/wm/WindowContainer;
HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->size()I
+HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getOrientation()I
+HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_154417(Lcom/android/server/wm/WindowState;)Z
HPLcom/android/server/wm/DisplayContent$Screenshoter;->screenshot(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object;
+HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->findPositionForStack(ILcom/android/server/wm/TaskStack;Z)I
HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->forAllExitingAppTokenWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getOrientation()I
+HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/TaskStack;Z)V
+HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->removeExistingAppTokensIfPossible()V
HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->setExitingTokensHasVisible(Z)V
+HPLcom/android/server/wm/DisplayContent;->-set2(Lcom/android/server/wm/DisplayContent;I)I
+HPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIIII)V
HPLcom/android/server/wm/DisplayContent;->adjustForImeIfNeeded()V
+HPLcom/android/server/wm/DisplayContent;->animateDimLayers()Z
HPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction(Z)Z
+HPLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V
+HPLcom/android/server/wm/DisplayContent;->checkCompleteDeferredRemoval()Z
+HPLcom/android/server/wm/DisplayContent;->clearLayoutNeeded()V
+HPLcom/android/server/wm/DisplayContent;->computeCompatSmallestWidth(ZIIII)I
+HPLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/DisplayContent;->computeSizeRangesAndScreenLayout(Landroid/view/DisplayInfo;IZIIIFLandroid/content/res/Configuration;)V
+HPLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
HPLcom/android/server/wm/DisplayContent;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
HPLcom/android/server/wm/DisplayContent;->getAppWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/AppWindowToken;
HPLcom/android/server/wm/DisplayContent;->getDisplayId()I
HPLcom/android/server/wm/DisplayContent;->getDisplayInfo()Landroid/view/DisplayInfo;
+HPLcom/android/server/wm/DisplayContent;->getDockedDividerController()Lcom/android/server/wm/DockedStackDividerController;
+HPLcom/android/server/wm/DisplayContent;->getDockedStackIgnoringVisibility()Lcom/android/server/wm/TaskStack;
HPLcom/android/server/wm/DisplayContent;->getDockedStackLocked()Lcom/android/server/wm/TaskStack;
HPLcom/android/server/wm/DisplayContent;->getHomeStack()Lcom/android/server/wm/TaskStack;
+HPLcom/android/server/wm/DisplayContent;->getLastOrientation()I
+HPLcom/android/server/wm/DisplayContent;->getLayerForAnimationBackground(Lcom/android/server/wm/WindowStateAnimator;)I
HPLcom/android/server/wm/DisplayContent;->getLogicalDisplayRect(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayContent;->getNeedsMenu(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->getOrientation()I
+HPLcom/android/server/wm/DisplayContent;->getRotation()I
HPLcom/android/server/wm/DisplayContent;->getStackById(I)Lcom/android/server/wm/TaskStack;
+HPLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
+HPLcom/android/server/wm/DisplayContent;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z
+HPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z
HPLcom/android/server/wm/DisplayContent;->isStackVisible(I)Z
-HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_16024(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_18337(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_22837(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_22943(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_26486(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28510(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28715(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_109993(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_113179(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_117549(IILcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_130270(IZLandroid/os/IBinder;Landroid/util/MutableBoolean;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_16102(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_18415(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20364(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20860(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_22915(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_23021(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_26564(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28303(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28588(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28793(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_92144(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->layoutAndAssignWindowLayersIfNeeded()V
+HPLcom/android/server/wm/DisplayContent;->okToAnimate()Z
+HPLcom/android/server/wm/DisplayContent;->okToDisplay()Z
HPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V
+HPLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;Z)V
+HPLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+HPLcom/android/server/wm/DisplayContent;->prepareWindowSurfaces()V
+HPLcom/android/server/wm/DisplayContent;->reduceCompatConfigWidthSize(IIILandroid/util/DisplayMetrics;III)I
+HPLcom/android/server/wm/DisplayContent;->reduceConfigLayout(IIFIIII)I
+HPLcom/android/server/wm/DisplayContent;->removeExistingTokensIfPossible()V
HPLcom/android/server/wm/DisplayContent;->resetAnimationBackgroundAnimator()V
+HPLcom/android/server/wm/DisplayContent;->resetDimming()V
+HPLcom/android/server/wm/DisplayContent;->scheduleToastWindowsTimeoutIfNeededLocked(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->screenshotApplications(Landroid/os/IBinder;IIZFZZLcom/android/server/wm/DisplayContent$Screenshoter;)Ljava/lang/Object;
+HPLcom/android/server/wm/DisplayContent;->setExitingTokensHasVisible(Z)V
+HPLcom/android/server/wm/DisplayContent;->setInputMethodTarget(Lcom/android/server/wm/WindowState;ZI)V
+HPLcom/android/server/wm/DisplayContent;->setLayoutNeeded()V
HPLcom/android/server/wm/DisplayContent;->setTouchExcludeRegion(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/DisplayContent;->stopDimmingIfNeeded()V
+HPLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(I)Landroid/view/DisplayInfo;
+HPLcom/android/server/wm/DisplayContent;->updateRotationUnchecked(Z)Z
+HPLcom/android/server/wm/DisplayContent;->updateSystemUiVisibility(II)V
+HPLcom/android/server/wm/DisplayContent;->updateWallpaperForAnimator(Lcom/android/server/wm/WindowAnimator;)V
+HPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator(Lcom/android/server/wm/WindowAnimator;)V
+HPLcom/android/server/wm/DockedStackDividerController;->animate(J)Z
+HPLcom/android/server/wm/DockedStackDividerController;->initSnapAlgorithmForRotations()V
+HPLcom/android/server/wm/DockedStackDividerController;->isMinimizedDock()Z
HPLcom/android/server/wm/DockedStackDividerController;->isResizing()Z
+HPLcom/android/server/wm/DockedStackDividerController;->positionDockedStackedDivider(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DockedStackDividerController;->reevaluateVisibility(Z)V
+HPLcom/android/server/wm/DockedStackDividerController;->setAdjustedForIme(ZZZLcom/android/server/wm/WindowState;I)V
HPLcom/android/server/wm/DockedStackDividerController;->setResizeDimLayer(ZIF)V
+HPLcom/android/server/wm/InputConsumerImpl;->layout(II)V
+HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->-wrap0(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V
HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V
HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V
HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V
HPLcom/android/server/wm/InputMonitor;->-get0(Lcom/android/server/wm/InputMonitor;)Z
+HPLcom/android/server/wm/InputMonitor;->-get1(Lcom/android/server/wm/InputMonitor;)Z
HPLcom/android/server/wm/InputMonitor;->-get2(Lcom/android/server/wm/InputMonitor;)Z
+HPLcom/android/server/wm/InputMonitor;->-get3(Lcom/android/server/wm/InputMonitor;)Z
+HPLcom/android/server/wm/InputMonitor;->-get4(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/input/InputWindowHandle;
HPLcom/android/server/wm/InputMonitor;->-get5(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/InputMonitor;->-get6(Lcom/android/server/wm/InputMonitor;)[Lcom/android/server/input/InputWindowHandle;
+HPLcom/android/server/wm/InputMonitor;->-get7(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowManagerService;
+HPLcom/android/server/wm/InputMonitor;->-get8(Lcom/android/server/wm/InputMonitor;)Landroid/graphics/Rect;
+HPLcom/android/server/wm/InputMonitor;->-set0(Lcom/android/server/wm/InputMonitor;Z)Z
+HPLcom/android/server/wm/InputMonitor;->-set1(Lcom/android/server/wm/InputMonitor;Z)Z
+HPLcom/android/server/wm/InputMonitor;->-set2(Lcom/android/server/wm/InputMonitor;Z)Z
+HPLcom/android/server/wm/InputMonitor;->-set3(Lcom/android/server/wm/InputMonitor;Z)Z
+HPLcom/android/server/wm/InputMonitor;->-wrap1(Lcom/android/server/wm/InputMonitor;)V
HPLcom/android/server/wm/InputMonitor;->addInputWindowHandle(Lcom/android/server/input/InputWindowHandle;)V
HPLcom/android/server/wm/InputMonitor;->addInputWindowHandle(Lcom/android/server/input/InputWindowHandle;Lcom/android/server/wm/WindowState;IIZZZ)V
HPLcom/android/server/wm/InputMonitor;->clearInputWindowHandlesLw()V
HPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;I)Lcom/android/server/wm/InputConsumerImpl;
-HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V
+HPLcom/android/server/wm/InputMonitor;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J
+HPLcom/android/server/wm/InputMonitor;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
+HPLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V
+HPLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/AppWindowToken;)V
+HPLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/InputMonitor;->setUpdateInputWindowsNeededLw()V
+HPLcom/android/server/wm/InputMonitor;->updateInputWindowsLw(Z)V
+HPLcom/android/server/wm/PinnedStackController;->getDefaultBounds()Landroid/graphics/Rect;
+HPLcom/android/server/wm/PinnedStackController;->getInsetBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect;
+HPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;Z)Landroid/graphics/Rect;
+HPLcom/android/server/wm/PinnedStackController;->notifyMovementBoundsChanged(Z)V
+HPLcom/android/server/wm/PinnedStackController;->reloadResources()V
+HPLcom/android/server/wm/PinnedStackController;->setAdjustedForIme(ZI)V
+HPLcom/android/server/wm/PinnedStackController;->transformBoundsToAspectRatio(Landroid/graphics/Rect;FZ)Landroid/graphics/Rect;
+HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;I)V
+HPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction(ZII)V
+HPLcom/android/server/wm/RootWindowContainer;->computeFocusedWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z
HPLcom/android/server/wm/RootWindowContainer;->getAppWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/AppWindowToken;
HPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent;
HPLcom/android/server/wm/RootWindowContainer;->getDisplayContentOrCreate(I)Lcom/android/server/wm/DisplayContent;
HPLcom/android/server/wm/RootWindowContainer;->getStackById(I)Lcom/android/server/wm/TaskStack;
+HPLcom/android/server/wm/RootWindowContainer;->getWindowTokenDisplay(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayContent;
HPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z
+HPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()Landroid/util/ArraySet;
HPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z
HPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z
+HPLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_7116(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_7397(Lcom/android/server/wm/WindowState;)V
HPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacement(Z)V
+HPLcom/android/server/wm/RootWindowContainer;->removeReplacedWindows()V
+HPLcom/android/server/wm/ScreenRotationAnimation;->getEnterTransformation()Landroid/view/animation/Transformation;
+HPLcom/android/server/wm/ScreenRotationAnimation;->hasAnimations()Z
+HPLcom/android/server/wm/ScreenRotationAnimation;->isAnimating()Z
+HPLcom/android/server/wm/ScreenRotationAnimation;->setSnapshotTransformInTransaction(Landroid/graphics/Matrix;F)V
+HPLcom/android/server/wm/ScreenRotationAnimation;->stepAnimation(J)Z
+HPLcom/android/server/wm/ScreenRotationAnimation;->updateSurfacesInTransaction()V
+HPLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)V
+HPLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;)V
+HPLcom/android/server/wm/Session;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/wm/Session;->onWindowSurfaceVisibilityChanged(Lcom/android/server/wm/WindowSurfaceController;ZI)V
+HPLcom/android/server/wm/Session;->performHapticFeedback(Landroid/view/IWindow;IZ)Z
+HPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I
+HPLcom/android/server/wm/Session;->windowAddedLocked(Ljava/lang/String;)V
+HPLcom/android/server/wm/StackWindowController;->getBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/StackWindowController;->positionChildAtTop(Lcom/android/server/wm/TaskWindowContainerController;Z)V
HPLcom/android/server/wm/StackWindowListener;->requestResize(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIIIILcom/android/server/wm/WindowSurfaceController;)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->destroy()V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->hide()V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->setAlpha(F)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->setFinalCrop(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->setLayer(I)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->setLayerStack(I)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->setMatrix(FFFF)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->setPosition(FF)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->setWindowCrop(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->show()V
+HPLcom/android/server/wm/SurfaceControlWithBackground;->updateBackgroundVisibility()V
+HPLcom/android/server/wm/Task;-><init>(ILcom/android/server/wm/TaskStack;ILcom/android/server/wm/WindowManagerService;Landroid/graphics/Rect;Landroid/content/res/Configuration;IZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/TaskWindowContainerController;)V
HPLcom/android/server/wm/Task;->cropWindowsToStackBounds()Z
HPLcom/android/server/wm/Task;->dimFullscreen()Z
+HPLcom/android/server/wm/Task;->fillsParent()Z
+HPLcom/android/server/wm/Task;->getAdjustedAddPosition(I)I
+HPLcom/android/server/wm/Task;->getBounds(Landroid/graphics/Rect;)V
HPLcom/android/server/wm/Task;->getDimBounds(Landroid/graphics/Rect;)V
HPLcom/android/server/wm/Task;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
HPLcom/android/server/wm/Task;->getTopVisibleAppToken()Lcom/android/server/wm/AppWindowToken;
HPLcom/android/server/wm/Task;->inFreeformWorkspace()Z
HPLcom/android/server/wm/Task;->inPinnedWorkspace()Z
HPLcom/android/server/wm/Task;->isAttachedToDisplay()Z
+HPLcom/android/server/wm/Task;->isDragResizing()Z
+HPLcom/android/server/wm/Task;->isFloating()Z
HPLcom/android/server/wm/Task;->isFullscreen()Z
+HPLcom/android/server/wm/Task;->isHomeTask()Z
HPLcom/android/server/wm/Task;->isResizeable()Z
+HPLcom/android/server/wm/Task;->onParentSet()V
+HPLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;Landroid/content/res/Configuration;)I
+HPLcom/android/server/wm/Task;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
+HPLcom/android/server/wm/Task;->showForAllUsers()Z
HPLcom/android/server/wm/Task;->useCurrentBounds()Z
+HPLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/TaskSnapshotCache;->putSnapshot(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$TaskSnapshot;)V
+HPLcom/android/server/wm/TaskSnapshotController;->-com_android_server_wm_TaskSnapshotController-mthref-0(I)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotController;->getClosingTasks(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/TaskSnapshotController;->handleClosingApps(Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/TaskSnapshotController;->setPersisterPaused(Z)V
+HPLcom/android/server/wm/TaskSnapshotController;->snapshotTask(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/TaskSnapshotPersister$1;->run()V
HPLcom/android/server/wm/TaskSnapshotPersister$DirectoryResolver;->getSystemDirectoryForUser(I)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I
+HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V
+HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeBuffer()Z
+HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeProto()Z
+HPLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->write()V
+HPLcom/android/server/wm/TaskSnapshotPersister;->-get1(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/lang/Object;
+HPLcom/android/server/wm/TaskSnapshotPersister;->-get5(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque;
+HPLcom/android/server/wm/TaskSnapshotPersister;->-set0(Lcom/android/server/wm/TaskSnapshotPersister;Z)Z
+HPLcom/android/server/wm/TaskSnapshotPersister;->getBitmapFile(II)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotPersister;->getDirectory(I)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotPersister;->getProtoFile(II)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotPersister;->getReducedResolutionBitmapFile(II)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotPersister;->sendToQueueLocked(Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->setPaused(Z)V
+HPLcom/android/server/wm/TaskSnapshotSurface;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/wm/TaskSnapshotSurface;
+HPLcom/android/server/wm/TaskStack;->checkCompleteDeferredRemoval()Z
+HPLcom/android/server/wm/TaskStack;->computeMinPosition(II)I
HPLcom/android/server/wm/TaskStack;->dimFullscreen()Z
HPLcom/android/server/wm/TaskStack;->fillsParent()Z
+HPLcom/android/server/wm/TaskStack;->findPositionForTask(Lcom/android/server/wm/Task;IZZ)I
HPLcom/android/server/wm/TaskStack;->getBounds(Landroid/graphics/Rect;)V
HPLcom/android/server/wm/TaskStack;->getDimBounds(Landroid/graphics/Rect;)V
HPLcom/android/server/wm/TaskStack;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
+HPLcom/android/server/wm/TaskStack;->getDisplayInfo()Landroid/view/DisplayInfo;
HPLcom/android/server/wm/TaskStack;->isAdjustedForMinimizedDockedStack()Z
+HPLcom/android/server/wm/TaskStack;->isAnimatingBounds()Z
+HPLcom/android/server/wm/TaskStack;->isAnimatingForIme()Z
+HPLcom/android/server/wm/TaskStack;->isAttachedToDisplay()Z
+HPLcom/android/server/wm/TaskStack;->isForceScaled()Z
+HPLcom/android/server/wm/TaskStack;->isMinimizedDockAndHomeStackResizable()Z
+HPLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;Z)V
+HPLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;ZZ)V
+HPLcom/android/server/wm/TaskStack;->resetAdjustedForIme(Z)V
HPLcom/android/server/wm/TaskStack;->resetAnimationBackgroundAnimator()V
+HPLcom/android/server/wm/TaskStack;->setAdjustedBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/TaskStack;->setAnimationBackground(Lcom/android/server/wm/WindowStateAnimator;I)V
HPLcom/android/server/wm/TaskStack;->setTouchExcludeRegion(Lcom/android/server/wm/Task;ILandroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
HPLcom/android/server/wm/TaskStack;->shouldIgnoreInput()Z
HPLcom/android/server/wm/TaskStack;->stepAppWindowsAnimation(J)V
HPLcom/android/server/wm/TaskStack;->updateAdjustedBounds()V
HPLcom/android/server/wm/TaskStack;->useCurrentBounds()Z
+HPLcom/android/server/wm/TaskTapPointerEventListener;->getDisplayId()I
+HPLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
+HPLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;I)V
+HPLcom/android/server/wm/TaskTapPointerEventListener;->setTouchExcludeRegion(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/TaskWindowContainerController;-><init>(ILcom/android/server/wm/TaskWindowContainerListener;Lcom/android/server/wm/StackWindowController;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/TaskWindowContainerController;->getBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/TaskWindowContainerController;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
+HPLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/AppWindowToken;)V
+HPLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->reset()V
+HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindowsForAppTransitionIfNeeded(Lcom/android/server/wm/DisplayContent;Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/WallpaperController;->findWallpaperTarget(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WallpaperController;->getAnimLayerAdjustment()I
HPLcom/android/server/wm/WallpaperController;->getWallpaperTarget()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V
HPLcom/android/server/wm/WallpaperController;->isWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z
+HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WallpaperController;->lambda$-com_android_server_wm_WallpaperController_4687(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;IIZ)Z
+HPLcom/android/server/wm/WallpaperController;->updateWallpaperTokens(Z)V
+HPLcom/android/server/wm/WallpaperController;->updateWallpaperWindowsTarget(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V
+HPLcom/android/server/wm/WallpaperController;->wallpaperTransitionReady()Z
+HPLcom/android/server/wm/WallpaperVisibilityListeners;->notifyWallpaperVisibilityChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WallpaperWindowToken;->hasVisibleNotDrawnWallpaper()Z
+HPLcom/android/server/wm/WallpaperWindowToken;->hideWallpaperToken(ZLjava/lang/String;)V
+HPLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperWindows(ZI)V
HPLcom/android/server/wm/WindowAnimator;->animate(J)V
+HPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V
HPLcom/android/server/wm/WindowAnimator;->getDisplayContentsAnimatorLocked(I)Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;
+HPLcom/android/server/wm/WindowAnimator;->getPendingLayoutChanges(I)I
HPLcom/android/server/wm/WindowAnimator;->getScreenRotationAnimationLocked(I)Lcom/android/server/wm/ScreenRotationAnimation;
-HPLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_4018(J)V
+HPLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_3951(J)V
HPLcom/android/server/wm/WindowAnimator;->orAnimating(Z)V
+HPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V
+HPLcom/android/server/wm/WindowAnimator;->setAnimating(Z)V
+HPLcom/android/server/wm/WindowAnimator;->setPendingLayoutChanges(II)V
HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Lcom/android/server/wm/WindowState;)Z
HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z
HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V
HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->setConsumer(Ljava/util/function/Consumer;)V
HPLcom/android/server/wm/WindowContainer;->-get0(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool;
+HPLcom/android/server/wm/WindowContainer;-><init>()V
+HPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;Ljava/util/Comparator;)V
HPLcom/android/server/wm/WindowContainer;->checkAppWindowsReadyToShow()V
HPLcom/android/server/wm/WindowContainer;->checkCompleteDeferredRemoval()Z
+HPLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I
HPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
HPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V
HPLcom/android/server/wm/WindowContainer;->getConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/WindowContainer;->getController()Lcom/android/server/wm/WindowContainerController;
+HPLcom/android/server/wm/WindowContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/WindowContainer;->getOrientation()I
HPLcom/android/server/wm/WindowContainer;->getOrientation(I)I
HPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/WindowContainer;->getParents(Ljava/util/LinkedList;)V
+HPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;
HPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowContainer;->hasContentToDisplay()Z
HPLcom/android/server/wm/WindowContainer;->isAnimating()Z
+HPLcom/android/server/wm/WindowContainer;->isOnTop()Z
+HPLcom/android/server/wm/WindowContainer;->isVisible()Z
HPLcom/android/server/wm/WindowContainer;->obtainConsumerWrapper(Ljava/util/function/Consumer;)Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;
+HPLcom/android/server/wm/WindowContainer;->onAppTransitionDone()V
+HPLcom/android/server/wm/WindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/WindowContainer;->onMergedOverrideConfigurationChanged()V
+HPLcom/android/server/wm/WindowContainer;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/WindowContainer;->onParentSet()V
+HPLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+HPLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/WindowContainer;->removeImmediately()V
+HPLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V
+HPLcom/android/server/wm/WindowContainer;->setController(Lcom/android/server/wm/WindowContainerController;)V
+HPLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/WindowContainer;->setVisibleBeforeClientHidden()V
HPLcom/android/server/wm/WindowContainer;->stepAppWindowsAnimation(J)V
+HPLcom/android/server/wm/WindowLayersController;->adjustSpecialWindows()V
HPLcom/android/server/wm/WindowLayersController;->assignAnimLayer(Lcom/android/server/wm/WindowState;I)V
+HPLcom/android/server/wm/WindowLayersController;->assignWindowLayers(Lcom/android/server/wm/DisplayContent;)V
HPLcom/android/server/wm/WindowLayersController;->collectSpecialWindows(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/WindowLayersController;->lambda$-com_android_server_wm_WindowLayersController_3457(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowLayersController;->lambda$-com_android_server_wm_WindowLayersController_3664(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowLayersController;->reset()V
+HPLcom/android/server/wm/WindowList;-><init>()V
+HPLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object;
+HPLcom/android/server/wm/WindowManagerService$2;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
HPLcom/android/server/wm/WindowManagerService$AppFreezeListener;->onAppFreezeTimeout()V
+HPLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->computeWindowsForAccessibility()V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->getCompatibleMagnificationSpecForWindow(Landroid/os/IBinder;)Landroid/view/MagnificationSpec;
+HPLcom/android/server/wm/WindowManagerService$LocalService;->isDockedDividerResizing()Z
+HPLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardShowingAndNotOccluded()Z
HPLcom/android/server/wm/WindowManagerService$LocalService;->isStackVisible(I)Z
+HPLcom/android/server/wm/WindowManagerService$MousePositionTracker;->onPointerEvent(Landroid/view/MotionEvent;)V
+HPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I
+HPLcom/android/server/wm/WindowManagerService;->applyAnimationLocked(Lcom/android/server/wm/AppWindowToken;Landroid/view/WindowManager$LayoutParams;IZZ)Z
HPLcom/android/server/wm/WindowManagerService;->boostPriorityForLockedSection()V
+HPLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V
HPLcom/android/server/wm/WindowManagerService;->closeSurfaceTransaction()V
-HPLcom/android/server/wm/WindowManagerService;->closeSurfaceTransaction(Z)V
+HPLcom/android/server/wm/WindowManagerService;->containsDismissKeyguardWindow(Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/WindowManagerService;->containsShowWhenLockedWindow(Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/WindowManagerService;->continueSurfaceLayout()V
+HPLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/Surface;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I
+HPLcom/android/server/wm/WindowManagerService;->deferSurfaceLayout()V
+HPLcom/android/server/wm/WindowManagerService;->destroyPreservedSurfaceLocked()V
+HPLcom/android/server/wm/WindowManagerService;->dipToPixel(ILandroid/util/DisplayMetrics;)I
+HPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V
+HPLcom/android/server/wm/WindowManagerService;->excludeWindowTypeFromTapOutTask(I)Z
+HPLcom/android/server/wm/WindowManagerService;->executeAppTransition()V
+HPLcom/android/server/wm/WindowManagerService;->executeEmptyAnimationTransaction()V
+HPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V
+HPLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F
HPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked()Lcom/android/server/wm/DisplayContent;
HPLcom/android/server/wm/WindowManagerService;->getImeFocusStackLocked()Lcom/android/server/wm/TaskStack;
+HPLcom/android/server/wm/WindowManagerService;->getInputMethodWindowLw()Landroid/view/WindowManagerPolicy$WindowState;
+HPLcom/android/server/wm/WindowManagerService;->getLidState()I
+HPLcom/android/server/wm/WindowManagerService;->getStableInsets(ILandroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->getStableInsetsLocked(ILandroid/graphics/Rect;)V
HPLcom/android/server/wm/WindowManagerService;->getStackBounds(ILandroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleLocked()F
+HPLcom/android/server/wm/WindowManagerService;->getWindowDisplayFrame(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->handleAnimatingStoppedAndTransitionLocked()I
+HPLcom/android/server/wm/WindowManagerService;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z
+HPLcom/android/server/wm/WindowManagerService;->isCurrentProfileLocked(I)Z
+HPLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z
+HPLcom/android/server/wm/WindowManagerService;->isKeyguardShowingAndNotOccluded()Z
+HPLcom/android/server/wm/WindowManagerService;->isScreenCaptureDisabledLocked(I)Z
+HPLcom/android/server/wm/WindowManagerService;->isSecureLocked(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WindowManagerService;->isShowingDream()Z
+HPLcom/android/server/wm/WindowManagerService;->makeWindowFreezingScreenIfNeededLocked(Lcom/android/server/wm/WindowState;)V
HPLcom/android/server/wm/WindowManagerService;->markForSeamlessRotation(Lcom/android/server/wm/WindowState;Z)V
-HPLcom/android/server/wm/WindowManagerService;->okToDisplay()Z
+HPLcom/android/server/wm/WindowManagerService;->monitor()V
+HPLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchesCleared(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService;->notifyAppResumedFinished(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService;->notifyFocusChanged()V
+HPLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
HPLcom/android/server/wm/WindowManagerService;->openSurfaceTransaction()V
+HPLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZ)V
+HPLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZIZ)V
HPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I
+HPLcom/android/server/wm/WindowManagerService;->removeWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V
+HPLcom/android/server/wm/WindowManagerService;->requestTraversal()V
HPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V
+HPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V
+HPLcom/android/server/wm/WindowManagerService;->setFocusTaskRegionLocked(Lcom/android/server/wm/AppWindowToken;)V
+HPLcom/android/server/wm/WindowManagerService;->setFocusedApp(Landroid/os/IBinder;Z)V
+HPLcom/android/server/wm/WindowManagerService;->setHoldScreenLocked(Lcom/android/server/wm/Session;)V
+HPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
HPLcom/android/server/wm/WindowManagerService;->setResizeDimLayer(ZIF)V
+HPLcom/android/server/wm/WindowManagerService;->statusBarVisibilityChanged(I)V
+HPLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V
+HPLcom/android/server/wm/WindowManagerService;->stopUsingSavedSurfaceLocked()V
+HPLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;ZZ)Z
+HPLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z
+HPLcom/android/server/wm/WindowManagerService;->updateNonSystemOverlayWindowsVisibilityIfNeeded(Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration;
+HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokensLocked(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration;
HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokensLocked(ZI)Z
+HPLcom/android/server/wm/WindowManagerService;->updateStatusBarVisibilityLocked(I)Z
+HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->boost()V
HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V
+HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setAppTransitionRunning(Z)V
+HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->updatePriorityLocked()V
+HPLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->reset()V
+HPLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;IILandroid/view/WindowManager$LayoutParams;IIZ)V
+HPLcom/android/server/wm/WindowState;->addWinAnimatorToList(Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/WindowState;->adjustStartingWindowFlags()V
+HPLcom/android/server/wm/WindowState;->applyAdjustForImeIfNeeded()V
HPLcom/android/server/wm/WindowState;->applyDimLayerIfNeeded()V
HPLcom/android/server/wm/WindowState;->applyGravityAndUpdateFrame(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
HPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
@@ -1711,42 +5073,72 @@ HPLcom/android/server/wm/WindowState;->calculatePolicyCrop(Landroid/graphics/Rec
HPLcom/android/server/wm/WindowState;->calculateSystemDecorRect(Landroid/graphics/Rect;)V
HPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z
HPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z
+HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z
HPLcom/android/server/wm/WindowState;->canReceiveKeys()Z
HPLcom/android/server/wm/WindowState;->canReceiveTouchInput()Z
+HPLcom/android/server/wm/WindowState;->canRestoreSurface()Z
+HPLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V
+HPLcom/android/server/wm/WindowState;->clearHasSavedSurface()V
+HPLcom/android/server/wm/WindowState;->clearWasVisibleBeforeClientHidden()V
HPLcom/android/server/wm/WindowState;->computeDragResizing()Z
HPLcom/android/server/wm/WindowState;->computeFrameLw(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
HPLcom/android/server/wm/WindowState;->cropRegionToStackBoundsIfNeeded(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowState;->destroyOrSaveSurfaceUnchecked()V
+HPLcom/android/server/wm/WindowState;->destroySavedSurface()V
+HPLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z
+HPLcom/android/server/wm/WindowState;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZI)V
+HPLcom/android/server/wm/WindowState;->dispatchWallpaperVisibility(Z)V
+HPLcom/android/server/wm/WindowState;->disposeInputChannel()V
HPLcom/android/server/wm/WindowState;->expandForSurfaceInsets(Landroid/graphics/Rect;)V
HPLcom/android/server/wm/WindowState;->fillsDisplay()Z
+HPLcom/android/server/wm/WindowState;->forAllWindowTopToBottom(Lcom/android/internal/util/ToBooleanFunction;)Z
HPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
HPLcom/android/server/wm/WindowState;->getAnimLayerAdjustment()I
HPLcom/android/server/wm/WindowState;->getAppToken()Landroid/view/IApplicationToken;
HPLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams;
+HPLcom/android/server/wm/WindowState;->getBackdropFrame(Landroid/graphics/Rect;)Landroid/graphics/Rect;
HPLcom/android/server/wm/WindowState;->getBaseType()I
HPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration;
HPLcom/android/server/wm/WindowState;->getDimLayerUser()Lcom/android/server/wm/DimLayer$DimLayerUser;
HPLcom/android/server/wm/WindowState;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
+HPLcom/android/server/wm/WindowState;->getDisplayFrameLw()Landroid/graphics/Rect;
HPLcom/android/server/wm/WindowState;->getDisplayId()I
HPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo;
+HPLcom/android/server/wm/WindowState;->getDrawnStateEvaluated()Z
+HPLcom/android/server/wm/WindowState;->getHighestAnimLayer()I
HPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutNanos()J
+HPLcom/android/server/wm/WindowState;->getMergedConfiguration(Landroid/util/MergedConfiguration;)V
+HPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String;
+HPLcom/android/server/wm/WindowState;->getNeedsMenuLw(Landroid/view/WindowManagerPolicy$WindowState;)Z
+HPLcom/android/server/wm/WindowState;->getOrientationChanging()Z
HPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/WindowState;->getSpecialWindowAnimLayerAdjustment()I
HPLcom/android/server/wm/WindowState;->getStack()Lcom/android/server/wm/TaskStack;
HPLcom/android/server/wm/WindowState;->getStackId()I
+HPLcom/android/server/wm/WindowState;->getSurfaceLayer()I
+HPLcom/android/server/wm/WindowState;->getSystemUiVisibility()I
HPLcom/android/server/wm/WindowState;->getTask()Lcom/android/server/wm/Task;
HPLcom/android/server/wm/WindowState;->getTopParentWindow()Lcom/android/server/wm/WindowState;
HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V
HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;I)I
HPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->getWindowInfo()Landroid/view/WindowInfo;
HPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;
HPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V
+HPLcom/android/server/wm/WindowState;->hasContentToDisplay()Z
HPLcom/android/server/wm/WindowState;->hasMoved()Z
HPLcom/android/server/wm/WindowState;->hasSavedSurface()Z
+HPLcom/android/server/wm/WindowState;->hideLw(Z)Z
+HPLcom/android/server/wm/WindowState;->hideLw(ZZ)Z
+HPLcom/android/server/wm/WindowState;->hideNonSystemOverlayWindowsWhenVisible()Z
+HPLcom/android/server/wm/WindowState;->hideWallpaperWindow(ZLjava/lang/String;)V
HPLcom/android/server/wm/WindowState;->inFreeformWorkspace()Z
HPLcom/android/server/wm/WindowState;->inFullscreenContainer()Z
HPLcom/android/server/wm/WindowState;->inPinnedWorkspace()Z
HPLcom/android/server/wm/WindowState;->isAnimating()Z
+HPLcom/android/server/wm/WindowState;->isAnimatingInvisibleWithSavedSurface()Z
HPLcom/android/server/wm/WindowState;->isAnimatingLw()Z
+HPLcom/android/server/wm/WindowState;->isAnimatingWithSavedSurface()Z
HPLcom/android/server/wm/WindowState;->isChildWindow()Z
HPLcom/android/server/wm/WindowState;->isConfigChanged()Z
HPLcom/android/server/wm/WindowState;->isDefaultDisplay()Z
@@ -1756,52 +5148,157 @@ HPLcom/android/server/wm/WindowState;->isDockedResizing()Z
HPLcom/android/server/wm/WindowState;->isDragResizeChanged()Z
HPLcom/android/server/wm/WindowState;->isDragResizing()Z
HPLcom/android/server/wm/WindowState;->isDrawnLw()Z
+HPLcom/android/server/wm/WindowState;->isFocused()Z
HPLcom/android/server/wm/WindowState;->isGoneForLayoutLw()Z
HPLcom/android/server/wm/WindowState;->isHiddenFromUserLocked()Z
HPLcom/android/server/wm/WindowState;->isInMultiWindowMode()Z
+HPLcom/android/server/wm/WindowState;->isInputMethodWindow()Z
+HPLcom/android/server/wm/WindowState;->isInteresting()Z
+HPLcom/android/server/wm/WindowState;->isLaidOut()Z
+HPLcom/android/server/wm/WindowState;->isLetterboxedAppWindow()Z
HPLcom/android/server/wm/WindowState;->isObscuringDisplay()Z
HPLcom/android/server/wm/WindowState;->isOnScreen()Z
HPLcom/android/server/wm/WindowState;->isOpaqueDrawn()Z
HPLcom/android/server/wm/WindowState;->isParentWindowHidden()Z
+HPLcom/android/server/wm/WindowState;->isReadyForDisplay()Z
HPLcom/android/server/wm/WindowState;->isResizedWhileNotDragResizing()Z
+HPLcom/android/server/wm/WindowState;->isResizedWhileNotDragResizingReported()Z
+HPLcom/android/server/wm/WindowState;->isRtl()Z
HPLcom/android/server/wm/WindowState;->isVisible()Z
HPLcom/android/server/wm/WindowState;->isVisibleLw()Z
+HPLcom/android/server/wm/WindowState;->isVisibleNow()Z
HPLcom/android/server/wm/WindowState;->isVisibleOrAdding()Z
+HPLcom/android/server/wm/WindowState;->isVoiceInteraction()Z
+HPLcom/android/server/wm/WindowState;->isWinVisibleLw()Z
+HPLcom/android/server/wm/WindowState;->layoutInParentFrame()Z
+HPLcom/android/server/wm/WindowState;->logPerformShow(Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowState;->markSavedSurfaceExiting()V
+HPLcom/android/server/wm/WindowState;->mightAffectAllDrawn(Z)Z
+HPLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)Z
+HPLcom/android/server/wm/WindowState;->onExitAnimationDone()V
+HPLcom/android/server/wm/WindowState;->onParentSet()V
+HPLcom/android/server/wm/WindowState;->openInputChannel(Landroid/view/InputChannel;)V
+HPLcom/android/server/wm/WindowState;->performShowLocked()Z
+HPLcom/android/server/wm/WindowState;->prelayout()V
+HPLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Z)V
+HPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(III)I
+HPLcom/android/server/wm/WindowState;->removeIfPossible(Z)V
+HPLcom/android/server/wm/WindowState;->removeImmediately()V
+HPLcom/android/server/wm/WindowState;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(ZZ)V
+HPLcom/android/server/wm/WindowState;->reportResized()V
+HPLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V
+HPLcom/android/server/wm/WindowState;->restoreSavedSurface()Z
+HPLcom/android/server/wm/WindowState;->scheduleAnimationIfDimming()V
+HPLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V
+HPLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V
+HPLcom/android/server/wm/WindowState;->setDrawnStateEvaluated(Z)V
+HPLcom/android/server/wm/WindowState;->setHasSurface(Z)V
+HPLcom/android/server/wm/WindowState;->setReplacementWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z
HPLcom/android/server/wm/WindowState;->setReportResizeHints()Z
+HPLcom/android/server/wm/WindowState;->setReportedConfiguration(Landroid/util/MergedConfiguration;)V
+HPLcom/android/server/wm/WindowState;->setRequestedSize(II)V
+HPLcom/android/server/wm/WindowState;->setVisibleBeforeClientHidden()V
+HPLcom/android/server/wm/WindowState;->setWindowScale(II)V
+HPLcom/android/server/wm/WindowState;->shouldSaveSurface()Z
HPLcom/android/server/wm/WindowState;->showLw(Z)Z
HPLcom/android/server/wm/WindowState;->showLw(ZZ)Z
+HPLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z
HPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String;
HPLcom/android/server/wm/WindowState;->transformClipRectFromScreenToSurfaceSpace(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowState;->updateLastInsetValues()V
+HPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V
HPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V
+HPLcom/android/server/wm/WindowState;->usesRelativeZOrdering()Z
HPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z
+HPLcom/android/server/wm/WindowStateAnimator;-><init>(Lcom/android/server/wm/WindowState;)V
HPLcom/android/server/wm/WindowStateAnimator;->adjustCropToStackBounds(Landroid/graphics/Rect;Z)V
+HPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z
HPLcom/android/server/wm/WindowStateAnimator;->applyCrop(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V
+HPLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V
HPLcom/android/server/wm/WindowStateAnimator;->calculateCrop(Landroid/graphics/Rect;)Z
HPLcom/android/server/wm/WindowStateAnimator;->calculateFinalCrop(Landroid/graphics/Rect;)Z
HPLcom/android/server/wm/WindowStateAnimator;->calculateSurfaceBounds(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V
+HPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z
HPLcom/android/server/wm/WindowStateAnimator;->computeShownFrameLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked(II)Lcom/android/server/wm/WindowSurfaceController;
+HPLcom/android/server/wm/WindowStateAnimator;->destroyPreservedSurfaceLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->destroySurface()V
+HPLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->detachChildren()V
+HPLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked()Z
+HPLcom/android/server/wm/WindowStateAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J
+HPLcom/android/server/wm/WindowStateAnimator;->getLayerStack()I
HPLcom/android/server/wm/WindowStateAnimator;->getMagnificationSpec()Landroid/view/MagnificationSpec;
HPLcom/android/server/wm/WindowStateAnimator;->getShown()Z
HPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z
+HPLcom/android/server/wm/WindowStateAnimator;->hide(Ljava/lang/String;)V
HPLcom/android/server/wm/WindowStateAnimator;->isAnimationSet()Z
HPLcom/android/server/wm/WindowStateAnimator;->isAnimationStarting()Z
+HPLcom/android/server/wm/WindowStateAnimator;->isDummyAnimation()Z
HPLcom/android/server/wm/WindowStateAnimator;->isForceScaled()Z
HPLcom/android/server/wm/WindowStateAnimator;->isWaitingForOpening()Z
+HPLcom/android/server/wm/WindowStateAnimator;->isWindowAnimationSet()Z
HPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Z)V
+HPLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V
HPLcom/android/server/wm/WindowStateAnimator;->resolveStackClip()I
+HPLcom/android/server/wm/WindowStateAnimator;->setAnimation(Landroid/view/animation/Animation;JI)V
HPLcom/android/server/wm/WindowStateAnimator;->setSurfaceBoundariesLocked(Z)V
HPLcom/android/server/wm/WindowStateAnimator;->shouldCropToStackBounds()Z
+HPLcom/android/server/wm/WindowStateAnimator;->showSurfaceRobustlyLocked()Z
+HPLcom/android/server/wm/WindowStateAnimator;->stepAnimation(J)Z
HPLcom/android/server/wm/WindowStateAnimator;->stepAnimationLocked(J)Z
HPLcom/android/server/wm/WindowStateAnimator;->useFinalClipRect()Z
+HPLcom/android/server/wm/WindowSurfaceController;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILcom/android/server/wm/WindowStateAnimator;II)V
HPLcom/android/server/wm/WindowSurfaceController;->clearCropInTransaction(Z)V
+HPLcom/android/server/wm/WindowSurfaceController;->destroyInTransaction()V
+HPLcom/android/server/wm/WindowSurfaceController;->detachChildren()V
HPLcom/android/server/wm/WindowSurfaceController;->getHeight()F
+HPLcom/android/server/wm/WindowSurfaceController;->getShown()Z
+HPLcom/android/server/wm/WindowSurfaceController;->getSurface(Landroid/view/Surface;)V
HPLcom/android/server/wm/WindowSurfaceController;->getWidth()F
HPLcom/android/server/wm/WindowSurfaceController;->hasSurface()Z
+HPLcom/android/server/wm/WindowSurfaceController;->hideInTransaction(Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowSurfaceController;->hideSurface()V
+HPLcom/android/server/wm/WindowSurfaceController;->prepareToShowInTransaction(FFFFFZ)Z
+HPLcom/android/server/wm/WindowSurfaceController;->setCropInTransaction(Landroid/graphics/Rect;Z)V
+HPLcom/android/server/wm/WindowSurfaceController;->setFinalCropInTransaction(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowSurfaceController;->setLayer(I)V
+HPLcom/android/server/wm/WindowSurfaceController;->setLayerStackInTransaction(I)V
HPLcom/android/server/wm/WindowSurfaceController;->setMatrixInTransaction(FFFFZ)V
HPLcom/android/server/wm/WindowSurfaceController;->setPositionInTransaction(FFZ)V
+HPLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V
+HPLcom/android/server/wm/WindowSurfaceController;->setSizeInTransaction(IIZ)Z
+HPLcom/android/server/wm/WindowSurfaceController;->showRobustlyInTransaction()Z
+HPLcom/android/server/wm/WindowSurfaceController;->showSurface()Z
+HPLcom/android/server/wm/WindowSurfaceController;->updateVisibility()Z
+HPLcom/android/server/wm/WindowSurfacePlacer;->canBeWallpaperTarget(Landroid/util/ArraySet;)Z
+HPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->deferLayout()V
HPLcom/android/server/wm/WindowSurfacePlacer;->destroyPendingSurfaces()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->handleAppTransitionReadyLocked()I
+HPLcom/android/server/wm/WindowSurfacePlacer;->handleClosingApps(ILandroid/view/WindowManager$LayoutParams;ZLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;)V
+HPLcom/android/server/wm/WindowSurfacePlacer;->handleOpeningApps(ILandroid/view/WindowManager$LayoutParams;ZI)Lcom/android/server/wm/AppWindowToken;
+HPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z
+HPLcom/android/server/wm/WindowSurfacePlacer;->lambda$-com_android_server_wm_WindowSurfacePlacer_5337()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->maybeUpdateTransitToWallpaper(IZZ)I
+HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V
HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->transitionGoodToGo(ILandroid/util/SparseIntArray;)Z
+HPLcom/android/server/wm/WindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowToken;->getAnimLayerAdjustment()I
HPLcom/android/server/wm/WindowToken;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
+HPLcom/android/server/wm/WindowToken;->getHighestAnimLayer()I
+HPLcom/android/server/wm/WindowToken;->getReplacingWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowToken;->okToAnimate()Z
+HPLcom/android/server/wm/WindowToken;->okToDisplay()Z
+HPLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z
+HPLcom/android/server/wm/animation/ClipRectLRAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
+HPLcom/android/server/wm/animation/ClipRectTBAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
+HPLcom/android/server/wm/animation/ClipRectTBAnimation;->getTransformation(JLandroid/view/animation/Transformation;)Z
HSLcom/android/server/location/LocationProviderInterface;->disable()V
HSLcom/android/server/location/LocationProviderInterface;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
HSLcom/android/server/location/LocationProviderInterface;->enable()V
@@ -1812,341 +5309,67 @@ HSLcom/android/server/location/LocationProviderInterface;->getStatusUpdateTime()
HSLcom/android/server/location/LocationProviderInterface;->isEnabled()Z
HSLcom/android/server/location/LocationProviderInterface;->sendExtraCommand(Ljava/lang/String;Landroid/os/Bundle;)Z
HSLcom/android/server/location/LocationProviderInterface;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
-HSPLcom/android/server/-$Lambda$6PBiitFNzy52xbrUpcD5i5xBLLY;->$m$1()V
-HSPLcom/android/server/-$Lambda$6PBiitFNzy52xbrUpcD5i5xBLLY;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/-$Lambda$6PBiitFNzy52xbrUpcD5i5xBLLY;->run()V
-HSPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->$m$0()V
-HSPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;-><init>(B)V
-HSPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->run()V
-HSPLcom/android/server/AppOpsService$1;-><init>(Lcom/android/server/AppOpsService;)V
-HSPLcom/android/server/AppOpsService$Callback;-><init>(Lcom/android/server/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;)V
HSPLcom/android/server/AppOpsService$Op;-><init>(ILjava/lang/String;I)V
-HSPLcom/android/server/AppOpsService$Ops;-><init>(Ljava/lang/String;Lcom/android/server/AppOpsService$UidState;Z)V
-HSPLcom/android/server/AppOpsService$UidState;-><init>(I)V
-HSPLcom/android/server/AppOpsService;-><init>(Ljava/io/File;Landroid/os/Handler;)V
HSPLcom/android/server/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/AppOpsService$UidState;
-HSPLcom/android/server/AppOpsService;->publish(Landroid/content/Context;)V
HSPLcom/android/server/AppOpsService;->readPackage(Lorg/xmlpull/v1/XmlPullParser;)V
HSPLcom/android/server/AppOpsService;->readState()V
HSPLcom/android/server/AppOpsService;->readUid(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
-HSPLcom/android/server/AppOpsService;->readUidOps(Lorg/xmlpull/v1/XmlPullParser;)V
HSPLcom/android/server/AppOpsService;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V
-HSPLcom/android/server/DisplayThread;-><init>()V
-HSPLcom/android/server/DisplayThread;->ensureThreadLocked()V
-HSPLcom/android/server/DisplayThread;->get()Lcom/android/server/DisplayThread;
-HSPLcom/android/server/DisplayThread;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/FgThread;-><init>()V
-HSPLcom/android/server/FgThread;->ensureThreadLocked()V
-HSPLcom/android/server/FgThread;->get()Lcom/android/server/FgThread;
-HSPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/IntentResolver$1;-><init>()V
-HSPLcom/android/server/IntentResolver;-><init>()V
-HSPLcom/android/server/IntentResolver;->filterSet()Ljava/util/Set;
-HSPLcom/android/server/IoThread;-><init>()V
-HSPLcom/android/server/IoThread;->ensureThreadLocked()V
-HSPLcom/android/server/IoThread;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;I)Ljava/lang/Object;
-HSPLcom/android/server/LockGuard;->installNewLock(I)Ljava/lang/Object;
-HSPLcom/android/server/RecoverySystemService$BinderService;-><init>(Lcom/android/server/RecoverySystemService;)V
-HSPLcom/android/server/RecoverySystemService$BinderService;-><init>(Lcom/android/server/RecoverySystemService;Lcom/android/server/RecoverySystemService$BinderService;)V
-HSPLcom/android/server/RecoverySystemService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/RecoverySystemService;->onStart()V
-HSPLcom/android/server/RescueParty$BootThreshold;-><init>()V
-HSPLcom/android/server/RescueParty$Threshold;-><init>(IIJ)V
+HSPLcom/android/server/IntentResolver;->addFilter(Landroid/content/IntentFilter;)V
+HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Landroid/content/IntentFilter;)V
+HSPLcom/android/server/IntentResolver;->buildResolveList(Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Landroid/content/IntentFilter;Ljava/util/List;I)V
+HSPLcom/android/server/IntentResolver;->collectFilters([Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Ljava/util/ArrayList;
+HSPLcom/android/server/IntentResolver;->filterEquals(Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Z
+HSPLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V
+HSPLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList;
+HSPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet;
+HSPLcom/android/server/IntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;
+HSPLcom/android/server/IntentResolver;->register_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
+HSPLcom/android/server/IntentResolver;->register_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I
HSPLcom/android/server/RescueParty$Threshold;->getCount()I
HSPLcom/android/server/RescueParty$Threshold;->getStart()J
HSPLcom/android/server/RescueParty$Threshold;->setCount(I)V
HSPLcom/android/server/RescueParty$Threshold;->setStart(J)V
-HSPLcom/android/server/RescueParty;->isDisabled()Z
-HSPLcom/android/server/RescueParty;->isUsbActive()Z
-HSPLcom/android/server/RescueParty;->noteBoot(Landroid/content/Context;)V
-HSPLcom/android/server/ServiceThread;-><init>(Ljava/lang/String;IZ)V
-HSPLcom/android/server/ServiceThread;->run()V
-HSPLcom/android/server/SystemServer;->-com_android_server_SystemServer-mthref-0()V
-HSPLcom/android/server/SystemServer;-><init>()V
-HSPLcom/android/server/SystemServer;->createSystemContext()V
-HSPLcom/android/server/SystemServer;->main([Ljava/lang/String;)V
-HSPLcom/android/server/SystemServer;->performPendingShutdown()V
-HSPLcom/android/server/SystemServer;->run()V
-HSPLcom/android/server/SystemServer;->startBootstrapServices()V
HSPLcom/android/server/SystemServer;->traceBeginAndSlog(Ljava/lang/String;)V
HSPLcom/android/server/SystemServer;->traceEnd()V
-HSPLcom/android/server/SystemServerInitThreadPool;-><init>()V
-HSPLcom/android/server/SystemServerInitThreadPool;->get()Lcom/android/server/SystemServerInitThreadPool;
-HSPLcom/android/server/SystemServerInitThreadPool;->lambda$-com_android_server_SystemServerInitThreadPool_2249(Ljava/lang/String;Ljava/lang/Runnable;)V
-HSPLcom/android/server/SystemServerInitThreadPool;->submit(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future;
-HSPLcom/android/server/SystemService;-><init>(Landroid/content/Context;)V
HSPLcom/android/server/SystemService;->getContext()Landroid/content/Context;
-HSPLcom/android/server/SystemService;->onBootPhase(I)V
-HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;)V
-HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;Z)V
-HSPLcom/android/server/SystemService;->publishLocalService(Ljava/lang/Class;Ljava/lang/Object;)V
-HSPLcom/android/server/SystemServiceManager;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/SystemServiceManager;->setRuntimeRestarted(Z)V
HSPLcom/android/server/SystemServiceManager;->startBootPhase(I)V
HSPLcom/android/server/SystemServiceManager;->startService(Lcom/android/server/SystemService;)V
HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/Class;)Lcom/android/server/SystemService;
HSPLcom/android/server/SystemServiceManager;->warnIfTooLong(JLcom/android/server/SystemService;Ljava/lang/String;)V
-HSPLcom/android/server/ThreadPriorityBooster$1;-><init>(Lcom/android/server/ThreadPriorityBooster;)V
-HSPLcom/android/server/ThreadPriorityBooster;-><init>(II)V
-HSPLcom/android/server/UiThread;-><init>()V
-HSPLcom/android/server/UiThread;->ensureThreadLocked()V
-HSPLcom/android/server/UiThread;->get()Lcom/android/server/UiThread;
-HSPLcom/android/server/UiThread;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/UiThread;->run()V
-HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>()V
-HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>(Lcom/android/server/Watchdog$BinderThreadMonitor;)V
-HSPLcom/android/server/Watchdog$HandlerChecker;-><init>(Lcom/android/server/Watchdog;Landroid/os/Handler;Ljava/lang/String;J)V
-HSPLcom/android/server/Watchdog$HandlerChecker;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V
-HSPLcom/android/server/Watchdog;-><init>()V
-HSPLcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V
-HSPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;)V
-HSPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;J)V
-HSPLcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
-HSPLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;-><init>(B)V
-HSPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->$m$0(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;-><init>()V
-HSPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLcom/android/server/am/ActiveServices$1;-><init>(Lcom/android/server/am/ActiveServices;)V
-HSPLcom/android/server/am/ActiveServices;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerConstants;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;)V
-HSPLcom/android/server/am/ActivityManagerConstants;->computeEmptyProcessLimit(I)I
-HSPLcom/android/server/am/ActivityManagerConstants;->updateMaxCachedProcesses()V
-HSPLcom/android/server/am/ActivityManagerService$1;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$4;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;)V
HSPLcom/android/server/am/ActivityManagerService$4;->run()V
-HSPLcom/android/server/am/ActivityManagerService$Injector;-><init>()V
-HSPLcom/android/server/am/ActivityManagerService$Injector;->getAppOpsService(Ljava/io/File;Landroid/os/Handler;)Lcom/android/server/AppOpsService;
-HSPLcom/android/server/am/ActivityManagerService$Injector;->getUiHandler(Lcom/android/server/am/ActivityManagerService;)Landroid/os/Handler;
-HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->getAMSLock()Ljava/lang/Object;
-HSPLcom/android/server/am/ActivityManagerService$KillHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/am/ActivityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->getService()Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$MainHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/am/ActivityManagerService$UiHandler;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;-><init>()V
-HSPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;-><init>(Lcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)V
-HSPLcom/android/server/am/ActivityManagerService;->-wrap10(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/am/ActivityManagerService;->createStackSupervisor()Lcom/android/server/am/ActivityStackSupervisor;
-HSPLcom/android/server/am/ActivityManagerService;->initPowerManagement()V
-HSPLcom/android/server/am/ActivityManagerService;->setInstaller(Lcom/android/server/pm/Installer;)V
-HSPLcom/android/server/am/ActivityManagerService;->setSystemServiceManager(Lcom/android/server/SystemServiceManager;)V
-HSPLcom/android/server/am/ActivityManagerService;->start()V
-HSPLcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
-HSPLcom/android/server/am/ActivityMetricsLogger;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Landroid/content/Context;)V
-HSPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Looper;)V
-HSPLcom/android/server/am/ActivityStackSupervisor$FindTaskResult;-><init>()V
-HSPLcom/android/server/am/ActivityStackSupervisor;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/am/ActivityStackSupervisor;->getChildCount()I
-HSPLcom/android/server/am/ActivityStackSupervisor;->initPowerManagement()V
-HSPLcom/android/server/am/ActivityStackSupervisor;->setRecentTasks(Lcom/android/server/am/RecentTasks;)V
-HSPLcom/android/server/am/ActivityStartInterceptor;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V
-HSPLcom/android/server/am/ActivityStarter;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V
-HSPLcom/android/server/am/AppErrors;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/BatteryExternalStatsWorker$1;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
HSPLcom/android/server/am/BatteryExternalStatsWorker$1;->run()V
-HSPLcom/android/server/am/BatteryExternalStatsWorker$2;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
-HSPLcom/android/server/am/BatteryExternalStatsWorker$2;->run()V
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get0(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/String;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get1(Lcom/android/server/am/BatteryExternalStatsWorker;)Lcom/android/internal/os/BatteryStatsImpl;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get2(Lcom/android/server/am/BatteryExternalStatsWorker;)Landroid/util/IntArray;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get3(Lcom/android/server/am/BatteryExternalStatsWorker;)I
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-get4(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/Object;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-set0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/util/concurrent/Future;)Ljava/util/concurrent/Future;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-set1(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-set2(Lcom/android/server/am/BatteryExternalStatsWorker;I)I
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->-wrap0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;I)V
-HSPLcom/android/server/am/BatteryExternalStatsWorker;-><init>(Landroid/content/Context;Lcom/android/internal/os/BatteryStatsImpl;)V
HSPLcom/android/server/am/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$-com_android_server_am_BatteryExternalStatsWorker_2607(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future;
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleWrite()Ljava/util/concurrent/Future;
HSPLcom/android/server/am/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;I)V
-HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;-><init>(Lcom/android/server/am/BatteryStatsService;)V
-HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V
-HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String;
-HSPLcom/android/server/am/BatteryStatsService;->-wrap0(Ljava/nio/ByteBuffer;)I
-HSPLcom/android/server/am/BatteryStatsService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Handler;)V
HSPLcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
-HSPLcom/android/server/am/BatteryStatsService;->initPowerManagement()V
-HSPLcom/android/server/am/BatteryStatsService;->publish()V
-HSPLcom/android/server/am/BatteryStatsService;->scheduleWriteToDisk()V
-HSPLcom/android/server/am/BroadcastQueue$BroadcastHandler;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/os/Looper;)V
-HSPLcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Ljava/lang/String;JZ)V
-HSPLcom/android/server/am/CompatModePackages$CompatHandler;-><init>(Lcom/android/server/am/CompatModePackages;Landroid/os/Looper;)V
-HSPLcom/android/server/am/CompatModePackages;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;Landroid/os/Handler;)V
HSPLcom/android/server/am/ConfigurationContainer;-><init>()V
HSPLcom/android/server/am/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/am/InstrumentationReporter;-><init>()V
-HSPLcom/android/server/am/KeyguardController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V
-HSPLcom/android/server/am/ProcessList;-><init>()V
HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J
-HSPLcom/android/server/am/ProcessList;->updateOomLevels(IIZ)V
-HSPLcom/android/server/am/ProcessStatsService$1;-><init>(Lcom/android/server/am/ProcessStatsService;)V
-HSPLcom/android/server/am/ProcessStatsService;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V
-HSPLcom/android/server/am/ProcessStatsService;->updateFile()V
-HSPLcom/android/server/am/ProviderMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/RecentTasks$1;-><init>()V
-HSPLcom/android/server/am/RecentTasks;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V
-HSPLcom/android/server/am/TaskChangeNotificationController$MainHandler;-><init>(Lcom/android/server/am/TaskChangeNotificationController;Landroid/os/Looper;)V
HSPLcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HSPLcom/android/server/am/TaskChangeNotificationController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Handler;)V
-HSPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;-><init>(Lcom/android/server/am/TaskPersister;Ljava/lang/String;)V
-HSPLcom/android/server/am/TaskPersister;-><init>(Ljava/io/File;Lcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/RecentTasks;)V
-HSPLcom/android/server/am/UserController$Injector;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/UserController$Injector;->getContext()Landroid/content/Context;
-HSPLcom/android/server/am/UserController$Injector;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/am/UserController$Injector;->getLock()Ljava/lang/Object;
-HSPLcom/android/server/am/UserController$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
-HSPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/UserController$Injector;)V
-HSPLcom/android/server/am/UserController;->updateStartedUserArrayLocked()V
-HSPLcom/android/server/am/UserState;-><init>(Landroid/os/UserHandle;)V
-HSPLcom/android/server/am/VrController$1;-><init>(Lcom/android/server/am/VrController;)V
-HSPLcom/android/server/am/VrController;-><init>(Ljava/lang/Object;)V
-HSPLcom/android/server/display/DisplayAdapter$1;-><init>(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V
-HSPLcom/android/server/display/DisplayAdapter$1;->run()V
-HSPLcom/android/server/display/DisplayAdapter$2;-><init>(Lcom/android/server/display/DisplayAdapter;)V
-HSPLcom/android/server/display/DisplayAdapter$2;->run()V
HSPLcom/android/server/display/DisplayAdapter$Listener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V
HSPLcom/android/server/display/DisplayAdapter$Listener;->onTraversalRequested()V
-HSPLcom/android/server/display/DisplayAdapter;->-get0(Lcom/android/server/display/DisplayAdapter;)Lcom/android/server/display/DisplayAdapter$Listener;
-HSPLcom/android/server/display/DisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Ljava/lang/String;)V
-HSPLcom/android/server/display/DisplayAdapter;->createMode(IIF)Landroid/view/Display$Mode;
-HSPLcom/android/server/display/DisplayAdapter;->getContext()Landroid/content/Context;
-HSPLcom/android/server/display/DisplayAdapter;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/display/DisplayAdapter;->registerLocked()V
-HSPLcom/android/server/display/DisplayAdapter;->sendDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V
-HSPLcom/android/server/display/DisplayAdapter;->sendTraversalRequestLocked()V
-HSPLcom/android/server/display/DisplayDevice;-><init>(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;)V
HSPLcom/android/server/display/DisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;
HSPLcom/android/server/display/DisplayDevice;->getDisplayTokenLocked()Landroid/os/IBinder;
-HSPLcom/android/server/display/DisplayDevice;->getUniqueId()Ljava/lang/String;
HSPLcom/android/server/display/DisplayDevice;->hasStableUniqueId()Z
-HSPLcom/android/server/display/DisplayDeviceInfo;-><init>()V
-HSPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I
-HSPLcom/android/server/display/DisplayDeviceInfo;->equals(Lcom/android/server/display/DisplayDeviceInfo;)Z
-HSPLcom/android/server/display/DisplayDeviceInfo;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String;
-HSPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String;
-HSPLcom/android/server/display/DisplayDeviceInfo;->touchToString(I)Ljava/lang/String;
-HSPLcom/android/server/display/DisplayManagerService$BinderService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
HSPLcom/android/server/display/DisplayManagerService$BinderService;->registerCallback(Landroid/hardware/display/IDisplayManagerCallback;)V
HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;-><init>(Lcom/android/server/display/DisplayManagerService;ILandroid/hardware/display/IDisplayManagerCallback;)V
-HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$DisplayAdapterListener;)V
-HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V
-HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onTraversalRequested()V
-HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;-><init>(Lcom/android/server/display/DisplayManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/display/DisplayManagerService$Injector;-><init>()V
-HSPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
-HSPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$LocalService;)V
-HSPLcom/android/server/display/DisplayManagerService$SyncRoot;-><init>()V
-HSPLcom/android/server/display/DisplayManagerService;->-get5(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot;
-HSPLcom/android/server/display/DisplayManagerService;->-wrap12(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
-HSPLcom/android/server/display/DisplayManagerService;->-wrap13(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
-HSPLcom/android/server/display/DisplayManagerService;->-wrap18(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;I)V
-HSPLcom/android/server/display/DisplayManagerService;->-wrap19(Lcom/android/server/display/DisplayManagerService;)V
-HSPLcom/android/server/display/DisplayManagerService;->-wrap2(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo;
-HSPLcom/android/server/display/DisplayManagerService;->-wrap27(Lcom/android/server/display/DisplayManagerService;Z)V
-HSPLcom/android/server/display/DisplayManagerService;->-wrap7(Lcom/android/server/display/DisplayManagerService;II)V
-HSPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$Injector;)V
-HSPLcom/android/server/display/DisplayManagerService;->addLogicalDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;
-HSPLcom/android/server/display/DisplayManagerService;->assignDisplayIdLocked(Z)I
-HSPLcom/android/server/display/DisplayManagerService;->assignLayerStackLocked(I)I
+HSPLcom/android/server/display/DisplayManagerService;->-wrap19(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;I)V
+HSPLcom/android/server/display/DisplayManagerService;->-wrap3(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo;
HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(II)V
HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo;
-HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAdded(Lcom/android/server/display/DisplayDevice;)V
-HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAddedLocked(Lcom/android/server/display/DisplayDevice;)V
-HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V
-HSPLcom/android/server/display/DisplayManagerService;->onBootPhase(I)V
-HSPLcom/android/server/display/DisplayManagerService;->onStart()V
HSPLcom/android/server/display/DisplayManagerService;->registerCallbackInternal(Landroid/hardware/display/IDisplayManagerCallback;I)V
-HSPLcom/android/server/display/DisplayManagerService;->registerDefaultDisplayAdapter()V
-HSPLcom/android/server/display/DisplayManagerService;->registerDisplayAdapterLocked(Lcom/android/server/display/DisplayAdapter;)V
-HSPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V
-HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(II)V
HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable;
-HSPLcom/android/server/display/DisplayManagerService;->updateLogicalDisplaysLocked()Z
-HSPLcom/android/server/display/DisplayTransformManager;-><init>()V
-HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;-><init>(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)V
-HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$HotplugDisplayEventReceiver;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/Looper;)V
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;-><init>(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;IIZIILandroid/os/IBinder;)V
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(I)V
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)V
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-get0(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Lcom/android/server/lights/Light;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;I[Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)V
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayInfoIndexLocked(I)I
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->hasStableUniqueId()Z
HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(II)Ljava/lang/Runnable;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateColorModesLocked([II)Z
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDeviceInfoLocked()V
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updatePhysicalDisplayInfoLocked([Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)Z
-HSPLcom/android/server/display/LocalDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V
-HSPLcom/android/server/display/LocalDisplayAdapter;->getPowerModeForState(I)I
-HSPLcom/android/server/display/LocalDisplayAdapter;->registerLocked()V
-HSPLcom/android/server/display/LocalDisplayAdapter;->tryConnectDisplayLocked(I)V
-HSPLcom/android/server/display/LogicalDisplay;-><init>(IILcom/android/server/display/DisplayDevice;)V
HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo;
-HSPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice;
-HSPLcom/android/server/display/LogicalDisplay;->isValidLocked()Z
-HSPLcom/android/server/display/LogicalDisplay;->setRequestedColorModeLocked(I)V
-HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Ljava/util/List;)V
-HSPLcom/android/server/display/PersistentDataStore;-><init>()V
-HSPLcom/android/server/display/PersistentDataStore;->clearState()V
-HSPLcom/android/server/display/PersistentDataStore;->getColorMode(Lcom/android/server/display/DisplayDevice;)I
-HSPLcom/android/server/display/PersistentDataStore;->getDisplayState(Ljava/lang/String;Z)Lcom/android/server/display/PersistentDataStore$DisplayState;
-HSPLcom/android/server/display/PersistentDataStore;->load()V
-HSPLcom/android/server/display/PersistentDataStore;->loadIfNeeded()V
-HSPLcom/android/server/firewall/AndFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/CategoryFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/FilterFactory;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/FilterFactory;->getTagName()Ljava/lang/String;
+HSPLcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;->createDisplay(Ljava/lang/String;Z)Landroid/os/IBinder;
HSPLcom/android/server/firewall/IntentFirewall$AMSInterface;->checkComponentPermission(Ljava/lang/String;IIIZ)I
HSPLcom/android/server/firewall/IntentFirewall$AMSInterface;->getAMSLock()Ljava/lang/Object;
-HSPLcom/android/server/firewall/IntentFirewall$FirewallHandler;-><init>(Lcom/android/server/firewall/IntentFirewall;Landroid/os/Looper;)V
-HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>()V
-HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;)V
-HSPLcom/android/server/firewall/IntentFirewall$RuleObserver;-><init>(Lcom/android/server/firewall/IntentFirewall;Ljava/io/File;)V
-HSPLcom/android/server/firewall/IntentFirewall;-><init>(Lcom/android/server/firewall/IntentFirewall$AMSInterface;Landroid/os/Handler;)V
-HSPLcom/android/server/firewall/IntentFirewall;->getRulesDir()Ljava/io/File;
-HSPLcom/android/server/firewall/IntentFirewall;->readRulesDir(Ljava/io/File;)V
-HSPLcom/android/server/firewall/NotFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/OrFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/PortFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/SenderFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/SenderFilter$2;-><init>()V
-HSPLcom/android/server/firewall/SenderFilter$3;-><init>()V
-HSPLcom/android/server/firewall/SenderFilter$4;-><init>()V
-HSPLcom/android/server/firewall/SenderFilter$5;-><init>()V
-HSPLcom/android/server/firewall/SenderPackageFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/SenderPermissionFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$10;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$1;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$2;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$3;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$4;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$5;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$6;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$7;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$8;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$9;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/firewall/StringFilter$ValueProvider;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/lights/Light;-><init>()V
HSPLcom/android/server/lights/Light;->pulse()V
HSPLcom/android/server/lights/Light;->pulse(II)V
HSPLcom/android/server/lights/Light;->setBrightness(I)V
@@ -2155,82 +5378,160 @@ HSPLcom/android/server/lights/Light;->setColor(I)V
HSPLcom/android/server/lights/Light;->setFlashing(IIII)V
HSPLcom/android/server/lights/Light;->setVrMode(Z)V
HSPLcom/android/server/lights/Light;->turnOff()V
-HSPLcom/android/server/lights/LightsManager;-><init>()V
HSPLcom/android/server/lights/LightsManager;->getLight(I)Lcom/android/server/lights/Light;
-HSPLcom/android/server/lights/LightsService$1;-><init>(Lcom/android/server/lights/LightsService;)V
-HSPLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/Light;
-HSPLcom/android/server/lights/LightsService$2;-><init>(Lcom/android/server/lights/LightsService;)V
-HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;I)V
-HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;ILcom/android/server/lights/LightsService$LightImpl;)V
HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(I)V
HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(II)V
HSPLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V
HSPLcom/android/server/lights/LightsService$LightImpl;->shouldBeInLowPersistenceMode()Z
-HSPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/lights/LightsService;->onBootPhase(I)V
-HSPLcom/android/server/lights/LightsService;->onStart()V
-HSPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/os/DeviceIdentifiersPolicyService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/os/DeviceIdentifiersPolicyService;->onStart()V
-HSPLcom/android/server/pm/AbstractStatsBase;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$2()V
+HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;-><init>(BILjava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->run()V
HSPLcom/android/server/pm/BasePermission;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
HSPLcom/android/server/pm/BasePermission;->computeGids(I)[I
-HSPLcom/android/server/pm/BasePermission;->setGids([IZ)V
-HSPLcom/android/server/pm/CompilerStats;-><init>()V
-HSPLcom/android/server/pm/DefaultPermissionGrantPolicy$1;-><init>(Lcom/android/server/pm/DefaultPermissionGrantPolicy;Landroid/os/Looper;)V
-HSPLcom/android/server/pm/DefaultPermissionGrantPolicy;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/Installer$1;-><init>(Lcom/android/server/pm/Installer;)V
-HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;Z)V
+HSPLcom/android/server/pm/BasePermission;->isRuntimeOnly()Z
HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z
-HSPLcom/android/server/pm/Installer;->connect()V
-HSPLcom/android/server/pm/Installer;->invalidateMounts()V
-HSPLcom/android/server/pm/Installer;->onStart()V
-HSPLcom/android/server/pm/InstantAppRegistry$CookiePersistence;-><init>(Lcom/android/server/pm/InstantAppRegistry;Landroid/os/Looper;)V
-HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/KeySetManagerService;-><init>(Landroid/util/ArrayMap;)V
-HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V
+HSPLcom/android/server/pm/Installer;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J
+HSPLcom/android/server/pm/InstructionSets;->getPreferredInstructionSet()Ljava/lang/String;
+HSPLcom/android/server/pm/InstructionSets;->getPrimaryInstructionSet(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String;
+HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->getKey()Ljava/security/PublicKey;
+HSPLcom/android/server/pm/KeySetManagerService;->addRefCountsFromSavedPackagesLPw(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/KeySetManagerService;->addSigningKeySetToPackageLPw(Lcom/android/server/pm/PackageSetting;Landroid/util/ArraySet;)V
+HSPLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/KeySetManagerService;->readKeySetListLPw(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/pm/KeySetManagerService;->readKeysLPw(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/pm/KeySetManagerService;->readPublicKeyLPw(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z
HSPLcom/android/server/pm/PackageKeySetData;-><init>()V
-HSPLcom/android/server/pm/PackageKeySetData;->setProperSigningKeySet(J)V
-HSPLcom/android/server/pm/PackageManagerService$1;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$2;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$3;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$DefaultContainerConnection;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$MoveCallbacks;-><init>(Landroid/os/Looper;)V
-HSPLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;-><init>(Landroid/os/Looper;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageHandler;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;-><init>()V
-HSPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver;)V
-HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)V
-HSPLcom/android/server/pm/PackageManagerService$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)V
+HSPLcom/android/server/pm/PackageKeySetData;->getAliases()Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/PackageKeySetData;->getProperSigningKeySet()J
+HSPLcom/android/server/pm/PackageKeySetData;->isUsingUpgradeKeySets()Z
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator;
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->addActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->adjustPriority(Ljava/util/List;Landroid/content/pm/PackageParser$ActivityIntentInfo;)V
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;Ljava/util/List;)Z
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->findMatchingActivity(Ljava/util/List;Landroid/content/pm/ActivityInfo;)Landroid/content/pm/PackageParser$Activity;
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->getIntentListSubset(Ljava/util/List;Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;Ljava/util/Iterator;)V
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isProtectedAction(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ActivityIntentInfo;
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;II)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->sortResults(Ljava/util/List;)V
+HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPackagesLocked(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPathsLocked(Ljava/util/Collection;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->addProvider(Landroid/content/pm/PackageParser$Provider;)V
+HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->addService(Landroid/content/pm/PackageParser$Service;)V
+HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ServiceIntentInfo;
+HSPLcom/android/server/pm/PackageManagerService;->-get13()Ljava/util/Comparator;
+HSPLcom/android/server/pm/PackageManagerService;->-wrap13(Lcom/android/server/pm/PackageManagerService;I)Z
HSPLcom/android/server/pm/PackageManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)V
-HSPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPw(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)Z
-HSPLcom/android/server/pm/PackageManagerService;->getDefaultDisplayMetrics(Landroid/content/Context;Landroid/util/DisplayMetrics;)V
-HSPLcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)Lcom/android/server/pm/PackageManagerService;
-HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->checkProperties()V
+HSPLcom/android/server/pm/PackageManagerService;->addSharedLibrariesLPw(Ljava/util/List;[I[[Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageParser$Package;ZILandroid/util/ArraySet;)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/PackageManagerService;->adjustCpuAbisForSharedUserLPw(Ljava/util/Set;Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/PackageManagerService;->applyPolicy(Landroid/content/pm/PackageParser$Package;I)V
+HSPLcom/android/server/pm/PackageManagerService;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZII)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->assertPackageIsValid(Landroid/content/pm/PackageParser$Package;II)V
+HSPLcom/android/server/pm/PackageManagerService;->assertPackageKnownAndInstalled(Ljava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;Ljava/io/File;I)V
+HSPLcom/android/server/pm/PackageManagerService;->commitPackageSettings(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;IZ)V
+HSPLcom/android/server/pm/PackageManagerService;->compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
+HSPLcom/android/server/pm/PackageManagerService;->compressedFileExists(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService;->deriveAbiOverride(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->enforceCrossUserPermission(IIZZLjava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->findPermissionTreeLP(Ljava/lang/String;)Lcom/android/server/pm/BasePermission;
+HSPLcom/android/server/pm/PackageManagerService;->fixProcessName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getCompressedFiles(Ljava/lang/String;)[Ljava/io/File;
+HSPLcom/android/server/pm/PackageManagerService;->getDefaultBrowserPackageName(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getInstantAppPackageName(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getLastModifiedTime(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)J
+HSPLcom/android/server/pm/PackageManagerService;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/Settings$VersionInfo;
+HSPLcom/android/server/pm/PackageManagerService;->getSharedLibraryEntryLPr(Ljava/lang/String;I)Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry;
+HSPLcom/android/server/pm/PackageManagerService;->getVolumeUuidForPackage(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->grantPermissionsLPw(Landroid/content/pm/PackageParser$Package;ZLjava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->grantSignaturePermission(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/BasePermission;Lcom/android/server/pm/PermissionsState;)Z
+HSPLcom/android/server/pm/PackageManagerService;->hasNonNegativePriority(Ljava/util/List;)Z
+HSPLcom/android/server/pm/PackageManagerService;->hasWebURI(Landroid/content/Intent;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isCompatSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isEphemeralDisabled()Z
+HSPLcom/android/server/pm/PackageManagerService;->isExternal(Landroid/content/pm/PackageParser$Package;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isInstantAppAllowed(Landroid/content/Intent;Ljava/util/List;IZ)Z
+HSPLcom/android/server/pm/PackageManagerService;->isNewPlatformPermissionForPackage(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isPrivilegedApp(Landroid/content/pm/PackageParser$Package;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isRecoverSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isSystemApp(Landroid/content/pm/PackageParser$Package;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isSystemApp(Lcom/android/server/pm/PackageSetting;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isUpdatedSystemApp(Lcom/android/server/pm/PackageSetting;)Z
+HSPLcom/android/server/pm/PackageManagerService;->lambda$-com_android_server_pm_PackageManagerService_140173(Ljava/util/List;I)V
+HSPLcom/android/server/pm/PackageManagerService;->maybeMigrateAppDataLIF(Landroid/content/pm/PackageParser$Package;I)Z
+HSPLcom/android/server/pm/PackageManagerService;->normalizePackageNameLPr(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataAndMigrateLIF(Landroid/content/pm/PackageParser$Package;IIZ)V
+HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataContentsLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
+HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V
+HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
+HSPLcom/android/server/pm/PackageManagerService;->queryCrossProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->querySkipCurrentProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->scanDirLI(Ljava/io/File;IIJ)V
+HSPLcom/android/server/pm/PackageManagerService;->scanPackageDirtyLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
+HSPLcom/android/server/pm/PackageManagerService;->scanPackageInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
+HSPLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
+HSPLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
+HSPLcom/android/server/pm/PackageManagerService;->setNativeLibraryPaths(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)V
+HSPLcom/android/server/pm/PackageManagerService;->shouldCheckUpgradeKeySetLP(Lcom/android/server/pm/PackageSetting;I)Z
+HSPLcom/android/server/pm/PackageManagerService;->updateAllSharedLibrariesLPw(Landroid/content/pm/PackageParser$Package;)Ljava/util/ArrayList;
+HSPLcom/android/server/pm/PackageManagerService;->updateFlags(II)I
+HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForComponent(IILjava/lang/Object;)I
+HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZZ)I
+HSPLcom/android/server/pm/PackageManagerService;->updatePermissionsLPw(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->updateSharedLibrariesLPr(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/PackageManagerService;->userNeedsBadging(I)Z
+HSPLcom/android/server/pm/PackageManagerService;->verifySignaturesLP(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V
HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getAndCheckValidity(I)Ljava/lang/String;
HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getSystemPropertyName(I)Ljava/lang/String;
-HSPLcom/android/server/pm/PackageSender;->sendPackageAddedForNewUsers(Ljava/lang/String;ZI[I)V
+HSPLcom/android/server/pm/PackageSender;->sendPackageAddedForNewUsers(Ljava/lang/String;ZZI[I)V
HSPLcom/android/server/pm/PackageSender;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V
+HSPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;)V
HSPLcom/android/server/pm/PackageSetting;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/List;I[Ljava/lang/String;[I)V
HSPLcom/android/server/pm/PackageSetting;->getPermissionsState()Lcom/android/server/pm/PermissionsState;
+HSPLcom/android/server/pm/PackageSetting;->isPrivileged()Z
+HSPLcom/android/server/pm/PackageSettingBase;-><init>(Lcom/android/server/pm/PackageSettingBase;Ljava/lang/String;)V
HSPLcom/android/server/pm/PackageSettingBase;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/List;[Ljava/lang/String;[I)V
+HSPLcom/android/server/pm/PackageSettingBase;->doCopy(Lcom/android/server/pm/PackageSettingBase;)V
+HSPLcom/android/server/pm/PackageSettingBase;->getInstalled(I)Z
+HSPLcom/android/server/pm/PackageSettingBase;->getInstantApp(I)Z
+HSPLcom/android/server/pm/PackageSettingBase;->getNotInstalledUserIds()[I
+HSPLcom/android/server/pm/PackageSettingBase;->getVirtulalPreload(I)Z
HSPLcom/android/server/pm/PackageSettingBase;->init(Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
HSPLcom/android/server/pm/PackageSettingBase;->modifyUserState(I)Landroid/content/pm/PackageUserState;
+HSPLcom/android/server/pm/PackageSettingBase;->readUserState(I)Landroid/content/pm/PackageUserState;
HSPLcom/android/server/pm/PackageSettingBase;->setEnabled(IILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageSettingBase;->setIntentFilterVerificationInfo(Landroid/content/pm/IntentFilterVerificationInfo;)V
HSPLcom/android/server/pm/PackageSettingBase;->setTimeStamp(J)V
+HSPLcom/android/server/pm/PackageSettingBase;->setUserState(IJIZZZZZZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;III)V
HSPLcom/android/server/pm/PackageSignatures;-><init>()V
HSPLcom/android/server/pm/PackageSignatures;->readXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/ArrayList;)V
-HSPLcom/android/server/pm/PackageUsage;-><init>()V
+HSPLcom/android/server/pm/PackageSignatures;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V
+HSPLcom/android/server/pm/ParallelPackageParser$ParseResult;-><init>()V
+HSPLcom/android/server/pm/ParallelPackageParser;->lambda$-com_android_server_pm_ParallelPackageParser_3701(Ljava/io/File;I)V
+HSPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Landroid/content/pm/PackageParser;Ljava/io/File;I)Landroid/content/pm/PackageParser$Package;
+HSPLcom/android/server/pm/ParallelPackageParser;->submit(Ljava/io/File;I)V
+HSPLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult;
HSPLcom/android/server/pm/PermissionsState$PermissionData;-><init>(Lcom/android/server/pm/BasePermission;)V
+HSPLcom/android/server/pm/PermissionsState$PermissionData;-><init>(Lcom/android/server/pm/PermissionsState$PermissionData;)V
HSPLcom/android/server/pm/PermissionsState$PermissionData;->computeGids(I)[I
HSPLcom/android/server/pm/PermissionsState$PermissionData;->getFlags(I)I
+HSPLcom/android/server/pm/PermissionsState$PermissionData;->getPermissionState(I)Lcom/android/server/pm/PermissionsState$PermissionState;
HSPLcom/android/server/pm/PermissionsState$PermissionData;->grant(I)Z
HSPLcom/android/server/pm/PermissionsState$PermissionData;->isCompatibleUserId(I)Z
HSPLcom/android/server/pm/PermissionsState$PermissionData;->isDefault()Z
@@ -2242,123 +5543,116 @@ HSPLcom/android/server/pm/PermissionsState$PermissionState;->-get0(Lcom/android/
HSPLcom/android/server/pm/PermissionsState$PermissionState;->-get1(Lcom/android/server/pm/PermissionsState$PermissionState;)Z
HSPLcom/android/server/pm/PermissionsState$PermissionState;->-set0(Lcom/android/server/pm/PermissionsState$PermissionState;I)I
HSPLcom/android/server/pm/PermissionsState$PermissionState;->-set1(Lcom/android/server/pm/PermissionsState$PermissionState;Z)Z
+HSPLcom/android/server/pm/PermissionsState$PermissionState;-><init>(Lcom/android/server/pm/PermissionsState$PermissionState;)V
HSPLcom/android/server/pm/PermissionsState$PermissionState;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/pm/PermissionsState$PermissionState;->getFlags()I
+HSPLcom/android/server/pm/PermissionsState$PermissionState;->getName()Ljava/lang/String;
HSPLcom/android/server/pm/PermissionsState$PermissionState;->isDefault()Z
+HSPLcom/android/server/pm/PermissionsState$PermissionState;->isGranted()Z
HSPLcom/android/server/pm/PermissionsState;-><init>()V
HSPLcom/android/server/pm/PermissionsState;->appendInts([I[I)[I
HSPLcom/android/server/pm/PermissionsState;->computeGids(I)[I
+HSPLcom/android/server/pm/PermissionsState;->copyFrom(Lcom/android/server/pm/PermissionsState;)V
HSPLcom/android/server/pm/PermissionsState;->enforceValidUserId(I)V
HSPLcom/android/server/pm/PermissionsState;->ensurePermissionData(Lcom/android/server/pm/BasePermission;)Lcom/android/server/pm/PermissionsState$PermissionData;
+HSPLcom/android/server/pm/PermissionsState;->getInstallPermissionStates()Ljava/util/List;
+HSPLcom/android/server/pm/PermissionsState;->getPermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState;
+HSPLcom/android/server/pm/PermissionsState;->getPermissionStatesInternal(I)Ljava/util/List;
+HSPLcom/android/server/pm/PermissionsState;->getRuntimePermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState;
HSPLcom/android/server/pm/PermissionsState;->grantInstallPermission(Lcom/android/server/pm/BasePermission;)I
HSPLcom/android/server/pm/PermissionsState;->grantPermission(Lcom/android/server/pm/BasePermission;I)I
+HSPLcom/android/server/pm/PermissionsState;->grantRuntimePermission(Lcom/android/server/pm/BasePermission;I)I
+HSPLcom/android/server/pm/PermissionsState;->hasInstallPermission(Ljava/lang/String;)Z
HSPLcom/android/server/pm/PermissionsState;->hasPermission(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/PermissionsState;->hasRuntimePermission(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/PermissionsState;->revokeInstallPermission(Lcom/android/server/pm/BasePermission;)I
+HSPLcom/android/server/pm/PermissionsState;->revokePermission(Lcom/android/server/pm/BasePermission;I)I
+HSPLcom/android/server/pm/PermissionsState;->setGlobalGids([I)V
HSPLcom/android/server/pm/PermissionsState;->updatePermissionFlags(Lcom/android/server/pm/BasePermission;III)Z
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->-get0(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Set;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->-get1(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Map;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->-get2(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/lang/String;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;-><init>()V
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->addInnerPackageMapOrThrow(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->addSignature(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->build()Lcom/android/server/pm/Policy;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->setGlobalSeinfoOrThrow(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
-HSPLcom/android/server/pm/Policy$PolicyBuilder;->validateValue(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/Policy;->-get0(Lcom/android/server/pm/Policy;)Ljava/util/Set;
-HSPLcom/android/server/pm/Policy;->-get1(Lcom/android/server/pm/Policy;)Ljava/util/Map;
-HSPLcom/android/server/pm/Policy;->-get2(Lcom/android/server/pm/Policy;)Ljava/lang/String;
-HSPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;)V
-HSPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;Lcom/android/server/pm/Policy;)V
-HSPLcom/android/server/pm/Policy;->getSignatures()Ljava/util/Set;
-HSPLcom/android/server/pm/Policy;->hasInnerPackages()Z
-HSPLcom/android/server/pm/PolicyComparator;-><init>()V
-HSPLcom/android/server/pm/PolicyComparator;->compare(Lcom/android/server/pm/Policy;Lcom/android/server/pm/Policy;)I
-HSPLcom/android/server/pm/PolicyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/pm/PolicyComparator;->foundDuplicate()Z
-HSPLcom/android/server/pm/ProcessLoggingHandler;-><init>()V
-HSPLcom/android/server/pm/ProtectedPackages;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/pm/SELinuxMMAC;->readInstallPolicy()Z
-HSPLcom/android/server/pm/SELinuxMMAC;->readPackageOrThrow(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/Policy$PolicyBuilder;)V
-HSPLcom/android/server/pm/SELinuxMMAC;->readSeinfo(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/server/pm/SELinuxMMAC;->readSignerOrThrow(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/Policy;
+HSPLcom/android/server/pm/Policy;->getMatchedSeInfo(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String;
+HSPLcom/android/server/pm/PreferredComponent$Callbacks;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z
+HSPLcom/android/server/pm/SELinuxMMAC;->assignSeInfoValue(Landroid/content/pm/PackageParser$Package;)V
HSPLcom/android/server/pm/SettingBase;-><init>(II)V
+HSPLcom/android/server/pm/SettingBase;-><init>(Lcom/android/server/pm/SettingBase;)V
+HSPLcom/android/server/pm/SettingBase;->doCopy(Lcom/android/server/pm/SettingBase;)V
HSPLcom/android/server/pm/SettingBase;->getPermissionsState()Lcom/android/server/pm/PermissionsState;
HSPLcom/android/server/pm/SettingBase;->setFlags(I)V
HSPLcom/android/server/pm/SettingBase;->setPrivateFlags(I)V
-HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
-HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><init>(Lcom/android/server/pm/Settings;Ljava/lang/Object;)V
-HSPLcom/android/server/pm/Settings$VersionInfo;-><init>()V
-HSPLcom/android/server/pm/Settings;-><init>(Ljava/io/File;Ljava/lang/Object;)V
-HSPLcom/android/server/pm/Settings;-><init>(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/Settings$KernelPackageState;-><init>()V
+HSPLcom/android/server/pm/Settings$KernelPackageState;-><init>(Lcom/android/server/pm/Settings$KernelPackageState;)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parsePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PermissionsState;I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parseRuntimePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsForUserAsyncLPr(I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsSync(I)V
HSPLcom/android/server/pm/Settings;->addPackageLPw(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIILjava/lang/String;Ljava/util/List;[Ljava/lang/String;[I)Lcom/android/server/pm/PackageSetting;
-HSPLcom/android/server/pm/Settings;->addSharedUserLPw(Ljava/lang/String;III)Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/Settings;->addPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;)V
HSPLcom/android/server/pm/Settings;->addUserIdLPw(ILjava/lang/Object;Ljava/lang/Object;)Z
-HSPLcom/android/server/pm/Settings;->findOrCreateVersion(Ljava/lang/String;)Lcom/android/server/pm/Settings$VersionInfo;
-HSPLcom/android/server/pm/Settings;->readDomainVerificationLPw(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PackageSettingBase;)V
+HSPLcom/android/server/pm/Settings;->getAllUsers(Lcom/android/server/pm/UserManagerService;)Ljava/util/List;
+HSPLcom/android/server/pm/Settings;->getDefaultBrowserPackageNameLPw(I)Ljava/lang/String;
+HSPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo;
+HSPLcom/android/server/pm/Settings;->getListOfIncompleteInstallPackagesLPr()Ljava/util/ArrayList;
+HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/Settings;->getUserIdLPr(I)Ljava/lang/Object;
+HSPLcom/android/server/pm/Settings;->getVolumePackagesLPr(Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/Settings;->isDisabledSystemPackageLPr(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/Settings;->isEnabledAndMatchLPr(Landroid/content/pm/ComponentInfo;II)Z
+HSPLcom/android/server/pm/Settings;->pruneSharedUsersLPw()V
+HSPLcom/android/server/pm/Settings;->readComponentsLPr(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/Settings;->readDisabledSysPackageLPw(Lorg/xmlpull/v1/XmlPullParser;)V
HSPLcom/android/server/pm/Settings;->readInstallPermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PermissionsState;)V
HSPLcom/android/server/pm/Settings;->readInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;I)I
HSPLcom/android/server/pm/Settings;->readLPw(Ljava/util/List;)Z
HSPLcom/android/server/pm/Settings;->readPackageLPw(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(I)V
HSPLcom/android/server/pm/Settings;->readPermissionsLPw(Landroid/util/ArrayMap;Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/server/pm/SharedUserSetting;-><init>(Ljava/lang/String;II)V
-HSPLcom/android/server/pm/UserDataPreparer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Z)V
-HSPLcom/android/server/pm/UserManagerService$1;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HSPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HSPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$LocalService;)V
-HSPLcom/android/server/pm/UserManagerService$MainHandler;-><init>(Lcom/android/server/pm/UserManagerService;)V
-HSPLcom/android/server/pm/UserManagerService$UserData;-><init>()V
-HSPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;)V
-HSPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;Ljava/io/File;)V
+HSPLcom/android/server/pm/Settings;->readSharedUserLPw(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[I)V
+HSPLcom/android/server/pm/Settings;->writeChildPackagesLPw(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
+HSPLcom/android/server/pm/Settings;->writeDomainVerificationsLPr(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/IntentFilterVerificationInfo;)V
+HSPLcom/android/server/pm/Settings;->writeIntToFile(Ljava/io/File;I)V
+HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr()V
+HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr(Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
+HSPLcom/android/server/pm/Settings;->writeLPr()V
+HSPLcom/android/server/pm/Settings;->writePackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/Settings;->writePermissionLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/BasePermission;)V
+HSPLcom/android/server/pm/Settings;->writePermissionsLPr(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
+HSPLcom/android/server/pm/Settings;->writeRuntimePermissionsForUserLPr(IZ)V
+HSPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
+HSPLcom/android/server/pm/Settings;->writeUpgradeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
+HSPLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;[I)V
+HSPLcom/android/server/pm/SharedUserSetting;->addPackage(Lcom/android/server/pm/PackageSetting;)V
HSPLcom/android/server/pm/UserManagerService;->checkManageOrCreateUsersPermission(Ljava/lang/String;)V
+HSPLcom/android/server/pm/UserManagerService;->exists(I)Z
+HSPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/UserManagerService;->getUserIds()[I
+HSPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo;
HSPLcom/android/server/pm/UserManagerService;->getUsers(Z)Ljava/util/List;
HSPLcom/android/server/pm/UserManagerService;->hasManageOrCreateUsersPermission()Z
-HSPLcom/android/server/pm/UserManagerService;->initDefaultGuestRestrictions()V
-HSPLcom/android/server/pm/UserManagerService;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
-HSPLcom/android/server/pm/UserManagerService;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
-HSPLcom/android/server/pm/UserManagerService;->readUserLP(I)Lcom/android/server/pm/UserManagerService$UserData;
-HSPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;)Lcom/android/server/pm/UserManagerService$UserData;
-HSPLcom/android/server/pm/UserManagerService;->readUserListLP()V
-HSPLcom/android/server/pm/UserManagerService;->updateUserIds()V
-HSPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(Landroid/os/Bundle;)V
HSPLcom/android/server/pm/UserManagerService;->userWithName(Landroid/content/pm/UserInfo;)Landroid/content/pm/UserInfo;
-HSPLcom/android/server/pm/UserRestrictionsUtils;->newSetWithUniqueCheck([Ljava/lang/String;)Ljava/util/Set;
-HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/Bundle;
HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;Landroid/os/Bundle;)V
-HSPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V
-HSPLcom/android/server/pm/dex/PackageDexUsage;-><init>()V
-HSPLcom/android/server/power/BatterySaverPolicy;-><init>(Landroid/os/Handler;)V
HSPLcom/android/server/power/BatterySaverPolicy;->getBatterySaverPolicy(IZ)Landroid/os/PowerSaveState;
-HSPLcom/android/server/power/PowerManagerService$1;-><init>(Lcom/android/server/power/PowerManagerService;)V
-HSPLcom/android/server/power/PowerManagerService$2;-><init>(Lcom/android/server/power/PowerManagerService;)V
-HSPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;)V
-HSPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$BinderService;)V
-HSPLcom/android/server/power/PowerManagerService$Constants;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V
-HSPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;)V
-HSPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$LocalService;)V
-HSPLcom/android/server/power/PowerManagerService$LocalService;->getLowPowerState(I)Landroid/os/PowerSaveState;
-HSPLcom/android/server/power/PowerManagerService$LocalService;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V
-HSPLcom/android/server/power/PowerManagerService$PowerManagerHandler;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;-><init>(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire()V
-HSPLcom/android/server/power/PowerManagerService;->-get0(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/BatterySaverPolicy;
-HSPLcom/android/server/power/PowerManagerService;->-get10(Lcom/android/server/power/PowerManagerService;)Z
-HSPLcom/android/server/power/PowerManagerService;->-get11(Lcom/android/server/power/PowerManagerService;)Ljava/util/ArrayList;
+HSPLcom/android/server/power/PowerManagerService$BinderService;->powerHint(II)V
+HSPLcom/android/server/power/PowerManagerService;->-get12(Lcom/android/server/power/PowerManagerService;)Z
HSPLcom/android/server/power/PowerManagerService;->-get9(Lcom/android/server/power/PowerManagerService;)Ljava/lang/Object;
-HSPLcom/android/server/power/PowerManagerService;->-wrap20(Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/power/PowerManagerService;->createSuspendBlockerLocked(Ljava/lang/String;)Lcom/android/server/power/SuspendBlocker;
-HSPLcom/android/server/power/PowerManagerService;->onBootPhase(I)V
-HSPLcom/android/server/power/PowerManagerService;->onStart()V
HSPLcom/android/server/power/SuspendBlocker;->acquire()V
HSPLcom/android/server/power/SuspendBlocker;->release()V
HSPLcom/android/server/power/SuspendBlocker;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
HSPLcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener;->onEnabledComponentChanged()V
HSPLcom/android/server/wm/AppWindowContainerListener;->keyDispatchingTimedOut(Ljava/lang/String;I)Z
-HSPLcom/android/server/wm/AppWindowContainerListener;->onStartingWindowDrawn()V
-HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsDrawn()V
+HSPLcom/android/server/wm/AppWindowContainerListener;->onStartingWindowDrawn(J)V
+HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsDrawn(J)V
HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsGone()V
HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsVisible()V
HSPLcom/android/server/wm/TaskWindowContainerListener;->onSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V
HSPLcom/android/server/wm/TaskWindowContainerListener;->requestResize(Landroid/graphics/Rect;I)V
-Lcom/android/server/-$Lambda$6PBiitFNzy52xbrUpcD5i5xBLLY;
+Lcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;
Lcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;
Lcom/android/server/AlarmManagerService;
Lcom/android/server/AppOpsService$1;
@@ -2395,6 +5689,7 @@ Lcom/android/server/VibratorService;
Lcom/android/server/Watchdog$BinderThreadMonitor;
Lcom/android/server/Watchdog$HandlerChecker;
Lcom/android/server/Watchdog$Monitor;
+Lcom/android/server/Watchdog$OpenFdMonitor;
Lcom/android/server/Watchdog;
Lcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;
Lcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;
@@ -2434,6 +5729,7 @@ Lcom/android/server/am/BaseErrorDialog;
Lcom/android/server/am/BatteryExternalStatsWorker$1;
Lcom/android/server/am/BatteryExternalStatsWorker$2;
Lcom/android/server/am/BatteryExternalStatsWorker;
+Lcom/android/server/am/BatteryStatsService$1;
Lcom/android/server/am/BatteryStatsService$WakeupReasonThread;
Lcom/android/server/am/BatteryStatsService;
Lcom/android/server/am/BroadcastQueue$BroadcastHandler;
@@ -2464,8 +5760,13 @@ Lcom/android/server/am/UserController;
Lcom/android/server/am/UserState;
Lcom/android/server/am/VrController$1;
Lcom/android/server/am/VrController;
+Lcom/android/server/broadcastradio/BroadcastRadioService;
+Lcom/android/server/broadcastradio/Convert;
+Lcom/android/server/broadcastradio/Tuner;
+Lcom/android/server/broadcastradio/TunerCallback;
Lcom/android/server/connectivity/Vpn;
Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;
+Lcom/android/server/display/-$Lambda$pe87L53A2dvYIZSUUR6Usyk2Zwo;
Lcom/android/server/display/DisplayAdapter$1;
Lcom/android/server/display/DisplayAdapter$2;
Lcom/android/server/display/DisplayAdapter$Listener;
@@ -2488,7 +5789,10 @@ Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
Lcom/android/server/display/LocalDisplayAdapter;
Lcom/android/server/display/LogicalDisplay;
Lcom/android/server/display/PersistentDataStore$DisplayState;
+Lcom/android/server/display/PersistentDataStore$StableDeviceValues;
Lcom/android/server/display/PersistentDataStore;
+Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;
+Lcom/android/server/display/VirtualDisplayAdapter;
Lcom/android/server/firewall/AndFilter$1;
Lcom/android/server/firewall/AndFilter;
Lcom/android/server/firewall/CategoryFilter$1;
@@ -2545,9 +5849,11 @@ Lcom/android/server/location/LocationProviderInterface;
Lcom/android/server/locksettings/SyntheticPasswordManager;
Lcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;
Lcom/android/server/os/DeviceIdentifiersPolicyService;
+Lcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;
Lcom/android/server/pm/AbstractStatsBase;
Lcom/android/server/pm/BasePermission;
Lcom/android/server/pm/CompilerStats;
+Lcom/android/server/pm/CrossProfileIntentResolver;
Lcom/android/server/pm/DefaultPermissionGrantPolicy$1;
Lcom/android/server/pm/DefaultPermissionGrantPolicy;
Lcom/android/server/pm/Installer$1;
@@ -2555,13 +5861,22 @@ Lcom/android/server/pm/Installer$InstallerException;
Lcom/android/server/pm/Installer;
Lcom/android/server/pm/InstantAppRegistry$CookiePersistence;
Lcom/android/server/pm/InstantAppRegistry;
+Lcom/android/server/pm/InstructionSets;
+Lcom/android/server/pm/KeySetHandle;
+Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;
Lcom/android/server/pm/KeySetManagerService;
Lcom/android/server/pm/PackageDexOptimizer;
+Lcom/android/server/pm/PackageInstallerService$1;
+Lcom/android/server/pm/PackageInstallerService;
Lcom/android/server/pm/PackageKeySetData;
Lcom/android/server/pm/PackageManagerException;
Lcom/android/server/pm/PackageManagerService$1;
Lcom/android/server/pm/PackageManagerService$2;
Lcom/android/server/pm/PackageManagerService$3;
+Lcom/android/server/pm/PackageManagerService$9;
+Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;
+Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator;
+Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;
Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;
Lcom/android/server/pm/PackageManagerService$DefaultContainerConnection;
Lcom/android/server/pm/PackageManagerService$MoveCallbacks;
@@ -2580,16 +5895,23 @@ Lcom/android/server/pm/PackageSetting;
Lcom/android/server/pm/PackageSettingBase;
Lcom/android/server/pm/PackageSignatures;
Lcom/android/server/pm/PackageUsage;
+Lcom/android/server/pm/ParallelPackageParser$ParseResult;
+Lcom/android/server/pm/ParallelPackageParser;
Lcom/android/server/pm/PermissionsState$PermissionData;
Lcom/android/server/pm/PermissionsState$PermissionState;
Lcom/android/server/pm/PermissionsState;
Lcom/android/server/pm/Policy$PolicyBuilder;
Lcom/android/server/pm/Policy;
Lcom/android/server/pm/PolicyComparator;
+Lcom/android/server/pm/PreferredActivity;
+Lcom/android/server/pm/PreferredComponent$Callbacks;
+Lcom/android/server/pm/PreferredComponent;
+Lcom/android/server/pm/PreferredIntentResolver;
Lcom/android/server/pm/ProcessLoggingHandler;
Lcom/android/server/pm/ProtectedPackages;
Lcom/android/server/pm/SELinuxMMAC;
Lcom/android/server/pm/SettingBase;
+Lcom/android/server/pm/Settings$KernelPackageState;
Lcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;
Lcom/android/server/pm/Settings$RuntimePermissionPersistence;
Lcom/android/server/pm/Settings$VersionInfo;
@@ -2603,6 +5925,7 @@ Lcom/android/server/pm/UserManagerService$UserData;
Lcom/android/server/pm/UserManagerService;
Lcom/android/server/pm/UserRestrictionsUtils;
Lcom/android/server/pm/dex/DexManager;
+Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
Lcom/android/server/pm/dex/PackageDexUsage;
Lcom/android/server/power/BatterySaverPolicy;
Lcom/android/server/power/PowerManagerService$1;
@@ -2614,9 +5937,6 @@ Lcom/android/server/power/PowerManagerService$PowerManagerHandler;
Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
Lcom/android/server/power/PowerManagerService;
Lcom/android/server/power/SuspendBlocker;
-Lcom/android/server/radio/RadioService;
-Lcom/android/server/radio/Tuner;
-Lcom/android/server/radio/TunerCallback;
Lcom/android/server/storage/AppFuseBridge;
Lcom/android/server/tv/TvInputHal;
Lcom/android/server/tv/UinputBridge;
@@ -2637,6 +5957,14 @@ PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->asInterf
PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->getService()Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;-><init>()V
PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;->asBinder()Landroid/os/IHwBinder;
+PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;-><init>(Landroid/os/IHwBinder;)V
+PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->hasWideColorDisplay()Landroid/hardware/configstore/V1_0/OptionalBool;
+PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;
+PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getService()Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;
+PLandroid/hardware/configstore/V1_0/OptionalBool;-><init>()V
+PLandroid/hardware/configstore/V1_0/OptionalBool;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/configstore/V1_0/OptionalBool;->readFromParcel(Landroid/os/HwParcel;)V
PLandroid/hardware/oemlock/V1_0/IOemLock;->getService()Landroid/hardware/oemlock/V1_0/IOemLock;
PLandroid/hardware/usb/V1_0/IUsb$Proxy;-><init>(Landroid/os/IHwBinder;)V
PLandroid/hardware/usb/V1_0/IUsb$Proxy;->interfaceChain()Ljava/util/ArrayList;
@@ -2656,10 +5984,7 @@ PLandroid/hardware/usb/V1_1/PortStatus_1_1;->readEmbeddedFromParcel(Landroid/os/
PLandroid/hardware/usb/V1_1/PortStatus_1_1;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
PLandroid/hardware/weaver/V1_0/IWeaver;->getService()Landroid/hardware/weaver/V1_0/IWeaver;
PLandroid/hardware/wifi/V1_0/IWifi$Proxy;-><init>(Landroid/os/IHwBinder;)V
-PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChip(ILandroid/hardware/wifi/V1_0/IWifi$getChipCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChipIds(Landroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;)V
PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->interfaceChain()Ljava/util/ArrayList;
-PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->isStarted()Z
PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus;
PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->start()Landroid/hardware/wifi/V1_0/WifiStatus;
@@ -2670,30 +5995,18 @@ PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;-><init>()V
PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;->readFromParcel(Landroid/os/HwParcel;)V
PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;-><init>()V
-PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;-><init>()V
-PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
PLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;-><init>()V
-PLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;-><init>(Landroid/os/IHwBinder;)V
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->configureChip(I)Landroid/hardware/wifi/V1_0/WifiStatus;
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->createRttController(Landroid/hardware/wifi/V1_0/IWifiIface;Landroid/hardware/wifi/V1_0/IWifiChip$createRttControllerCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->createStaIface(Landroid/hardware/wifi/V1_0/IWifiChip$createStaIfaceCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->enableDebugErrorAlerts(Z)Landroid/hardware/wifi/V1_0/WifiStatus;
-PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getApIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getAvailableModes(Landroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;)V
+PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->forceDumpToDebugRingBuffer(Ljava/lang/String;)Landroid/hardware/wifi/V1_0/WifiStatus;
+PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getDebugHostWakeReasonStats(Landroid/hardware/wifi/V1_0/IWifiChip$getDebugHostWakeReasonStatsCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getDebugRingBuffersStatus(Landroid/hardware/wifi/V1_0/IWifiChip$getDebugRingBuffersStatusCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getMode(Landroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getNanIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getP2pIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getP2pIfaceNamesCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->interfaceChain()Ljava/util/ArrayList;
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiChipEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus;
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->requestChipDebugInfo(Landroid/hardware/wifi/V1_0/IWifiChip$requestChipDebugInfoCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->startLoggingToDebugRingBuffer(Ljava/lang/String;III)Landroid/hardware/wifi/V1_0/WifiStatus;
-PLandroid/hardware/wifi/V1_0/IWifiChip;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiChip;
PLandroid/hardware/wifi/V1_0/IWifiChipEventCallback$Stub;-><init>()V
PLandroid/hardware/wifi/V1_0/IWifiChipEventCallback$Stub;->asBinder()Landroid/os/IHwBinder;
PLandroid/hardware/wifi/V1_0/IWifiEventCallback$Stub;-><init>()V
@@ -2712,19 +6025,14 @@ PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->enableLinkLayerStatsCollectio
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->enableNdOffload(Z)Landroid/hardware/wifi/V1_0/WifiStatus;
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getApfPacketFilterCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getApfPacketFilterCapabilitiesCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getBackgroundScanCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getBackgroundScanCapabilitiesCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getDebugRxPacketFates(Landroid/hardware/wifi/V1_0/IWifiStaIface$getDebugRxPacketFatesCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getDebugTxPacketFates(Landroid/hardware/wifi/V1_0/IWifiStaIface$getDebugTxPacketFatesCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getName(Landroid/hardware/wifi/V1_0/IWifiIface$getNameCallback;)V
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getRoamingCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getRoamingCapabilitiesCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getValidFrequenciesForBand(ILandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;)V
-PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->installApfPacketFilter(ILjava/util/ArrayList;)Landroid/hardware/wifi/V1_0/WifiStatus;
-PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->interfaceChain()Ljava/util/ArrayList;
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus;
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->setScanningMacOui([B)Landroid/hardware/wifi/V1_0/WifiStatus;
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->startDebugPacketFateMonitoring()Landroid/hardware/wifi/V1_0/WifiStatus;
PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->stopRssiMonitoring(I)Landroid/hardware/wifi/V1_0/WifiStatus;
-PLandroid/hardware/wifi/V1_0/IWifiStaIface;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiStaIface;
PLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback$Stub;-><init>()V
PLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback$Stub;->asBinder()Landroid/os/IHwBinder;
PLandroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;-><init>()V
@@ -2734,28 +6042,26 @@ PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;-><init>()V
PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->readFromParcel(Landroid/os/HwParcel;)V
PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->toString()Ljava/lang/String;
-PLandroid/hardware/wifi/V1_0/StaLinkLayerIfacePacketStats;-><init>()V
-PLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;-><init>()V
-PLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-PLandroid/hardware/wifi/V1_0/StaLinkLayerRadioStats;-><init>()V
-PLandroid/hardware/wifi/V1_0/StaLinkLayerStats;-><init>()V
-PLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->readFromParcel(Landroid/os/HwParcel;)V
PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;-><init>()V
PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;->readFromParcel(Landroid/os/HwParcel;)V
PLandroid/hardware/wifi/V1_0/StaRoamingConfig;-><init>()V
PLandroid/hardware/wifi/V1_0/StaRoamingConfig;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
PLandroid/hardware/wifi/V1_0/StaRoamingConfig;->writeToParcel(Landroid/os/HwParcel;)V
-PLandroid/hardware/wifi/V1_0/WifiDebugPacketFateFrameInfo;-><init>()V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxIcmpPacketDetails;-><init>()V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxIcmpPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxMulticastPacketDetails;-><init>()V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxMulticastPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxPacketDetails;-><init>()V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;-><init>()V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;->readFromParcel(Landroid/os/HwParcel;)V
PLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;-><init>()V
PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
PLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;-><init>()V
-PLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-PLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-PLandroid/hardware/wifi/V1_0/WifiStatus;-><init>()V
-PLandroid/hardware/wifi/V1_0/WifiStatus;->readFromParcel(Landroid/os/HwParcel;)V
PLandroid/hardware/wifi/V1_0/WifiStatus;->toString()Ljava/lang/String;
PLandroid/hardware/wifi/V1_0/WifiStatusCode;->toString(I)Ljava/lang/String;
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;-><init>()V
@@ -2812,7 +6118,6 @@ PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setBtCoexist
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setBtCoexistenceScanModeEnabled(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setCountryCode([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setExternalSim(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
-PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setPowerSave(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setSuspendModeEnabled(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsConfigMethods(S)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsDeviceName(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;
@@ -2844,9 +6149,6 @@ PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setSsid(Lj
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback$Stub;-><init>()V
PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback$Stub;->asBinder()Landroid/os/IHwBinder;
-PLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;-><init>()V
-PLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-PLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readFromParcel(Landroid/os/HwParcel;)V
PLandroid/net/apf/ApfCapabilities;-><init>(III)V
PLandroid/net/apf/ApfCapabilities;->toString()Ljava/lang/String;
PLandroid/net/apf/ApfFilter$ProcessRaResult;-><init>(Ljava/lang/String;I)V
@@ -2856,9 +6158,8 @@ PLandroid/net/apf/ApfFilter$Ra;->IPv6AddresstoString(I)Ljava/lang/String;
PLandroid/net/apf/ApfFilter$Ra;->addNonLifetime(III)I
PLandroid/net/apf/ApfFilter$Ra;->addNonLifetimeU32(I)I
PLandroid/net/apf/ApfFilter$Ra;->currentLifetime()J
-PLandroid/net/apf/ApfFilter$Ra;->generateFilterLocked(Landroid/net/apf/ApfGenerator;)J
+PLandroid/net/apf/ApfFilter$Ra;->getLastMatchingPacket()Ljava/lang/String;
PLandroid/net/apf/ApfFilter$Ra;->isExpired()Z
-PLandroid/net/apf/ApfFilter$Ra;->minLifetime([BI)J
PLandroid/net/apf/ApfFilter$Ra;->prefixOptionToString(Ljava/lang/StringBuffer;I)V
PLandroid/net/apf/ApfFilter$Ra;->rdnssOptionToString(Ljava/lang/StringBuffer;I)V
PLandroid/net/apf/ApfFilter$Ra;->toString()Ljava/lang/String;
@@ -2869,19 +6170,14 @@ PLandroid/net/apf/ApfFilter$ReceiveThread;->updateStats(Landroid/net/apf/ApfFilt
PLandroid/net/apf/ApfFilter;->-get1(Landroid/net/apf/ApfFilter;)Landroid/net/metrics/IpConnectivityLog;
PLandroid/net/apf/ApfFilter;->-wrap0(Landroid/net/apf/ApfFilter;)J
PLandroid/net/apf/ApfFilter;->-wrap2(Landroid/net/apf/ApfFilter;Ljava/lang/String;)V
-PLandroid/net/apf/ApfFilter;-><init>(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;ZLandroid/net/metrics/IpConnectivityLog;)V
-PLandroid/net/apf/ApfFilter;->beginProgramLocked()Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfFilter;->currentTimeSeconds()J
+PLandroid/net/apf/ApfFilter;-><init>(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;ZZLandroid/net/metrics/IpConnectivityLog;)V
+PLandroid/net/apf/ApfFilter;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
PLandroid/net/apf/ApfFilter;->findIPv4LinkAddress(Landroid/net/LinkProperties;)Landroid/net/LinkAddress;
-PLandroid/net/apf/ApfFilter;->generateArpFilterLocked(Landroid/net/apf/ApfGenerator;)V
-PLandroid/net/apf/ApfFilter;->generateIPv4FilterLocked(Landroid/net/apf/ApfGenerator;)V
-PLandroid/net/apf/ApfFilter;->generateIPv6FilterLocked(Landroid/net/apf/ApfGenerator;)V
PLandroid/net/apf/ApfFilter;->getUniqueNumberLocked()J
-PLandroid/net/apf/ApfFilter;->installNewProgramLocked()V
PLandroid/net/apf/ApfFilter;->ipv4BroadcastAddress([BI)I
PLandroid/net/apf/ApfFilter;->log(Ljava/lang/String;)V
PLandroid/net/apf/ApfFilter;->logApfProgramEventLocked(J)V
-PLandroid/net/apf/ApfFilter;->maybeCreate(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;Z)Landroid/net/apf/ApfFilter;
+PLandroid/net/apf/ApfFilter;->maybeCreate(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;ZZ)Landroid/net/apf/ApfFilter;
PLandroid/net/apf/ApfFilter;->maybeStartFilter()V
PLandroid/net/apf/ApfFilter;->processRa([BI)Landroid/net/apf/ApfFilter$ProcessRaResult;
PLandroid/net/apf/ApfFilter;->purgeExpiredRasLocked()V
@@ -2889,52 +6185,23 @@ PLandroid/net/apf/ApfFilter;->setLinkProperties(Landroid/net/LinkProperties;)V
PLandroid/net/apf/ApfFilter;->setMulticastFilter(Z)V
PLandroid/net/apf/ApfFilter;->shouldInstallnewProgram()Z
PLandroid/net/apf/ApfGenerator$ExtendedOpcodes;-><init>(Ljava/lang/String;II)V
-PLandroid/net/apf/ApfGenerator$Instruction;-><init>(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;)V
-PLandroid/net/apf/ApfGenerator$Instruction;-><init>(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;Landroid/net/apf/ApfGenerator$Register;)V
-PLandroid/net/apf/ApfGenerator$Instruction;->calculateImmSize(IZ)B
-PLandroid/net/apf/ApfGenerator$Instruction;->generate([B)V
-PLandroid/net/apf/ApfGenerator$Instruction;->generateImmSizeField()B
-PLandroid/net/apf/ApfGenerator$Instruction;->generateInstructionByte()B
-PLandroid/net/apf/ApfGenerator$Instruction;->setCompareBytes([B)V
-PLandroid/net/apf/ApfGenerator$Instruction;->setImm(IZ)V
-PLandroid/net/apf/ApfGenerator$Instruction;->setLabel(Ljava/lang/String;)V
-PLandroid/net/apf/ApfGenerator$Instruction;->setSignedImm(I)V
-PLandroid/net/apf/ApfGenerator$Instruction;->setTargetLabel(Ljava/lang/String;)V
-PLandroid/net/apf/ApfGenerator$Instruction;->setUnsignedImm(I)V
-PLandroid/net/apf/ApfGenerator$Instruction;->writeValue(I[BI)I
PLandroid/net/apf/ApfGenerator$Opcodes;-><init>(Ljava/lang/String;II)V
PLandroid/net/apf/ApfGenerator$Register;-><init>(Ljava/lang/String;II)V
-PLandroid/net/apf/ApfGenerator;->-get0(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction;
-PLandroid/net/apf/ApfGenerator;->-get1(Landroid/net/apf/ApfGenerator;)Ljava/util/HashMap;
-PLandroid/net/apf/ApfGenerator;->-get2(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction;
-PLandroid/net/apf/ApfGenerator;-><init>()V
PLandroid/net/apf/ApfGenerator;->addAddR1()Landroid/net/apf/ApfGenerator;
PLandroid/net/apf/ApfGenerator;->addAnd(I)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addInstruction(Landroid/net/apf/ApfGenerator$Instruction;)V
-PLandroid/net/apf/ApfGenerator;->addJump(Ljava/lang/String;)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addJumpIfBytesNotEqual(Landroid/net/apf/ApfGenerator$Register;[BLjava/lang/String;)Landroid/net/apf/ApfGenerator;
PLandroid/net/apf/ApfGenerator;->addJumpIfR0AnyBitsSet(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addJumpIfR0Equals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addJumpIfR0GreaterThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addJumpIfR0LessThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addJumpIfR0NotEquals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addLoad16(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
PLandroid/net/apf/ApfGenerator;->addLoad16Indexed(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addLoad32(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addLoad8(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addLoadFromMemory(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->addLoadImmediate(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator;
-PLandroid/net/apf/ApfGenerator;->defineLabel(Ljava/lang/String;)Landroid/net/apf/ApfGenerator;
PLandroid/net/apf/ApfGenerator;->programLengthOverEstimate()I
PLandroid/net/apf/ApfGenerator;->setApfVersion(I)Z
PLandroid/net/dhcp/DhcpAckPacket;-><init>(ISZLjava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;[B)V
-PLandroid/net/dhcp/DhcpAckPacket;->toString()Ljava/lang/String;
PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;-><init>(Landroid/net/dhcp/DhcpClient;)V
PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;->enter()V
PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;->processMessage(Landroid/os/Message;)Z
PLandroid/net/dhcp/DhcpClient$DhcpBoundState;-><init>(Landroid/net/dhcp/DhcpClient;)V
PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->enter()V
+PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->exit()V
PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->logTimeToBoundState()V
+PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->processMessage(Landroid/os/Message;)Z
PLandroid/net/dhcp/DhcpClient$DhcpHaveLeaseState;-><init>(Landroid/net/dhcp/DhcpClient;)V
PLandroid/net/dhcp/DhcpClient$DhcpHaveLeaseState;->processMessage(Landroid/os/Message;)Z
PLandroid/net/dhcp/DhcpClient$DhcpInitRebootState;-><init>(Landroid/net/dhcp/DhcpClient;)V
@@ -2943,9 +6210,14 @@ PLandroid/net/dhcp/DhcpClient$DhcpInitState;->enter()V
PLandroid/net/dhcp/DhcpClient$DhcpInitState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V
PLandroid/net/dhcp/DhcpClient$DhcpInitState;->sendPacket()Z
PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;-><init>(Landroid/net/dhcp/DhcpClient;)V
+PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->enter()V
+PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V
+PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->sendPacket()Z
PLandroid/net/dhcp/DhcpClient$DhcpRebindingState;-><init>(Landroid/net/dhcp/DhcpClient;)V
PLandroid/net/dhcp/DhcpClient$DhcpRebootingState;-><init>(Landroid/net/dhcp/DhcpClient;)V
PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;-><init>(Landroid/net/dhcp/DhcpClient;)V
+PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;->packetDestination()Ljava/net/Inet4Address;
+PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;->processMessage(Landroid/os/Message;)Z
PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;-><init>(Landroid/net/dhcp/DhcpClient;)V
PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V
PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;->sendPacket()Z
@@ -2986,10 +6258,12 @@ PLandroid/net/dhcp/DhcpClient;->-get16(Landroid/net/dhcp/DhcpClient;)Landroid/ne
PLandroid/net/dhcp/DhcpClient;->-get17(Landroid/net/dhcp/DhcpClient;)Z
PLandroid/net/dhcp/DhcpClient;->-get2(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State;
PLandroid/net/dhcp/DhcpClient;->-get20(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/WakeupMessage;
+PLandroid/net/dhcp/DhcpClient;->-get22(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State;
PLandroid/net/dhcp/DhcpClient;->-get23(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State;
PLandroid/net/dhcp/DhcpClient;->-get4(Landroid/net/dhcp/DhcpClient;)Landroid/net/DhcpResults;
PLandroid/net/dhcp/DhcpClient;->-get7(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State;
PLandroid/net/dhcp/DhcpClient;->-get9(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/WakeupMessage;
+PLandroid/net/dhcp/DhcpClient;->-set0(Landroid/net/dhcp/DhcpClient;J)J
PLandroid/net/dhcp/DhcpClient;->-set1(Landroid/net/dhcp/DhcpClient;J)J
PLandroid/net/dhcp/DhcpClient;->-set2(Landroid/net/dhcp/DhcpClient;Landroid/net/DhcpResults;)Landroid/net/DhcpResults;
PLandroid/net/dhcp/DhcpClient;->-set3(Landroid/net/dhcp/DhcpClient;Landroid/net/dhcp/DhcpClient$ReceiveThread;)Landroid/net/dhcp/DhcpClient$ReceiveThread;
@@ -3040,39 +6314,25 @@ PLandroid/net/dhcp/DhcpPacket;->addTlv(Ljava/nio/ByteBuffer;B[B)V
PLandroid/net/dhcp/DhcpPacket;->addTlvEnd(Ljava/nio/ByteBuffer;)V
PLandroid/net/dhcp/DhcpPacket;->buildDiscoverPacket(IIS[BZ[B)Ljava/nio/ByteBuffer;
PLandroid/net/dhcp/DhcpPacket;->buildRequestPacket(IISLjava/net/Inet4Address;Z[BLjava/net/Inet4Address;Ljava/net/Inet4Address;[BLjava/lang/String;)Ljava/nio/ByteBuffer;
-PLandroid/net/dhcp/DhcpPacket;->checksum(Ljava/nio/ByteBuffer;III)I
-PLandroid/net/dhcp/DhcpPacket;->decodeFullPacket(Ljava/nio/ByteBuffer;I)Landroid/net/dhcp/DhcpPacket;
PLandroid/net/dhcp/DhcpPacket;->decodeFullPacket([BII)Landroid/net/dhcp/DhcpPacket;
-PLandroid/net/dhcp/DhcpPacket;->fillInPacket(ILjava/net/Inet4Address;Ljava/net/Inet4Address;SSLjava/nio/ByteBuffer;BZ)V
PLandroid/net/dhcp/DhcpPacket;->getClientId()[B
PLandroid/net/dhcp/DhcpPacket;->getClientMac()[B
PLandroid/net/dhcp/DhcpPacket;->getHostname()Ljava/lang/String;
PLandroid/net/dhcp/DhcpPacket;->getLeaseTimeMillis()J
PLandroid/net/dhcp/DhcpPacket;->getTransactionId()I
PLandroid/net/dhcp/DhcpPacket;->getVendorId()Ljava/lang/String;
-PLandroid/net/dhcp/DhcpPacket;->intAbs(S)I
PLandroid/net/dhcp/DhcpPacket;->isPacketToOrFromClient(SS)Z
-PLandroid/net/dhcp/DhcpPacket;->macToString([B)Ljava/lang/String;
PLandroid/net/dhcp/DhcpPacket;->readAsciiString(Ljava/nio/ByteBuffer;IZ)Ljava/lang/String;
-PLandroid/net/dhcp/DhcpPacket;->readIpAddress(Ljava/nio/ByteBuffer;)Ljava/net/Inet4Address;
PLandroid/net/dhcp/DhcpPacket;->toDhcpResults()Landroid/net/DhcpResults;
PLandroid/net/dhcp/DhcpPacket;->toString()Ljava/lang/String;
PLandroid/net/dhcp/DhcpRequestPacket;-><init>(ISLjava/net/Inet4Address;[BZ)V
PLandroid/net/dhcp/DhcpRequestPacket;->buildPacket(ISS)Ljava/nio/ByteBuffer;
PLandroid/net/dhcp/DhcpRequestPacket;->finishPacket(Ljava/nio/ByteBuffer;)V
PLandroid/net/dhcp/DhcpRequestPacket;->toString()Ljava/lang/String;
-PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->$m$0()V
PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->$m$1()V
-PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V
-PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->run()V
-PLandroid/net/ip/-$Lambda$Ew7nO2XMmp8bwulVlFTiHphyunQ;-><init>(Ljava/lang/Object;)V
+PLandroid/net/ip/-$Lambda$Ew7nO2XMmp8bwulVlFTiHphyunQ$2;-><init>(Ljava/lang/Object;)V
PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;-><init>(Landroid/net/ip/ConnectivityPacketTracker;I[BI)V
-PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->addLogEntry(Ljava/lang/String;)V
PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->createSocket()Ljava/io/FileDescriptor;
-PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->handlePacket([BI)V
-PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->lambda$-android_net_ip_ConnectivityPacketTracker$PacketListener_4824(Ljava/lang/String;)V
-PLandroid/net/ip/ConnectivityPacketTracker;->-get0(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/os/Handler;
-PLandroid/net/ip/ConnectivityPacketTracker;->-get1(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/util/LocalLog;
PLandroid/net/ip/ConnectivityPacketTracker;-><init>(Ljava/net/NetworkInterface;Landroid/util/LocalLog;)V
PLandroid/net/ip/ConnectivityPacketTracker;->start()V
PLandroid/net/ip/IpManager$1;-><init>(Landroid/net/ip/IpManager;)V
@@ -3080,13 +6340,13 @@ PLandroid/net/ip/IpManager$1;->update()V
PLandroid/net/ip/IpManager$2;-><init>(Landroid/net/ip/IpManager;Ljava/lang/String;Lcom/android/server/net/NetlinkTracker$Callback;)V
PLandroid/net/ip/IpManager$2;->interfaceAdded(Ljava/lang/String;)V
PLandroid/net/ip/IpManager$2;->interfaceRemoved(Ljava/lang/String;)V
-PLandroid/net/ip/IpManager$2;->lambda$-android_net_ip_IpManager$2_18952(Ljava/lang/String;)V
+PLandroid/net/ip/IpManager$2;->lambda$-android_net_ip_IpManager$2_26299(Ljava/lang/String;)V
PLandroid/net/ip/IpManager$2;->logMsg(Ljava/lang/String;)V
PLandroid/net/ip/IpManager$3;-><init>(Landroid/net/ip/IpManager;)V
PLandroid/net/ip/IpManager$Callback;-><init>()V
+PLandroid/net/ip/IpManager$InitialConfiguration;->copy(Landroid/net/ip/IpManager$InitialConfiguration;)Landroid/net/ip/IpManager$InitialConfiguration;
PLandroid/net/ip/IpManager$LoggingCallbackWrapper;-><init>(Landroid/net/ip/IpManager;Landroid/net/ip/IpManager$Callback;)V
PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->installPacketFilter([B)V
-PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->log(Ljava/lang/String;)V
PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onLinkPropertiesChange(Landroid/net/LinkProperties;)V
PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onNewDhcpResults(Landroid/net/DhcpResults;)V
PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onPostDhcpAction()V
@@ -3104,12 +6364,12 @@ PLandroid/net/ip/IpManager$ProvisioningConfiguration$Builder;->withApfCapabiliti
PLandroid/net/ip/IpManager$ProvisioningConfiguration$Builder;->withPreDhcpAction()Landroid/net/ip/IpManager$ProvisioningConfiguration$Builder;
PLandroid/net/ip/IpManager$ProvisioningConfiguration;-><init>()V
PLandroid/net/ip/IpManager$ProvisioningConfiguration;-><init>(Landroid/net/ip/IpManager$ProvisioningConfiguration;)V
+PLandroid/net/ip/IpManager$ProvisioningConfiguration;->isValid()Z
PLandroid/net/ip/IpManager$ProvisioningConfiguration;->toString()Ljava/lang/String;
PLandroid/net/ip/IpManager$RunningState;-><init>(Landroid/net/ip/IpManager;)V
PLandroid/net/ip/IpManager$RunningState;->createPacketTracker()Landroid/net/ip/ConnectivityPacketTracker;
PLandroid/net/ip/IpManager$RunningState;->ensureDhcpAction()V
PLandroid/net/ip/IpManager$RunningState;->enter()V
-PLandroid/net/ip/IpManager$RunningState;->processMessage(Landroid/os/Message;)Z
PLandroid/net/ip/IpManager$RunningState;->stopDhcpAction()V
PLandroid/net/ip/IpManager$StartedState;-><init>(Landroid/net/ip/IpManager;)V
PLandroid/net/ip/IpManager$StartedState;->enter()V
@@ -3120,22 +6380,23 @@ PLandroid/net/ip/IpManager$StoppedState;->processMessage(Landroid/os/Message;)Z
PLandroid/net/ip/IpManager$StoppingState;-><init>(Landroid/net/ip/IpManager;)V
PLandroid/net/ip/IpManager;->-get0(Landroid/net/ip/IpManager;)Landroid/net/apf/ApfFilter;
PLandroid/net/ip/IpManager;->-get1(Landroid/net/ip/IpManager;)Ljava/lang/String;
-PLandroid/net/ip/IpManager;->-get10(Landroid/net/ip/IpManager;)Landroid/net/ip/IpManager$MessageHandlingLogger;
-PLandroid/net/ip/IpManager;->-get11(Landroid/net/ip/IpManager;)Z
-PLandroid/net/ip/IpManager;->-get12(Landroid/net/ip/IpManager;)Ljava/net/NetworkInterface;
-PLandroid/net/ip/IpManager;->-get13(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage;
-PLandroid/net/ip/IpManager;->-get14(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State;
-PLandroid/net/ip/IpManager;->-get15(Landroid/net/ip/IpManager;)J
-PLandroid/net/ip/IpManager;->-get16(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State;
-PLandroid/net/ip/IpManager;->-get19(Landroid/net/ip/IpManager;)Ljava/lang/String;
+PLandroid/net/ip/IpManager;->-get10(Landroid/net/ip/IpManager;)Landroid/net/util/SharedLog;
+PLandroid/net/ip/IpManager;->-get11(Landroid/net/ip/IpManager;)Landroid/net/ip/IpManager$MessageHandlingLogger;
+PLandroid/net/ip/IpManager;->-get12(Landroid/net/ip/IpManager;)Z
+PLandroid/net/ip/IpManager;->-get13(Landroid/net/ip/IpManager;)Ljava/net/NetworkInterface;
+PLandroid/net/ip/IpManager;->-get14(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage;
+PLandroid/net/ip/IpManager;->-get15(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State;
+PLandroid/net/ip/IpManager;->-get16(Landroid/net/ip/IpManager;)J
+PLandroid/net/ip/IpManager;->-get17(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State;
PLandroid/net/ip/IpManager;->-get2(Landroid/net/ip/IpManager;)Landroid/net/ip/IpManager$ProvisioningConfiguration;
+PLandroid/net/ip/IpManager;->-get20(Landroid/net/ip/IpManager;)Ljava/lang/String;
PLandroid/net/ip/IpManager;->-get3(Landroid/net/ip/IpManager;)Landroid/util/LocalLog;
-PLandroid/net/ip/IpManager;->-get4(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage;
-PLandroid/net/ip/IpManager;->-get5(Landroid/net/ip/IpManager;)Landroid/net/dhcp/DhcpClient;
-PLandroid/net/ip/IpManager;->-get6(Landroid/net/ip/IpManager;)Ljava/lang/String;
-PLandroid/net/ip/IpManager;->-get7(Landroid/net/ip/IpManager;)Landroid/net/ip/IpReachabilityMonitor;
-PLandroid/net/ip/IpManager;->-get8(Landroid/net/ip/IpManager;)Landroid/net/LinkProperties;
-PLandroid/net/ip/IpManager;->-get9(Landroid/net/ip/IpManager;)Landroid/util/LocalLog;
+PLandroid/net/ip/IpManager;->-get4(Landroid/net/ip/IpManager;)Landroid/content/Context;
+PLandroid/net/ip/IpManager;->-get5(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage;
+PLandroid/net/ip/IpManager;->-get6(Landroid/net/ip/IpManager;)Landroid/net/dhcp/DhcpClient;
+PLandroid/net/ip/IpManager;->-get7(Landroid/net/ip/IpManager;)Ljava/lang/String;
+PLandroid/net/ip/IpManager;->-get8(Landroid/net/ip/IpManager;)Landroid/net/ip/IpReachabilityMonitor;
+PLandroid/net/ip/IpManager;->-get9(Landroid/net/ip/IpManager;)Landroid/net/LinkProperties;
PLandroid/net/ip/IpManager;->-getandroid-net-LinkProperties$ProvisioningChangeSwitchesValues()[I
PLandroid/net/ip/IpManager;->-set0(Landroid/net/ip/IpManager;Landroid/net/apf/ApfFilter;)Landroid/net/apf/ApfFilter;
PLandroid/net/ip/IpManager;->-set1(Landroid/net/ip/IpManager;Landroid/net/ip/IpManager$ProvisioningConfiguration;)Landroid/net/ip/IpManager$ProvisioningConfiguration;
@@ -3143,36 +6404,33 @@ PLandroid/net/ip/IpManager;->-set3(Landroid/net/ip/IpManager;Landroid/net/ProxyI
PLandroid/net/ip/IpManager;->-set5(Landroid/net/ip/IpManager;Z)Z
PLandroid/net/ip/IpManager;->-set6(Landroid/net/ip/IpManager;J)J
PLandroid/net/ip/IpManager;->-set7(Landroid/net/ip/IpManager;Ljava/lang/String;)Ljava/lang/String;
-PLandroid/net/ip/IpManager;->-wrap0(Landroid/net/ip/IpManager;Z)Z
-PLandroid/net/ip/IpManager;->-wrap1(Landroid/net/ip/IpManager;Landroid/net/LinkAddress;)Z
-PLandroid/net/ip/IpManager;->-wrap13(Landroid/net/ip/IpManager;)V
+PLandroid/net/ip/IpManager;->-wrap1(Landroid/net/ip/IpManager;Z)Z
+PLandroid/net/ip/IpManager;->-wrap10(Landroid/net/ip/IpManager;Landroid/net/DhcpResults;)V
PLandroid/net/ip/IpManager;->-wrap14(Landroid/net/ip/IpManager;)V
-PLandroid/net/ip/IpManager;->-wrap2(Landroid/net/ip/IpManager;)Z
+PLandroid/net/ip/IpManager;->-wrap15(Landroid/net/ip/IpManager;)V
+PLandroid/net/ip/IpManager;->-wrap2(Landroid/net/ip/IpManager;Landroid/net/LinkAddress;)Z
PLandroid/net/ip/IpManager;->-wrap3(Landroid/net/ip/IpManager;)Z
PLandroid/net/ip/IpManager;->-wrap4(Landroid/net/ip/IpManager;)Z
-PLandroid/net/ip/IpManager;->-wrap9(Landroid/net/ip/IpManager;Landroid/net/DhcpResults;)V
+PLandroid/net/ip/IpManager;->-wrap5(Landroid/net/ip/IpManager;)Z
PLandroid/net/ip/IpManager;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;)V
-PLandroid/net/ip/IpManager;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;Landroid/os/INetworkManagementService;)V
-PLandroid/net/ip/IpManager;->addAllReachableDnsServers(Landroid/net/LinkProperties;Ljava/lang/Iterable;)V
-PLandroid/net/ip/IpManager;->assembleLinkProperties()Landroid/net/LinkProperties;
+PLandroid/net/ip/IpManager;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;Landroid/os/INetworkManagementService;Landroid/net/INetd;)V
PLandroid/net/ip/IpManager;->buildProvisioningConfiguration()Landroid/net/ip/IpManager$ProvisioningConfiguration$Builder;
PLandroid/net/ip/IpManager;->compareProvisioning(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)Landroid/net/LinkProperties$ProvisioningChange;
PLandroid/net/ip/IpManager;->completedPreDhcpAction()V
PLandroid/net/ip/IpManager;->configureAndStartStateMachine()V
PLandroid/net/ip/IpManager;->confirmConfiguration()V
PLandroid/net/ip/IpManager;->dispatchCallback(Landroid/net/LinkProperties$ProvisioningChange;Landroid/net/LinkProperties;)V
-PLandroid/net/ip/IpManager;->getLogRecString(Landroid/os/Message;)Ljava/lang/String;
+PLandroid/net/ip/IpManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLandroid/net/ip/IpManager;->getNetworkInterface()V
-PLandroid/net/ip/IpManager;->getWhatToString(I)Ljava/lang/String;
PLandroid/net/ip/IpManager;->handleIPv4Success(Landroid/net/DhcpResults;)V
PLandroid/net/ip/IpManager;->handleLinkPropertiesUpdate(Z)Z
-PLandroid/net/ip/IpManager;->isProvisioned(Landroid/net/LinkProperties;)Z
-PLandroid/net/ip/IpManager;->linkPropertiesUnchanged(Landroid/net/LinkProperties;)Z
+PLandroid/net/ip/IpManager;->isProvisioned(Landroid/net/LinkProperties;Landroid/net/ip/IpManager$InitialConfiguration;)Z
PLandroid/net/ip/IpManager;->recordLogRec(Landroid/os/Message;)Z
PLandroid/net/ip/IpManager;->recordMetric(I)V
PLandroid/net/ip/IpManager;->resetLinkProperties()V
PLandroid/net/ip/IpManager;->setHttpProxy(Landroid/net/ProxyInfo;)V
PLandroid/net/ip/IpManager;->setIPv4Address(Landroid/net/LinkAddress;)Z
+PLandroid/net/ip/IpManager;->setIPv6AddrGenModeIfSupported()V
PLandroid/net/ip/IpManager;->setLinkProperties(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$ProvisioningChange;
PLandroid/net/ip/IpManager;->setMulticastFilter(Z)V
PLandroid/net/ip/IpManager;->setTcpBufferSizes(Ljava/lang/String;)V
@@ -3186,59 +6444,14 @@ PLandroid/net/ip/IpManager;->stopAllIP()V
PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;-><init>(Landroid/net/ip/IpReachabilityMonitor;)V
PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;-><init>(Landroid/net/ip/IpReachabilityMonitor;Landroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;)V
PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->clearNetlinkSocket()V
-PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->evaluateRtNetlinkNeighborMessage(Landroid/net/netlink/RtNetlinkNeighborMessage;J)V
-PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->parseNetlinkMessageBuffer(Ljava/nio/ByteBuffer;J)V
-PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->recvKernelReply()Ljava/nio/ByteBuffer;
-PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->run()V
PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->setupNetlinkSocket()V
-PLandroid/net/ip/IpReachabilityMonitor;->-get0(Landroid/net/ip/IpReachabilityMonitor;)I
-PLandroid/net/ip/IpReachabilityMonitor;->-get1(Landroid/net/ip/IpReachabilityMonitor;)Ljava/util/Map;
-PLandroid/net/ip/IpReachabilityMonitor;->-get2(Landroid/net/ip/IpReachabilityMonitor;)Ljava/lang/Object;
-PLandroid/net/ip/IpReachabilityMonitor;->-get3(Landroid/net/ip/IpReachabilityMonitor;)Z
PLandroid/net/ip/IpReachabilityMonitor;->-set0(Landroid/net/ip/IpReachabilityMonitor;Z)Z
-PLandroid/net/ip/IpReachabilityMonitor;->-wrap0(Landroid/net/ip/IpReachabilityMonitor;Ljava/net/InetAddress;)Z
-PLandroid/net/ip/IpReachabilityMonitor;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpReachabilityMonitor$Callback;Landroid/net/util/MultinetworkPolicyTracker;)V
+PLandroid/net/ip/IpReachabilityMonitor;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/net/util/SharedLog;Landroid/net/ip/IpReachabilityMonitor$Callback;Landroid/net/util/MultinetworkPolicyTracker;)V
PLandroid/net/ip/IpReachabilityMonitor;->getNeighborStateLocked(Ljava/net/InetAddress;)S
-PLandroid/net/ip/IpReachabilityMonitor;->isOnLink(Ljava/util/List;Ljava/net/InetAddress;)Z
-PLandroid/net/ip/IpReachabilityMonitor;->isWatching(Ljava/net/InetAddress;)Z
PLandroid/net/ip/IpReachabilityMonitor;->probeAll()V
-PLandroid/net/ip/IpReachabilityMonitor;->updateLinkProperties(Landroid/net/LinkProperties;)V
PLandroid/net/metrics/INetdEventListener$Stub;-><init>()V
-PLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(I)I
-PLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(S)I
-PLandroid/net/netlink/NetlinkConstants;->hexify([B)Ljava/lang/String;
-PLandroid/net/netlink/NetlinkConstants;->stringForNlMsgType(S)Ljava/lang/String;
-PLandroid/net/netlink/NetlinkMessage;-><init>(Landroid/net/netlink/StructNlMsgHdr;)V
-PLandroid/net/netlink/NetlinkMessage;->getHeader()Landroid/net/netlink/StructNlMsgHdr;
-PLandroid/net/netlink/NetlinkMessage;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/NetlinkMessage;
PLandroid/net/netlink/NetlinkSocket;-><init>(I)V
PLandroid/net/netlink/NetlinkSocket;->bind(Landroid/system/NetlinkSocketAddress;)V
-PLandroid/net/netlink/NetlinkSocket;->checkTimeout(J)V
-PLandroid/net/netlink/NetlinkSocket;->recvMessage(IJ)Ljava/nio/ByteBuffer;
-PLandroid/net/netlink/NetlinkSocket;->recvMessage(J)Ljava/nio/ByteBuffer;
-PLandroid/net/netlink/RtNetlinkNeighborMessage;-><init>(Landroid/net/netlink/StructNlMsgHdr;)V
-PLandroid/net/netlink/RtNetlinkNeighborMessage;->findNextAttrOfType(SLjava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr;
-PLandroid/net/netlink/RtNetlinkNeighborMessage;->getDestination()Ljava/net/InetAddress;
-PLandroid/net/netlink/RtNetlinkNeighborMessage;->getLinkLayerAddress()[B
-PLandroid/net/netlink/RtNetlinkNeighborMessage;->getNdHeader()Landroid/net/netlink/StructNdMsg;
-PLandroid/net/netlink/RtNetlinkNeighborMessage;->parse(Landroid/net/netlink/StructNlMsgHdr;Ljava/nio/ByteBuffer;)Landroid/net/netlink/RtNetlinkNeighborMessage;
-PLandroid/net/netlink/StructNdMsg;-><init>()V
-PLandroid/net/netlink/StructNdMsg;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z
-PLandroid/net/netlink/StructNdMsg;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdMsg;
-PLandroid/net/netlink/StructNdMsg;->stringForNudState(S)Ljava/lang/String;
-PLandroid/net/netlink/StructNdaCacheInfo;-><init>()V
-PLandroid/net/netlink/StructNdaCacheInfo;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z
-PLandroid/net/netlink/StructNdaCacheInfo;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdaCacheInfo;
-PLandroid/net/netlink/StructNlAttr;-><init>()V
-PLandroid/net/netlink/StructNlAttr;->getAlignedLength()I
-PLandroid/net/netlink/StructNlAttr;->getValueAsByteBuffer()Ljava/nio/ByteBuffer;
-PLandroid/net/netlink/StructNlAttr;->getValueAsInetAddress()Ljava/net/InetAddress;
-PLandroid/net/netlink/StructNlAttr;->getValueAsInt(I)I
-PLandroid/net/netlink/StructNlAttr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr;
-PLandroid/net/netlink/StructNlMsgHdr;-><init>()V
-PLandroid/net/netlink/StructNlMsgHdr;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z
-PLandroid/net/netlink/StructNlMsgHdr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlMsgHdr;
PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;->$m$0()V
PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;->run()V
@@ -3246,27 +6459,11 @@ PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;->$m$0()V
PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;-><init>(Ljava/lang/Object;)V
PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;->run()V
PLandroid/net/util/BlockingSocketReader;-><init>(I)V
-PLandroid/net/util/BlockingSocketReader;->isRunning()Z
PLandroid/net/util/BlockingSocketReader;->lambda$-android_net_util_BlockingSocketReader_2194()V
-PLandroid/net/util/BlockingSocketReader;->mainLoop()V
PLandroid/net/util/BlockingSocketReader;->start()Z
-PLandroid/net/util/ConnectivityPacketSummary;-><init>([B[BI)V
-PLandroid/net/util/ConnectivityPacketSummary;->getIPv4AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String;
-PLandroid/net/util/ConnectivityPacketSummary;->getIPv6AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String;
-PLandroid/net/util/ConnectivityPacketSummary;->getIpAddressString(Ljava/nio/ByteBuffer;I)Ljava/lang/String;
-PLandroid/net/util/ConnectivityPacketSummary;->parseARP(Ljava/util/StringJoiner;)V
PLandroid/net/util/ConnectivityPacketSummary;->parseDHCPv4(Ljava/util/StringJoiner;)V
-PLandroid/net/util/ConnectivityPacketSummary;->parseEther(Ljava/util/StringJoiner;)V
-PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6(Ljava/util/StringJoiner;)V
-PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborDiscoveryOptions(Ljava/util/StringJoiner;)V
-PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborMessage(Ljava/util/StringJoiner;)V
PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6RouterAdvertisement(Ljava/util/StringJoiner;)V
PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6RouterSolicitation(Ljava/util/StringJoiner;)V
-PLandroid/net/util/ConnectivityPacketSummary;->parseIPv4(Ljava/util/StringJoiner;)V
-PLandroid/net/util/ConnectivityPacketSummary;->parseIPv6(Ljava/util/StringJoiner;)V
-PLandroid/net/util/ConnectivityPacketSummary;->parseUDP(Ljava/util/StringJoiner;)V
-PLandroid/net/util/ConnectivityPacketSummary;->summarize([B[BI)Ljava/lang/String;
-PLandroid/net/util/ConnectivityPacketSummary;->toString()Ljava/lang/String;
PLandroid/net/util/MultinetworkPolicyTracker$1;-><init>(Landroid/net/util/MultinetworkPolicyTracker;)V
PLandroid/net/util/MultinetworkPolicyTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLandroid/net/util/MultinetworkPolicyTracker$SettingObserver;-><init>(Landroid/net/util/MultinetworkPolicyTracker;)V
@@ -3280,20 +6477,20 @@ PLandroid/net/util/MultinetworkPolicyTracker;->reevaluate()V
PLandroid/net/util/MultinetworkPolicyTracker;->start()V
PLandroid/net/util/MultinetworkPolicyTracker;->updateAvoidBadWifi()Z
PLandroid/net/util/MultinetworkPolicyTracker;->updateMeteredMultipathPreference()V
+PLandroid/net/util/NetdService;->get()Landroid/net/INetd;
+PLandroid/net/util/NetdService;->get(J)Landroid/net/INetd;
+PLandroid/net/util/NetdService;->getInstance()Landroid/net/INetd;
PLandroid/net/util/NetworkConstants;->asByte(I)B
PLandroid/net/util/NetworkConstants;->asString(I)Ljava/lang/String;
-PLandroid/net/util/NetworkConstants;->asUint(B)I
-PLandroid/net/util/NetworkConstants;->asUint(S)I
+PLandroid/net/util/PrefixUtils;->addNonForwardablePrefixes(Ljava/util/Set;)V
+PLandroid/net/util/PrefixUtils;->pfx(Ljava/lang/String;)Landroid/net/IpPrefix;
PLandroid/net/util/SharedLog$Category;-><init>(Ljava/lang/String;I)V
PLandroid/net/util/SharedLog;-><init>(ILjava/lang/String;)V
PLandroid/net/util/SharedLog;-><init>(Landroid/util/LocalLog;Ljava/lang/String;Ljava/lang/String;)V
PLandroid/net/util/SharedLog;-><init>(Ljava/lang/String;)V
+PLandroid/net/util/SharedLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLandroid/net/util/SharedLog;->forSubComponent(Ljava/lang/String;)Landroid/net/util/SharedLog;
-PLandroid/net/util/SharedLog;->isRootLogInstance()Z
-PLandroid/net/util/SharedLog;->log(Ljava/lang/String;)V
-PLandroid/net/util/SharedLog;->logLine(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String;
PLandroid/net/util/SharedLog;->mark(Ljava/lang/String;)V
-PLandroid/net/util/SharedLog;->record(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String;
PLandroid/net/util/Stopwatch;-><init>()V
PLandroid/net/util/Stopwatch;->isRunning()Z
PLandroid/net/util/Stopwatch;->isStarted()Z
@@ -3306,43 +6503,29 @@ PLandroid/net/wifi/IClientInterface$Stub$Proxy;->asBinder()Landroid/os/IBinder;
PLandroid/net/wifi/IClientInterface$Stub$Proxy;->enableSupplicant()Z
PLandroid/net/wifi/IClientInterface$Stub$Proxy;->getInterfaceName()Ljava/lang/String;
PLandroid/net/wifi/IClientInterface$Stub$Proxy;->getWifiScannerImpl()Landroid/net/wifi/IWifiScannerImpl;
-PLandroid/net/wifi/IClientInterface$Stub$Proxy;->signalPoll()[I
PLandroid/net/wifi/IClientInterface$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IClientInterface;
-PLandroid/net/wifi/IInterfaceEventCallback$Stub;-><init>()V
-PLandroid/net/wifi/IInterfaceEventCallback$Stub;->asBinder()Landroid/os/IBinder;
PLandroid/net/wifi/IPnoScanEvent$Stub;-><init>()V
PLandroid/net/wifi/IPnoScanEvent$Stub;->asBinder()Landroid/os/IBinder;
PLandroid/net/wifi/IScanEvent$Stub;-><init>()V
PLandroid/net/wifi/IScanEvent$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/net/wifi/IScanEvent$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->abortScan()V
PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->getScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult;
-PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->scan(Lcom/android/server/wifi/wificond/SingleScanSettings;)Z
PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->subscribePnoScanEvents(Landroid/net/wifi/IPnoScanEvent;)V
PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->subscribeScanEvents(Landroid/net/wifi/IScanEvent;)V
PLandroid/net/wifi/IWifiScannerImpl$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScannerImpl;
PLandroid/net/wifi/IWificond$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-PLandroid/net/wifi/IWificond$Stub$Proxy;->GetClientInterfaces()Ljava/util/List;
-PLandroid/net/wifi/IWificond$Stub$Proxy;->RegisterCallback(Landroid/net/wifi/IInterfaceEventCallback;)V
PLandroid/net/wifi/IWificond$Stub$Proxy;->createClientInterface()Landroid/net/wifi/IClientInterface;
PLandroid/net/wifi/IWificond$Stub$Proxy;->tearDownInterfaces()V
PLandroid/net/wifi/IWificond$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWificond;
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$0(Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$1(Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$2(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;->$m$0(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;-><init>(JLjava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;->$m$0(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;-><init>(BZLjava/lang/Object;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->$m$0(Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;-><init>(ZIJ)V
-PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$0(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$1(Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$2(Landroid/net/INetworkManagementEventObserver;)V
@@ -3355,6 +6538,7 @@ PLcom/android/server/-$Lambda$AZbCJpvy__SzB8YDjhldiwCtqD8;->get(Lcom/android/ser
PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;->$m$0(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;-><init>()V
PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->$m$1()V
PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;->$m$0()V
PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;->run()V
@@ -3372,39 +6556,21 @@ PLcom/android/server/-$Lambda$o3e2BPeEiY4LSvdQI9l_B7RsPtQ;-><init>(Ljava/lang/Ob
PLcom/android/server/-$Lambda$qXtDhnbBL0MhXoSy7vXxLi-Juu4;-><init>(Ljava/lang/Object;)V
PLcom/android/server/AlarmManagerService$1;-><init>(Lcom/android/server/AlarmManagerService;)V
PLcom/android/server/AlarmManagerService$1;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I
-PLcom/android/server/AlarmManagerService$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/AlarmManagerService$2;-><init>(Lcom/android/server/AlarmManagerService;)V
-PLcom/android/server/AlarmManagerService$2;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
-PLcom/android/server/AlarmManagerService$2;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
PLcom/android/server/AlarmManagerService$2;->setTime(J)Z
-PLcom/android/server/AlarmManagerService$Alarm;-><init>(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V
-PLcom/android/server/AlarmManagerService$Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String;
PLcom/android/server/AlarmManagerService$AlarmHandler;-><init>(Lcom/android/server/AlarmManagerService;)V
-PLcom/android/server/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/AlarmManagerService$AlarmThread;-><init>(Lcom/android/server/AlarmManagerService;)V
-PLcom/android/server/AlarmManagerService$AlarmThread;->run()V
-PLcom/android/server/AlarmManagerService$Batch;->hasWakeups()Z
PLcom/android/server/AlarmManagerService$BatchTimeOrder;-><init>()V
PLcom/android/server/AlarmManagerService$BroadcastStats;-><init>(ILjava/lang/String;)V
PLcom/android/server/AlarmManagerService$ClockReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V
-PLcom/android/server/AlarmManagerService$ClockReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleDateChangedEvent()V
-PLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V
PLcom/android/server/AlarmManagerService$Constants;-><init>(Lcom/android/server/AlarmManagerService;Landroid/os/Handler;)V
PLcom/android/server/AlarmManagerService$Constants;->start(Landroid/content/ContentResolver;)V
PLcom/android/server/AlarmManagerService$Constants;->updateAllowWhileIdleMinTimeLocked()V
PLcom/android/server/AlarmManagerService$Constants;->updateAllowWhileIdleWhitelistDurationLocked()V
PLcom/android/server/AlarmManagerService$Constants;->updateConstants()V
PLcom/android/server/AlarmManagerService$DeliveryTracker;-><init>(Lcom/android/server/AlarmManagerService;)V
-PLcom/android/server/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
-PLcom/android/server/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V
-PLcom/android/server/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
-PLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/AlarmManagerService$InFlight;
-PLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/AlarmManagerService$InFlight;
-PLcom/android/server/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/AlarmManagerService$InFlight;)V
-PLcom/android/server/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/AlarmManagerService$InFlight;)V
PLcom/android/server/AlarmManagerService$FilterStats;-><init>(Lcom/android/server/AlarmManagerService$BroadcastStats;Ljava/lang/String;)V
-PLcom/android/server/AlarmManagerService$InFlight;-><init>(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Landroid/os/WorkSource;ILjava/lang/String;ILjava/lang/String;J)V
PLcom/android/server/AlarmManagerService$IncreasingTimeOrder;-><init>()V
PLcom/android/server/AlarmManagerService$InteractiveStateReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V
PLcom/android/server/AlarmManagerService$LocalService;-><init>(Lcom/android/server/AlarmManagerService;)V
@@ -3413,34 +6579,21 @@ PLcom/android/server/AlarmManagerService$PriorityClass;-><init>(Lcom/android/ser
PLcom/android/server/AlarmManagerService$UidObserver;-><init>(Lcom/android/server/AlarmManagerService;)V
PLcom/android/server/AlarmManagerService$UidObserver;->onUidIdle(IZ)V
PLcom/android/server/AlarmManagerService$UninstallReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V
-PLcom/android/server/AlarmManagerService;->-get0(Lcom/android/server/AlarmManagerService;)Landroid/content/Intent;
-PLcom/android/server/AlarmManagerService;->-set0(Lcom/android/server/AlarmManagerService;J)J
-PLcom/android/server/AlarmManagerService;->-wrap0(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats;
+PLcom/android/server/AlarmManagerService;->-get1(Lcom/android/server/AlarmManagerService;)I
+PLcom/android/server/AlarmManagerService;->-get2(Lcom/android/server/AlarmManagerService;)I
+PLcom/android/server/AlarmManagerService;->-set1(Lcom/android/server/AlarmManagerService;I)I
+PLcom/android/server/AlarmManagerService;->-set2(Lcom/android/server/AlarmManagerService;I)I
PLcom/android/server/AlarmManagerService;->-wrap1(Lcom/android/server/AlarmManagerService;ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats;
PLcom/android/server/AlarmManagerService;->-wrap2(Lcom/android/server/AlarmManagerService;JJ)I
-PLcom/android/server/AlarmManagerService;->-wrap4(Lcom/android/server/AlarmManagerService;J)I
-PLcom/android/server/AlarmManagerService;->-wrap5(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
-PLcom/android/server/AlarmManagerService;->-wrap7(Lcom/android/server/AlarmManagerService;)V
PLcom/android/server/AlarmManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V
PLcom/android/server/AlarmManagerService;->checkAllowNonWakeupDelayLocked(J)Z
-PLcom/android/server/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V
-PLcom/android/server/AlarmManagerService;->findFirstWakeupBatchLocked()Lcom/android/server/AlarmManagerService$Batch;
PLcom/android/server/AlarmManagerService;->getNextAlarmClockImpl(I)Landroid/app/AlarmManager$AlarmClockInfo;
-PLcom/android/server/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats;
-PLcom/android/server/AlarmManagerService;->getStatsLocked(Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats;
-PLcom/android/server/AlarmManagerService;->maxTriggerTime(JJJ)J
PLcom/android/server/AlarmManagerService;->onBootPhase(I)V
PLcom/android/server/AlarmManagerService;->onStart()V
PLcom/android/server/AlarmManagerService;->rebatchAllAlarms()V
PLcom/android/server/AlarmManagerService;->removeImpl(Landroid/app/PendingIntent;)V
PLcom/android/server/AlarmManagerService;->setDeviceIdleUserWhitelistImpl([I)V
-PLcom/android/server/AlarmManagerService;->setImplLocked(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;IZLandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V
-PLcom/android/server/AlarmManagerService;->setLocked(IJ)V
PLcom/android/server/AlarmManagerService;->setTimeZoneImpl(Ljava/lang/String;)V
-PLcom/android/server/AlarmManagerService;->setWakelockWorkSource(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;IZ)V
-PLcom/android/server/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;JJ)Z
-PLcom/android/server/AlarmManagerService;->updateNextAlarmClockLocked()V
PLcom/android/server/AnimationThread;-><init>()V
PLcom/android/server/AnimationThread;->ensureThreadLocked()V
PLcom/android/server/AnimationThread;->get()Lcom/android/server/AnimationThread;
@@ -3459,80 +6612,57 @@ PLcom/android/server/AppOpsService$1$1;->doInBackground([Ljava/lang/Void;)Ljava/
PLcom/android/server/AppOpsService$1;->run()V
PLcom/android/server/AppOpsService$2;-><init>(Lcom/android/server/AppOpsService;)V
PLcom/android/server/AppOpsService$3;-><init>(Lcom/android/server/AppOpsService;)V
-PLcom/android/server/AppOpsService$3;->getMountMode(ILjava/lang/String;)I
-PLcom/android/server/AppOpsService$3;->hasExternalStorage(ILjava/lang/String;)Z
+PLcom/android/server/AppOpsService$Callback;->binderDied()V
PLcom/android/server/AppOpsService$Callback;->unlinkToDeath()V
PLcom/android/server/AppOpsService$ClientRestrictionState;-><init>(Lcom/android/server/AppOpsService;Landroid/os/IBinder;)V
PLcom/android/server/AppOpsService$ClientRestrictionState;->destroy()V
PLcom/android/server/AppOpsService$ClientRestrictionState;->isDefault()Z
PLcom/android/server/AppOpsService$ClientRestrictionState;->setRestriction(IZ[Ljava/lang/String;I)Z
PLcom/android/server/AppOpsService$ClientState;-><init>(Lcom/android/server/AppOpsService;Landroid/os/IBinder;)V
+PLcom/android/server/AppOpsService$ClientState;->binderDied()V
PLcom/android/server/AppOpsService$UidState;->clear()V
PLcom/android/server/AppOpsService$UidState;->isDefault()Z
-PLcom/android/server/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I
-PLcom/android/server/AppOpsService;->checkOperation(IILjava/lang/String;)I
-PLcom/android/server/AppOpsService;->checkRestrictionLocked(IIILjava/lang/String;)I
PLcom/android/server/AppOpsService;->checkSystemUid(Ljava/lang/String;)V
-PLcom/android/server/AppOpsService;->collectOps(Lcom/android/server/AppOpsService$Ops;[I)Ljava/util/ArrayList;
-PLcom/android/server/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V
-PLcom/android/server/AppOpsService;->getOpLocked(IILjava/lang/String;Z)Lcom/android/server/AppOpsService$Op;
PLcom/android/server/AppOpsService;->getPackagesForUid(I)[Ljava/lang/String;
PLcom/android/server/AppOpsService;->getToken(Landroid/os/IBinder;)Landroid/os/IBinder;
-PLcom/android/server/AppOpsService;->isOperationActive(IILjava/lang/String;)Z
-PLcom/android/server/AppOpsService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
-PLcom/android/server/AppOpsService;->notifyWatchersOfChange(I)V
-PLcom/android/server/AppOpsService;->resolvePackageName(ILjava/lang/String;)Ljava/lang/String;
PLcom/android/server/AppOpsService;->scheduleFastWriteLocked()V
-PLcom/android/server/AppOpsService;->scheduleWriteLocked()V
-PLcom/android/server/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V
-PLcom/android/server/AppOpsService;->setUidMode(III)V
-PLcom/android/server/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;I[Ljava/lang/String;)V
-PLcom/android/server/AppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V
-PLcom/android/server/AppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V
-PLcom/android/server/AppOpsService;->systemReady()V
-PLcom/android/server/AppOpsService;->verifyIncomingOp(I)V
PLcom/android/server/AttributeCache$Entry;-><init>(Landroid/content/Context;Landroid/content/res/TypedArray;)V
-PLcom/android/server/AttributeCache$Package;->-get0(Lcom/android/server/AttributeCache$Package;)Landroid/util/SparseArray;
+PLcom/android/server/AttributeCache$Entry;->recycle()V
PLcom/android/server/AttributeCache$Package;-><init>(Landroid/content/Context;)V
PLcom/android/server/AttributeCache;-><init>(Landroid/content/Context;)V
-PLcom/android/server/AttributeCache;->get(Ljava/lang/String;I[II)Lcom/android/server/AttributeCache$Entry;
PLcom/android/server/AttributeCache;->init(Landroid/content/Context;)V
-PLcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache;
+PLcom/android/server/AttributeCache;->removePackage(Ljava/lang/String;)V
PLcom/android/server/AttributeCache;->updateConfiguration(Landroid/content/res/Configuration;)V
PLcom/android/server/BatteryService$2;-><init>(Lcom/android/server/BatteryService;Landroid/os/Handler;)V
-PLcom/android/server/BatteryService$9;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
-PLcom/android/server/BatteryService$9;->run()V
+PLcom/android/server/BatteryService$5;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
+PLcom/android/server/BatteryService$5;->run()V
+PLcom/android/server/BatteryService$6;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
+PLcom/android/server/BatteryService$6;->run()V
PLcom/android/server/BatteryService$BatteryListener;-><init>(Lcom/android/server/BatteryService;)V
PLcom/android/server/BatteryService$BatteryListener;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BatteryListener;)V
-PLcom/android/server/BatteryService$BatteryListener;->batteryPropertiesChanged(Landroid/os/BatteryProperties;)V
PLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;)V
PLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BinderService;)V
+PLcom/android/server/BatteryService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/BatteryService$Led;-><init>(Lcom/android/server/BatteryService;Landroid/content/Context;Lcom/android/server/lights/LightsManager;)V
-PLcom/android/server/BatteryService$Led;->updateLightsLocked()V
PLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;)V
PLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$LocalService;)V
-PLcom/android/server/BatteryService$LocalService;->getBatteryLevel()I
-PLcom/android/server/BatteryService$LocalService;->getBatteryLevelLow()Z
-PLcom/android/server/BatteryService$LocalService;->getPlugType()I
-PLcom/android/server/BatteryService$LocalService;->isPowered(I)Z
+PLcom/android/server/BatteryService$Shell;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$Shell;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/BatteryService;->-get0()Ljava/lang/String;
PLcom/android/server/BatteryService;->-get2(Lcom/android/server/BatteryService;)Z
-PLcom/android/server/BatteryService;->-get3(Lcom/android/server/BatteryService;)Landroid/os/BatteryProperties;
-PLcom/android/server/BatteryService;->-get6(Lcom/android/server/BatteryService;)Ljava/lang/Object;
+PLcom/android/server/BatteryService;->-get4(Lcom/android/server/BatteryService;)Landroid/content/Context;
PLcom/android/server/BatteryService;->-get7(Lcom/android/server/BatteryService;)I
PLcom/android/server/BatteryService;->-get8(Lcom/android/server/BatteryService;)I
-PLcom/android/server/BatteryService;->-wrap0(Lcom/android/server/BatteryService;I)Z
-PLcom/android/server/BatteryService;->-wrap4(Lcom/android/server/BatteryService;Landroid/os/BatteryProperties;)V
+PLcom/android/server/BatteryService;->-wrap1(Lcom/android/server/BatteryService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/BatteryService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/BatteryService;->getIconLocked(I)I
-PLcom/android/server/BatteryService;->isPoweredLocked(I)Z
+PLcom/android/server/BatteryService;->dumpInternal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/BatteryService;->onBootPhase(I)V
+PLcom/android/server/BatteryService;->onShellCommand(Lcom/android/server/BatteryService$Shell;Ljava/lang/String;)I
PLcom/android/server/BatteryService;->onStart()V
-PLcom/android/server/BatteryService;->processValuesLocked(Z)V
-PLcom/android/server/BatteryService;->sendIntentLocked()V
-PLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z
+PLcom/android/server/BatteryService;->parseOptions(Lcom/android/server/BatteryService$Shell;)I
+PLcom/android/server/BatteryService;->processValuesFromShellLocked(Ljava/io/PrintWriter;I)V
PLcom/android/server/BatteryService;->shutdownIfNoPowerLocked()V
PLcom/android/server/BatteryService;->shutdownIfOverTempLocked()V
-PLcom/android/server/BatteryService;->update(Landroid/os/BatteryProperties;)V
PLcom/android/server/BatteryService;->updateBatteryWarningLevelLocked()V
PLcom/android/server/BluetoothManagerService$1;-><init>(Lcom/android/server/BluetoothManagerService;)V
PLcom/android/server/BluetoothManagerService$1;->onBluetoothStateChange(II)V
@@ -3544,10 +6674,11 @@ PLcom/android/server/BluetoothManagerService$4;->onReceive(Landroid/content/Cont
PLcom/android/server/BluetoothManagerService$5;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Handler;)V
PLcom/android/server/BluetoothManagerService$ActiveLog;-><init>(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;ZJ)V
PLcom/android/server/BluetoothManagerService$BluetoothHandler;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Looper;)V
-PLcom/android/server/BluetoothManagerService$BluetoothHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;-><init>(Lcom/android/server/BluetoothManagerService;)V
PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;-><init>(Lcom/android/server/BluetoothManagerService;Lcom/android/server/BluetoothManagerService$BluetoothServiceConnection;)V
PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;-><init>(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;)V
+PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;->binderDied()V
PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->-wrap0(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;)Z
PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->-wrap1(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/content/Intent;)V
@@ -3589,8 +6720,7 @@ PLcom/android/server/BluetoothManagerService;->getBluetoothGatt()Landroid/blueto
PLcom/android/server/BluetoothManagerService;->handleEnable(Z)V
PLcom/android/server/BluetoothManagerService;->handleOnBootPhase()V
PLcom/android/server/BluetoothManagerService;->handleOnUnlockUser(I)V
-PLcom/android/server/BluetoothManagerService;->isAirplaneModeOn()Z
-PLcom/android/server/BluetoothManagerService;->isBleScanAlwaysAvailable()Z
+PLcom/android/server/BluetoothManagerService;->isBleAppPresent()Z
PLcom/android/server/BluetoothManagerService;->isBluetoothDisallowed()Z
PLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOn()Z
PLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOnBluetooth()Z
@@ -3606,6 +6736,8 @@ PLcom/android/server/BluetoothManagerService;->sendBluetoothServiceUpCallback()V
PLcom/android/server/BluetoothManagerService;->sendBluetoothStateCallback(Z)V
PLcom/android/server/BluetoothManagerService;->sendEnableMsg(ZLjava/lang/String;)V
PLcom/android/server/BluetoothManagerService;->storeNameAndAddress(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/BluetoothManagerService;->unregisterStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V
+PLcom/android/server/BluetoothManagerService;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I
PLcom/android/server/BluetoothService;-><init>(Landroid/content/Context;)V
PLcom/android/server/BluetoothService;->onBootPhase(I)V
PLcom/android/server/BluetoothService;->onStart()V
@@ -3621,7 +6753,6 @@ PLcom/android/server/CommonTimeManagementService$InterfaceScoreRule;-><init>(Lja
PLcom/android/server/CommonTimeManagementService;-><init>(Landroid/content/Context;)V
PLcom/android/server/CommonTimeManagementService;->systemRunning()V
PLcom/android/server/ConnectivityService$1;-><init>(Lcom/android/server/ConnectivityService;)V
-PLcom/android/server/ConnectivityService$1;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V
PLcom/android/server/ConnectivityService$2;-><init>(Lcom/android/server/ConnectivityService;)V
PLcom/android/server/ConnectivityService$2;->onMeteredIfacesChanged([Ljava/lang/String;)V
PLcom/android/server/ConnectivityService$2;->onUidRulesChanged(II)V
@@ -3630,25 +6761,16 @@ PLcom/android/server/ConnectivityService$3;->onReceive(Landroid/content/Context;
PLcom/android/server/ConnectivityService$4;-><init>(Lcom/android/server/ConnectivityService;)V
PLcom/android/server/ConnectivityService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/ConnectivityService$InternalHandler;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V
-PLcom/android/server/ConnectivityService$InternalHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/ConnectivityService$LegacyTypeTracker;-><init>(Lcom/android/server/ConnectivityService;)V
PLcom/android/server/ConnectivityService$LegacyTypeTracker;->add(ILcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService$LegacyTypeTracker;->addSupportedType(I)V
-PLcom/android/server/ConnectivityService$LegacyTypeTracker;->getNetworkForType(I)Lcom/android/server/connectivity/NetworkAgentInfo;
-PLcom/android/server/ConnectivityService$LegacyTypeTracker;->isTypeSupported(I)Z
PLcom/android/server/ConnectivityService$LegacyTypeTracker;->maybeLogBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;IZ)V
+PLcom/android/server/ConnectivityService$LegacyTypeTracker;->naiToString(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/lang/String;
PLcom/android/server/ConnectivityService$NetworkFactoryInfo;-><init>(Ljava/lang/String;Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;)V
-PLcom/android/server/ConnectivityService$NetworkRequestInfo;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;Landroid/net/NetworkRequest;Landroid/os/IBinder;)V
PLcom/android/server/ConnectivityService$NetworkRequestInfo;->binderDied()V
PLcom/android/server/ConnectivityService$NetworkRequestInfo;->enforceRequestCountLimit()V
-PLcom/android/server/ConnectivityService$NetworkRequestInfo;->toString()Ljava/lang/String;
PLcom/android/server/ConnectivityService$NetworkRequestInfo;->unlinkDeathRecipient()V
PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V
-PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleAsyncChannelMessage(Landroid/os/Message;)Z
-PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentInfoMessage(Landroid/os/Message;)Z
-PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentMessage(Landroid/os/Message;)V
-PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkMonitorMessage(Landroid/os/Message;)Z
PLcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;-><init>(Ljava/lang/String;I)V
PLcom/android/server/ConnectivityService$SettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
PLcom/android/server/ConnectivityService$SettingsObserver;->observe(Landroid/net/Uri;I)V
@@ -3656,11 +6778,9 @@ PLcom/android/server/ConnectivityService$UnneededFor;-><init>(Ljava/lang/String;
PLcom/android/server/ConnectivityService$UnneededFor;->values()[Lcom/android/server/ConnectivityService$UnneededFor;
PLcom/android/server/ConnectivityService$ValidationLog;-><init>(Landroid/net/Network;Ljava/lang/String;Landroid/util/LocalLog$ReadOnlyLocalLog;)V
PLcom/android/server/ConnectivityService;->-get1(Lcom/android/server/ConnectivityService;)Landroid/content/Context;
-PLcom/android/server/ConnectivityService;->-get4(Lcom/android/server/ConnectivityService;)Ljava/util/HashMap;
PLcom/android/server/ConnectivityService;->-get5(Lcom/android/server/ConnectivityService;)Landroid/util/SparseArray;
PLcom/android/server/ConnectivityService;->-get6(Lcom/android/server/ConnectivityService;)Lcom/android/server/connectivity/NetworkNotificationManager;
PLcom/android/server/ConnectivityService;->-get8(Lcom/android/server/ConnectivityService;)Landroid/util/SparseIntArray;
-PLcom/android/server/ConnectivityService;->-getcom-android-server-ConnectivityService$UnneededForSwitchesValues()[I
PLcom/android/server/ConnectivityService;->-wrap0(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)Z
PLcom/android/server/ConnectivityService;->-wrap10(Lcom/android/server/ConnectivityService;)V
PLcom/android/server/ConnectivityService;->-wrap12(Lcom/android/server/ConnectivityService;Landroid/net/Network;)V
@@ -3673,59 +6793,42 @@ PLcom/android/server/ConnectivityService;->-wrap20(Lcom/android/server/Connectiv
PLcom/android/server/ConnectivityService;->-wrap25(Ljava/lang/String;)V
PLcom/android/server/ConnectivityService;->-wrap29(Lcom/android/server/ConnectivityService;I)V
PLcom/android/server/ConnectivityService;->-wrap31(Lcom/android/server/ConnectivityService;I)V
-PLcom/android/server/ConnectivityService;->-wrap32(Lcom/android/server/ConnectivityService;IZJ)V
PLcom/android/server/ConnectivityService;->-wrap33(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;I)V
PLcom/android/server/ConnectivityService;->-wrap34(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService;->-wrap36(Lcom/android/server/ConnectivityService;ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V
PLcom/android/server/ConnectivityService;->-wrap37(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/ConnectivityService;->-wrap38(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V
-PLcom/android/server/ConnectivityService;->-wrap39(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V
+PLcom/android/server/ConnectivityService;->-wrap38(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V
PLcom/android/server/ConnectivityService;->-wrap4(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;)V
-PLcom/android/server/ConnectivityService;->-wrap40(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;I)V
PLcom/android/server/ConnectivityService;->-wrap7(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V
PLcom/android/server/ConnectivityService;->-wrap8(Lcom/android/server/ConnectivityService;)V
PLcom/android/server/ConnectivityService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;)V
PLcom/android/server/ConnectivityService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/net/metrics/IpConnectivityLog;)V
PLcom/android/server/ConnectivityService;->addValidationLogs(Landroid/util/LocalLog$ReadOnlyLocalLog;Landroid/net/Network;Ljava/lang/String;)V
+PLcom/android/server/ConnectivityService;->argsContain([Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/ConnectivityService;->avoidBadWifi()Z
-PLcom/android/server/ConnectivityService;->callCallbackForRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;II)V
PLcom/android/server/ConnectivityService;->canonicalizeProxyInfo(Landroid/net/ProxyInfo;)Landroid/net/ProxyInfo;
PLcom/android/server/ConnectivityService;->createInternetRequestForTransport(ILandroid/net/NetworkRequest$Type;)Landroid/net/NetworkRequest;
PLcom/android/server/ConnectivityService;->createMultinetworkPolicyTracker(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/net/util/MultinetworkPolicyTracker;
PLcom/android/server/ConnectivityService;->createNetworkMonitor(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkRequest;)Lcom/android/server/connectivity/NetworkMonitor;
PLcom/android/server/ConnectivityService;->createVpnInfo(Lcom/android/server/connectivity/Vpn;)Lcom/android/internal/net/VpnInfo;
+PLcom/android/server/ConnectivityService;->dumpAvoidBadWifiSettings(Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/ConnectivityService;->encodeBool(Z)I
-PLcom/android/server/ConnectivityService;->enforceAccessPermission()V
-PLcom/android/server/ConnectivityService;->enforceConnectivityInternalPermission()V
PLcom/android/server/ConnectivityService;->enforceCrossUserPermission(I)V
PLcom/android/server/ConnectivityService;->enforceInternetPermission()V
-PLcom/android/server/ConnectivityService;->enforceTetherAccessPermission()V
PLcom/android/server/ConnectivityService;->ensureNetworkRequestHasType(Landroid/net/NetworkRequest;)V
PLcom/android/server/ConnectivityService;->ensureRequestableCapabilities(Landroid/net/NetworkCapabilities;)V
PLcom/android/server/ConnectivityService;->ensureValidNetworkSpecifier(Landroid/net/NetworkCapabilities;)V
PLcom/android/server/ConnectivityService;->flushVmDnsCache()V
PLcom/android/server/ConnectivityService;->getActiveLinkProperties()Landroid/net/LinkProperties;
-PLcom/android/server/ConnectivityService;->getActiveNetwork()Landroid/net/Network;
-PLcom/android/server/ConnectivityService;->getActiveNetworkForUid(IZ)Landroid/net/Network;
-PLcom/android/server/ConnectivityService;->getActiveNetworkForUidInternal(IZ)Landroid/net/Network;
PLcom/android/server/ConnectivityService;->getAllNetworkInfo()[Landroid/net/NetworkInfo;
PLcom/android/server/ConnectivityService;->getAllNetworkState()[Landroid/net/NetworkState;
-PLcom/android/server/ConnectivityService;->getAllNetworks()[Landroid/net/Network;
-PLcom/android/server/ConnectivityService;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo;
PLcom/android/server/ConnectivityService;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities;
PLcom/android/server/ConnectivityService;->getDefaultProxy()Landroid/net/ProxyInfo;
-PLcom/android/server/ConnectivityService;->getFilteredNetworkState(IIZ)Landroid/net/NetworkState;
PLcom/android/server/ConnectivityService;->getGlobalProxy()Landroid/net/ProxyInfo;
PLcom/android/server/ConnectivityService;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;
PLcom/android/server/ConnectivityService;->getLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/LinkProperties;
-PLcom/android/server/ConnectivityService;->getNetworkAgentInfoForNetwork(Landroid/net/Network;)Lcom/android/server/connectivity/NetworkAgentInfo;
-PLcom/android/server/ConnectivityService;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;
-PLcom/android/server/ConnectivityService;->getNetworkCapabilitiesInternal(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/NetworkCapabilities;
-PLcom/android/server/ConnectivityService;->getNetworkInfo(I)Landroid/net/NetworkInfo;
-PLcom/android/server/ConnectivityService;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo;
PLcom/android/server/ConnectivityService;->getNetworkPermission(Landroid/net/NetworkCapabilities;)Ljava/lang/String;
PLcom/android/server/ConnectivityService;->getNriForAppRequest(Landroid/net/NetworkRequest;ILjava/lang/String;)Lcom/android/server/ConnectivityService$NetworkRequestInfo;
-PLcom/android/server/ConnectivityService;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo;
PLcom/android/server/ConnectivityService;->getSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/util/ArrayList;
PLcom/android/server/ConnectivityService;->getSystemProperties()Lcom/android/server/connectivity/MockableSystemProperties;
PLcom/android/server/ConnectivityService;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig;
@@ -3736,18 +6839,15 @@ PLcom/android/server/ConnectivityService;->handleMobileDataAlwaysOn()V
PLcom/android/server/ConnectivityService;->handlePromptUnvalidated(Landroid/net/Network;)V
PLcom/android/server/ConnectivityService;->handleRegisterNetworkAgent(Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService;->handleRegisterNetworkFactory(Lcom/android/server/ConnectivityService$NetworkFactoryInfo;)V
-PLcom/android/server/ConnectivityService;->handleRegisterNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
PLcom/android/server/ConnectivityService;->handleReleaseNetworkRequest(Landroid/net/NetworkRequest;I)V
-PLcom/android/server/ConnectivityService;->handleRemoveNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
PLcom/android/server/ConnectivityService;->handleReportNetworkConnectivity(Landroid/net/Network;IZ)V
+PLcom/android/server/ConnectivityService;->handleUpdateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V
PLcom/android/server/ConnectivityService;->hasWifiNetworkListenPermission(Landroid/net/NetworkCapabilities;)Z
-PLcom/android/server/ConnectivityService;->isActiveNetworkMetered()Z
PLcom/android/server/ConnectivityService;->isDefaultNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
PLcom/android/server/ConnectivityService;->isDefaultRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)Z
PLcom/android/server/ConnectivityService;->isNetworkSupported(I)Z
-PLcom/android/server/ConnectivityService;->isSystem(I)Z
PLcom/android/server/ConnectivityService;->isTetheringSupported()Z
-PLcom/android/server/ConnectivityService;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest;
+PLcom/android/server/ConnectivityService;->isTetheringSupported(Ljava/lang/String;)Z
PLcom/android/server/ConnectivityService;->loadGlobalProxy()V
PLcom/android/server/ConnectivityService;->log(Ljava/lang/String;)V
PLcom/android/server/ConnectivityService;->logDefaultNetworkEvent(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)V
@@ -3759,30 +6859,23 @@ PLcom/android/server/ConnectivityService;->notifyIfacesChangedForNetworkStats()V
PLcom/android/server/ConnectivityService;->notifyLockdownVpn(Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService;->notifyNetworkAvailable(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
PLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
-PLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;II)V
PLcom/android/server/ConnectivityService;->onUserStart(I)V
PLcom/android/server/ConnectivityService;->onUserUnlocked(I)V
PLcom/android/server/ConnectivityService;->proxyInfoEqual(Landroid/net/ProxyInfo;Landroid/net/ProxyInfo;)Z
-PLcom/android/server/ConnectivityService;->putParcelable(Landroid/os/Bundle;Landroid/os/Parcelable;)V
PLcom/android/server/ConnectivityService;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;)I
PLcom/android/server/ConnectivityService;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V
PLcom/android/server/ConnectivityService;->registerSettingsCallbacks()V
PLcom/android/server/ConnectivityService;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V
-PLcom/android/server/ConnectivityService;->rematchAllNetworksAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
-PLcom/android/server/ConnectivityService;->rematchNetworkAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;J)V
PLcom/android/server/ConnectivityService;->reportNetworkConnectivity(Landroid/net/Network;Z)V
PLcom/android/server/ConnectivityService;->requestNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;ILandroid/os/IBinder;I)Landroid/net/NetworkRequest;
PLcom/android/server/ConnectivityService;->reserveNetId()I
PLcom/android/server/ConnectivityService;->scheduleReleaseNetworkTransitionWakelock()V
PLcom/android/server/ConnectivityService;->scheduleUnvalidatedPrompt(Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService;->sendConnectedBroadcast(Landroid/net/NetworkInfo;)V
-PLcom/android/server/ConnectivityService;->sendDataActivityBroadcast(IZJ)V
PLcom/android/server/ConnectivityService;->sendGeneralBroadcast(Landroid/net/NetworkInfo;Ljava/lang/String;)V
PLcom/android/server/ConnectivityService;->sendInetConditionBroadcast(Landroid/net/NetworkInfo;)V
PLcom/android/server/ConnectivityService;->sendLegacyNetworkBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;I)V
PLcom/android/server/ConnectivityService;->sendStickyBroadcast(Landroid/content/Intent;)V
-PLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Landroid/net/NetworkRequest;I)V
-PLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService;->setDefaultDnsSystemProperties(Ljava/util/Collection;)V
PLcom/android/server/ConnectivityService;->setLockdownTracker(Lcom/android/server/net/LockdownVpnTracker;)V
PLcom/android/server/ConnectivityService;->setNetDnsProperty(ILjava/lang/String;)V
@@ -3790,47 +6883,50 @@ PLcom/android/server/ConnectivityService;->setupDataActivityTracking(Lcom/androi
PLcom/android/server/ConnectivityService;->startAlwaysOnVpn(I)Z
PLcom/android/server/ConnectivityService;->systemReady()V
PLcom/android/server/ConnectivityService;->toBool(I)Z
-PLcom/android/server/ConnectivityService;->unneeded(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$UnneededFor;)Z
PLcom/android/server/ConnectivityService;->updateCapabilities(ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V
-PLcom/android/server/ConnectivityService;->updateClat(Landroid/net/LinkProperties;Landroid/net/LinkProperties;Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService;->updateDnses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)V
PLcom/android/server/ConnectivityService;->updateInetCondition(Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService;->updateInterfaces(Landroid/net/LinkProperties;Landroid/net/LinkProperties;ILandroid/net/NetworkCapabilities;)V
-PLcom/android/server/ConnectivityService;->updateLingerState(Lcom/android/server/connectivity/NetworkAgentInfo;J)V
PLcom/android/server/ConnectivityService;->updateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V
PLcom/android/server/ConnectivityService;->updateLockdownVpn()Z
PLcom/android/server/ConnectivityService;->updateMtu(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V
PLcom/android/server/ConnectivityService;->updateNetworkInfo(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V
-PLcom/android/server/ConnectivityService;->updateNetworkScore(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
PLcom/android/server/ConnectivityService;->updateProxy(Landroid/net/LinkProperties;Landroid/net/LinkProperties;Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/ConnectivityService;->updateRoutes(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)Z
PLcom/android/server/ConnectivityService;->updateSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;Ljava/lang/String;Landroid/net/NetworkRequest;)V
PLcom/android/server/ConnectivityService;->updateTcpBufferSizes(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/ConnectivityService;->wakeupAddInterface(Ljava/lang/String;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/ConnectivityService;->wakeupModifyInterface(Ljava/lang/String;Landroid/net/NetworkCapabilities;Z)V
PLcom/android/server/ConsumerIrService;-><init>(Landroid/content/Context;)V
PLcom/android/server/ContextHubSystemService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/ContextHubSystemService;->lambda$-com_android_server_ContextHubSystemService_1237(Landroid/content/Context;)V
PLcom/android/server/ContextHubSystemService;->onBootPhase(I)V
PLcom/android/server/ContextHubSystemService;->onStart()V
+PLcom/android/server/CountryDetectorService$1$1;-><init>(Lcom/android/server/CountryDetectorService$1;Landroid/location/Country;)V
+PLcom/android/server/CountryDetectorService$1$1;->run()V
PLcom/android/server/CountryDetectorService$1;-><init>(Lcom/android/server/CountryDetectorService;)V
+PLcom/android/server/CountryDetectorService$1;->onCountryDetected(Landroid/location/Country;)V
PLcom/android/server/CountryDetectorService$2;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V
PLcom/android/server/CountryDetectorService$2;->run()V
PLcom/android/server/CountryDetectorService$Receiver;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/ICountryListener;)V
+PLcom/android/server/CountryDetectorService$Receiver;->getListener()Landroid/location/ICountryListener;
PLcom/android/server/CountryDetectorService;->-get0(Lcom/android/server/CountryDetectorService;)Lcom/android/server/location/ComprehensiveCountryDetector;
+PLcom/android/server/CountryDetectorService;->-get1(Lcom/android/server/CountryDetectorService;)Landroid/os/Handler;
PLcom/android/server/CountryDetectorService;-><init>(Landroid/content/Context;)V
PLcom/android/server/CountryDetectorService;->addCountryListener(Landroid/location/ICountryListener;)V
PLcom/android/server/CountryDetectorService;->addListener(Landroid/location/ICountryListener;)V
PLcom/android/server/CountryDetectorService;->detectCountry()Landroid/location/Country;
PLcom/android/server/CountryDetectorService;->initialize()V
+PLcom/android/server/CountryDetectorService;->notifyReceivers(Landroid/location/Country;)V
PLcom/android/server/CountryDetectorService;->run()V
PLcom/android/server/CountryDetectorService;->setCountryListener(Landroid/location/CountryListener;)V
PLcom/android/server/CountryDetectorService;->systemRunning()V
PLcom/android/server/DeviceIdleController$1;-><init>(Lcom/android/server/DeviceIdleController;)V
-PLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/DeviceIdleController$2;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$3;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$4;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$5;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$6;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$6;->onDisplayChanged(I)V
PLcom/android/server/DeviceIdleController$7;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$8;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$BinderService;-><init>(Lcom/android/server/DeviceIdleController;)V
@@ -3839,44 +6935,35 @@ PLcom/android/server/DeviceIdleController$BinderService;->getAppIdTempWhitelist(
PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelist()[I
PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelistExceptIdle()[I
PLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistApp(Ljava/lang/String;)Z
-PLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistExceptIdleApp(Ljava/lang/String;)Z
PLcom/android/server/DeviceIdleController$Constants;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)V
PLcom/android/server/DeviceIdleController$Constants;->updateConstants()V
PLcom/android/server/DeviceIdleController$LocalService;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistApp(ILjava/lang/String;JIZLjava/lang/String;)V
+PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistAppDirect(IJZLjava/lang/String;)V
PLcom/android/server/DeviceIdleController$LocalService;->getNotificationWhitelistDuration()J
-PLcom/android/server/DeviceIdleController$LocalService;->setAlarmsActive(Z)V
-PLcom/android/server/DeviceIdleController$LocalService;->setJobsActive(Z)V
PLcom/android/server/DeviceIdleController$LocalService;->setNetworkPolicyTempWhitelistCallback(Ljava/lang/Runnable;)V
PLcom/android/server/DeviceIdleController$MotionListener;-><init>(Lcom/android/server/DeviceIdleController;)V
PLcom/android/server/DeviceIdleController$MotionListener;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$MotionListener;)V
PLcom/android/server/DeviceIdleController$MyHandler;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Looper;)V
-PLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/DeviceIdleController;->-get1(Lcom/android/server/DeviceIdleController;)Lcom/android/server/DeviceIdleController$Constants;
-PLcom/android/server/DeviceIdleController;->-get7(Lcom/android/server/DeviceIdleController;)Landroid/os/RemoteCallbackList;
PLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;)V
PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJZLjava/lang/String;)V
PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppInternal(ILjava/lang/String;JIZLjava/lang/String;)V
PLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;I)V
+PLcom/android/server/DeviceIdleController;->becomeInactiveIfAppropriateLocked()V
PLcom/android/server/DeviceIdleController;->buildAppIdArray(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseBooleanArray;)[I
PLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V
-PLcom/android/server/DeviceIdleController;->exitMaintenanceEarlyIfNeededLocked()V
PLcom/android/server/DeviceIdleController;->getAppIdTempWhitelistInternal()[I
PLcom/android/server/DeviceIdleController;->getAppIdWhitelistExceptIdleInternal()[I
PLcom/android/server/DeviceIdleController;->getAppIdWhitelistInternal()[I
PLcom/android/server/DeviceIdleController;->getSystemDir()Ljava/io/File;
PLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistAppInternal(Ljava/lang/String;)Z
-PLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistExceptIdleAppInternal(Ljava/lang/String;)Z
PLcom/android/server/DeviceIdleController;->onBootPhase(I)V
PLcom/android/server/DeviceIdleController;->onStart()V
PLcom/android/server/DeviceIdleController;->postTempActiveTimeoutMessage(IJ)V
PLcom/android/server/DeviceIdleController;->readConfigFileLocked()V
-PLcom/android/server/DeviceIdleController;->reportMaintenanceActivityIfNeededLocked()V
PLcom/android/server/DeviceIdleController;->reportTempWhitelistChangedLocked()V
-PLcom/android/server/DeviceIdleController;->setAlarmsActive(Z)V
-PLcom/android/server/DeviceIdleController;->setJobsActive(Z)V
PLcom/android/server/DeviceIdleController;->setNetworkPolicyTempWhitelistCallbackInternal(Ljava/lang/Runnable;)V
-PLcom/android/server/DeviceIdleController;->updateChargingLocked(Z)V
PLcom/android/server/DeviceIdleController;->updateConnectivityState(Landroid/content/Intent;)V
PLcom/android/server/DeviceIdleController;->updateDisplayLocked()V
PLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZ)V
@@ -3895,15 +6982,9 @@ PLcom/android/server/DropBoxManagerService$1$1;->run()V
PLcom/android/server/DropBoxManagerService$1;-><init>(Lcom/android/server/DropBoxManagerService;)V
PLcom/android/server/DropBoxManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/DropBoxManagerService$2;-><init>(Lcom/android/server/DropBoxManagerService;)V
-PLcom/android/server/DropBoxManagerService$2;->add(Landroid/os/DropBoxManager$Entry;)V
-PLcom/android/server/DropBoxManagerService$2;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry;
-PLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z
-PLcom/android/server/DropBoxManagerService$3;-><init>(Lcom/android/server/DropBoxManagerService;)V
-PLcom/android/server/DropBoxManagerService$3;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/DropBoxManagerService$3;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Looper;)V
PLcom/android/server/DropBoxManagerService$4;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Handler;)V
PLcom/android/server/DropBoxManagerService$4;->onChange(Z)V
-PLcom/android/server/DropBoxManagerService$EntryFile;-><init>(J)V
-PLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V
PLcom/android/server/DropBoxManagerService$FileList;-><init>()V
PLcom/android/server/DropBoxManagerService$FileList;-><init>(Lcom/android/server/DropBoxManagerService$FileList;)V
PLcom/android/server/DropBoxManagerService;->-get0(Lcom/android/server/DropBoxManagerService;)Landroid/content/BroadcastReceiver;
@@ -3911,14 +6992,13 @@ PLcom/android/server/DropBoxManagerService;->-set0(Lcom/android/server/DropBoxMa
PLcom/android/server/DropBoxManagerService;->-wrap0(Lcom/android/server/DropBoxManagerService;)J
PLcom/android/server/DropBoxManagerService;->-wrap1(Lcom/android/server/DropBoxManagerService;)V
PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;Ljava/io/File;)V
-PLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J
-PLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V
+PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V
PLcom/android/server/DropBoxManagerService;->onBootPhase(I)V
PLcom/android/server/DropBoxManagerService;->onStart()V
-PLcom/android/server/DropBoxManagerService;->trimToFit()J
PLcom/android/server/EntropyMixer$1;-><init>(Lcom/android/server/EntropyMixer;)V
PLcom/android/server/EntropyMixer$2;-><init>(Lcom/android/server/EntropyMixer;)V
+PLcom/android/server/EntropyMixer$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/EntropyMixer;->-wrap2(Lcom/android/server/EntropyMixer;)V
PLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;)V
PLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/EntropyMixer;->addDeviceSpecificEntropy()V
@@ -3927,10 +7007,8 @@ PLcom/android/server/EntropyMixer;->getSystemDir()Ljava/lang/String;
PLcom/android/server/EntropyMixer;->loadInitialEntropy()V
PLcom/android/server/EntropyMixer;->scheduleEntropyWriter()V
PLcom/android/server/EntropyMixer;->writeEntropy()V
-PLcom/android/server/EventLogTags;->writeNetstatsMobileSample(JJJJJJJJJJJJJ)V
-PLcom/android/server/EventLogTags;->writeNetstatsWifiSample(JJJJJJJJJJJJJ)V
-PLcom/android/server/EventLogTags;->writeNotificationCancelAll(IILjava/lang/String;IIIILjava/lang/String;)V
-PLcom/android/server/EventLogTags;->writeNotificationCanceled(Ljava/lang/String;IIII)V
+PLcom/android/server/EventLogTags;->writeNotificationCancel(IILjava/lang/String;ILjava/lang/String;IIIILjava/lang/String;)V
+PLcom/android/server/EventLogTags;->writeNotificationCanceled(Ljava/lang/String;IIIILjava/lang/String;)V
PLcom/android/server/EventLogTags;->writeNotificationEnqueue(IILjava/lang/String;ILjava/lang/String;ILjava/lang/String;I)V
PLcom/android/server/EventLogTags;->writeNotificationExpansion(Ljava/lang/String;IIIII)V
PLcom/android/server/EventLogTags;->writeNotificationPanelHidden()V
@@ -3938,7 +7016,6 @@ PLcom/android/server/EventLogTags;->writeNotificationPanelRevealed(I)V
PLcom/android/server/EventLogTags;->writeNotificationVisibility(Ljava/lang/String;IIIII)V
PLcom/android/server/EventLogTags;->writeStorageState(Ljava/lang/String;IIJJ)V
PLcom/android/server/EventLogTags;->writeStreamDevicesChanged(III)V
-PLcom/android/server/EventLogTags;->writeVolumeChanged(IIIILjava/lang/String;)V
PLcom/android/server/GestureLauncherService$1;-><init>(Lcom/android/server/GestureLauncherService;)V
PLcom/android/server/GestureLauncherService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/GestureLauncherService$2;-><init>(Lcom/android/server/GestureLauncherService;Landroid/os/Handler;)V
@@ -3947,7 +7024,7 @@ PLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;-><in
PLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;)V
PLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$GestureEventListener;)V
PLcom/android/server/GestureLauncherService;->-get10(Lcom/android/server/GestureLauncherService;)Landroid/content/Context;
-PLcom/android/server/GestureLauncherService;->-get14(Lcom/android/server/GestureLauncherService;)Landroid/database/ContentObserver;
+PLcom/android/server/GestureLauncherService;->-get13(Lcom/android/server/GestureLauncherService;)Landroid/database/ContentObserver;
PLcom/android/server/GestureLauncherService;->-set5(Lcom/android/server/GestureLauncherService;I)I
PLcom/android/server/GestureLauncherService;->-wrap0(Lcom/android/server/GestureLauncherService;)V
PLcom/android/server/GestureLauncherService;->-wrap1(Lcom/android/server/GestureLauncherService;)V
@@ -3969,7 +7046,6 @@ PLcom/android/server/GestureLauncherService;->updateCameraDoubleTapPowerEnabled(
PLcom/android/server/GestureLauncherService;->updateCameraRegistered()V
PLcom/android/server/GraphicsStatsService$1;-><init>(Lcom/android/server/GraphicsStatsService;)V
PLcom/android/server/GraphicsStatsService$1;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/GraphicsStatsService$ActiveBuffer;-><init>(Lcom/android/server/GraphicsStatsService;Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)V
PLcom/android/server/GraphicsStatsService$ActiveBuffer;->binderDied()V
PLcom/android/server/GraphicsStatsService$ActiveBuffer;->closeAllBuffers()V
PLcom/android/server/GraphicsStatsService$BufferInfo;-><init>(Lcom/android/server/GraphicsStatsService;Ljava/lang/String;IJ)V
@@ -3980,12 +7056,9 @@ PLcom/android/server/GraphicsStatsService;->-wrap1(Lcom/android/server/GraphicsS
PLcom/android/server/GraphicsStatsService;->-wrap2(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V
PLcom/android/server/GraphicsStatsService;-><init>(Landroid/content/Context;)V
PLcom/android/server/GraphicsStatsService;->addToSaveQueue(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
-PLcom/android/server/GraphicsStatsService;->fetchActiveBuffersLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)Lcom/android/server/GraphicsStatsService$ActiveBuffer;
PLcom/android/server/GraphicsStatsService;->getPfd(Landroid/os/MemoryFile;)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/GraphicsStatsService;->normalizeDate(J)Ljava/util/Calendar;
PLcom/android/server/GraphicsStatsService;->pathForApp(Lcom/android/server/GraphicsStatsService$BufferInfo;)Ljava/io/File;
PLcom/android/server/GraphicsStatsService;->processDied(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
-PLcom/android/server/GraphicsStatsService;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor;
PLcom/android/server/GraphicsStatsService;->requestBufferForProcessLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)Landroid/os/ParcelFileDescriptor;
PLcom/android/server/GraphicsStatsService;->saveBuffer(Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V
PLcom/android/server/GraphicsStatsService;->scheduleRotateLocked()V
@@ -3996,7 +7069,6 @@ PLcom/android/server/InputMethodManagerService$1;-><init>(Lcom/android/server/In
PLcom/android/server/InputMethodManagerService$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
PLcom/android/server/InputMethodManagerService$2;-><init>(Lcom/android/server/InputMethodManagerService;)V
PLcom/android/server/InputMethodManagerService$ClientState;-><init>(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;II)V
-PLcom/android/server/InputMethodManagerService$ClientState;->toString()Ljava/lang/String;
PLcom/android/server/InputMethodManagerService$HardKeyboardListener;-><init>(Lcom/android/server/InputMethodManagerService;)V
PLcom/android/server/InputMethodManagerService$HardKeyboardListener;-><init>(Lcom/android/server/InputMethodManagerService;Lcom/android/server/InputMethodManagerService$HardKeyboardListener;)V
PLcom/android/server/InputMethodManagerService$ImmsBroadcastReceiver;-><init>(Lcom/android/server/InputMethodManagerService;)V
@@ -4022,90 +7094,54 @@ PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onBeginPackage
PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChanges()V
PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChangesInternal()V
PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V
+PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V
PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->shouldRebuildInputMethodListLocked()Z
PLcom/android/server/InputMethodManagerService$SessionState;-><init>(Lcom/android/server/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V
PLcom/android/server/InputMethodManagerService$SettingsObserver;-><init>(Lcom/android/server/InputMethodManagerService;Landroid/os/Handler;)V
PLcom/android/server/InputMethodManagerService$SettingsObserver;->registerContentObserverLocked(I)V
PLcom/android/server/InputMethodManagerService$StartInputHistory$Entry;-><init>(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V
-PLcom/android/server/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V
PLcom/android/server/InputMethodManagerService$StartInputHistory;-><init>()V
PLcom/android/server/InputMethodManagerService$StartInputHistory;-><init>(Lcom/android/server/InputMethodManagerService$StartInputHistory;)V
-PLcom/android/server/InputMethodManagerService$StartInputHistory;->addEntry(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V
PLcom/android/server/InputMethodManagerService$StartInputHistory;->getEntrySize()I
-PLcom/android/server/InputMethodManagerService$StartInputInfo;-><init>(Landroid/os/IBinder;Ljava/lang/String;IZLandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V
PLcom/android/server/InputMethodManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/InputMethodManagerService;->addClient(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;II)V
-PLcom/android/server/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/view/InputBindResult;
PLcom/android/server/InputMethodManagerService;->bindCurrentInputMethodService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
-PLcom/android/server/InputMethodManagerService;->buildInputMethodListLocked(Z)V
-PLcom/android/server/InputMethodManagerService;->calledFromValidUser()Z
-PLcom/android/server/InputMethodManagerService;->calledWithValidToken(Landroid/os/IBinder;)Z
PLcom/android/server/InputMethodManagerService;->clearClientSessionLocked(Lcom/android/server/InputMethodManagerService$ClientState;)V
PLcom/android/server/InputMethodManagerService;->clearCurMethodLocked()V
-PLcom/android/server/InputMethodManagerService;->executeOrSendMessage(Landroid/os/IInterface;Landroid/os/Message;)V
PLcom/android/server/InputMethodManagerService;->finishInput(Lcom/android/internal/view/IInputMethodClient;)V
PLcom/android/server/InputMethodManagerService;->finishSessionLocked(Lcom/android/server/InputMethodManagerService$SessionState;)V
PLcom/android/server/InputMethodManagerService;->getAppShowFlags()I
PLcom/android/server/InputMethodManagerService;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;
-PLcom/android/server/InputMethodManagerService;->getCurrentInputMethodSubtypeLocked()Landroid/view/inputmethod/InputMethodSubtype;
PLcom/android/server/InputMethodManagerService;->getEnabledInputMethodList()Ljava/util/List;
-PLcom/android/server/InputMethodManagerService;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List;
PLcom/android/server/InputMethodManagerService;->getImeShowFlags()I
PLcom/android/server/InputMethodManagerService;->getInputMethodList()Ljava/util/List;
PLcom/android/server/InputMethodManagerService;->getInputMethodWindowVisibleHeight()I
-PLcom/android/server/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/InputMethodManagerService;->hideCurrentInputLocked(ILandroid/os/ResultReceiver;)Z
PLcom/android/server/InputMethodManagerService;->hideInputMethodMenu()V
PLcom/android/server/InputMethodManagerService;->hideInputMethodMenuLocked()V
-PLcom/android/server/InputMethodManagerService;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
+PLcom/android/server/InputMethodManagerService;->hideMySoftInput(Landroid/os/IBinder;I)V
PLcom/android/server/InputMethodManagerService;->isKeyguardLocked()Z
-PLcom/android/server/InputMethodManagerService;->isScreenLocked()Z
PLcom/android/server/InputMethodManagerService;->notifyInputMethodSubtypeChanged(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V
PLcom/android/server/InputMethodManagerService;->notifyUserAction(I)V
PLcom/android/server/InputMethodManagerService;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
PLcom/android/server/InputMethodManagerService;->onSessionCreated(Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V
-PLcom/android/server/InputMethodManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/InputMethodManagerService;->onUnlockUser(I)V
PLcom/android/server/InputMethodManagerService;->removeClient(Lcom/android/internal/view/IInputMethodClient;)V
-PLcom/android/server/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V
PLcom/android/server/InputMethodManagerService;->requestClientSessionLocked(Lcom/android/server/InputMethodManagerService$ClientState;)V
PLcom/android/server/InputMethodManagerService;->resetDefaultImeLocked(Landroid/content/Context;)V
PLcom/android/server/InputMethodManagerService;->setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V
-PLcom/android/server/InputMethodManagerService;->setEnabledSessionInMainThread(Lcom/android/server/InputMethodManagerService$SessionState;)V
-PLcom/android/server/InputMethodManagerService;->setImeWindowStatus(Landroid/os/IBinder;Landroid/os/IBinder;II)V
PLcom/android/server/InputMethodManagerService;->setInputMethodEnabledLocked(Ljava/lang/String;Z)Z
PLcom/android/server/InputMethodManagerService;->setInputMethodLocked(Ljava/lang/String;I)V
PLcom/android/server/InputMethodManagerService;->setSelectedInputMethodAndSubtypeLocked(Landroid/view/inputmethod/InputMethodInfo;IZ)V
-PLcom/android/server/InputMethodManagerService;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z
-PLcom/android/server/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z
PLcom/android/server/InputMethodManagerService;->showCurrentInputLocked(ILandroid/os/ResultReceiver;)Z
PLcom/android/server/InputMethodManagerService;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
-PLcom/android/server/InputMethodManagerService;->startInput(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult;
PLcom/android/server/InputMethodManagerService;->startInputInnerLocked()Lcom/android/internal/view/InputBindResult;
-PLcom/android/server/InputMethodManagerService;->startInputLocked(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult;
-PLcom/android/server/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult;
-PLcom/android/server/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;II)Lcom/android/internal/view/InputBindResult;
PLcom/android/server/InputMethodManagerService;->systemRunning(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/InputMethodManagerService;->unbindCurrentClientLocked(I)V
PLcom/android/server/InputMethodManagerService;->unbindCurrentMethodLocked(Z)V
PLcom/android/server/InputMethodManagerService;->updateCurrentProfileIds()V
PLcom/android/server/InputMethodManagerService;->updateFromSettingsLocked(Z)V
PLcom/android/server/InputMethodManagerService;->updateInputMethodsFromSettingsLocked(Z)V
PLcom/android/server/InputMethodManagerService;->updateKeyboardFromSettingsLocked()V
-PLcom/android/server/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V
-PLcom/android/server/InputMethodManagerService;->updateSystemUiLocked(Landroid/os/IBinder;II)V
-PLcom/android/server/InputMethodManagerService;->windowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult;
-PLcom/android/server/IntentResolver;->collectFilters([Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Ljava/util/ArrayList;
-PLcom/android/server/IntentResolver;->filterEquals(Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Z
-PLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList;
-PLcom/android/server/IntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z
-PLcom/android/server/IntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
-PLcom/android/server/IntentResolver;->removeFilter(Landroid/content/IntentFilter;)V
-PLcom/android/server/IntentResolver;->removeFilterInternal(Landroid/content/IntentFilter;)V
-PLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V
-PLcom/android/server/IntentResolver;->unregister_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
-PLcom/android/server/IntentResolver;->unregister_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I
PLcom/android/server/IoThread;->get()Lcom/android/server/IoThread;
PLcom/android/server/LocationManagerService$1;-><init>(Lcom/android/server/LocationManagerService;)V
PLcom/android/server/LocationManagerService$2;-><init>(Lcom/android/server/LocationManagerService;)V
@@ -4119,61 +7155,45 @@ PLcom/android/server/LocationManagerService$9;-><init>(Lcom/android/server/Locat
PLcom/android/server/LocationManagerService$9;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/LocationManagerService$Identity;-><init>(IILjava/lang/String;)V
PLcom/android/server/LocationManagerService$LocationWorkerHandler;-><init>(Lcom/android/server/LocationManagerService;Landroid/os/Looper;)V
-PLcom/android/server/LocationManagerService$Receiver;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)V
+PLcom/android/server/LocationManagerService$Receiver;->binderDied()V
PLcom/android/server/LocationManagerService$Receiver;->clearPendingBroadcastsLocked()V
PLcom/android/server/LocationManagerService$Receiver;->getListener()Landroid/location/ILocationListener;
PLcom/android/server/LocationManagerService$Receiver;->isListener()Z
-PLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(Z)V
PLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(ZZI)Z
-PLcom/android/server/LocationManagerService$UpdateRecord;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;)V
PLcom/android/server/LocationManagerService$UpdateRecord;->disposeLocked(Z)V
PLcom/android/server/LocationManagerService;->-get0(Lcom/android/server/LocationManagerService;)Landroid/app/ActivityManager;
PLcom/android/server/LocationManagerService;->-get1(Lcom/android/server/LocationManagerService;)Landroid/app/AppOpsManager;
-PLcom/android/server/LocationManagerService;->-get10(Lcom/android/server/LocationManagerService;)Landroid/os/PowerManager;
-PLcom/android/server/LocationManagerService;->-get11(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
-PLcom/android/server/LocationManagerService;->-get13(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
-PLcom/android/server/LocationManagerService;->-get14(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationRequestStatistics;
-PLcom/android/server/LocationManagerService;->-get4(Lcom/android/server/LocationManagerService;)Landroid/util/ArrayMap;
-PLcom/android/server/LocationManagerService;->-get6(Lcom/android/server/LocationManagerService;)Landroid/util/ArrayMap;
-PLcom/android/server/LocationManagerService;->-get9(Lcom/android/server/LocationManagerService;)Ljava/lang/Object;
+PLcom/android/server/LocationManagerService;->-get10(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationRequestStatistics;
+PLcom/android/server/LocationManagerService;->-get2(Lcom/android/server/LocationManagerService;)Landroid/content/Context;
+PLcom/android/server/LocationManagerService;->-get5(Lcom/android/server/LocationManagerService;)Ljava/lang/Object;
+PLcom/android/server/LocationManagerService;->-get6(Lcom/android/server/LocationManagerService;)Landroid/os/PowerManager;
+PLcom/android/server/LocationManagerService;->-get7(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+PLcom/android/server/LocationManagerService;->-get8(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+PLcom/android/server/LocationManagerService;->-get9(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
PLcom/android/server/LocationManagerService;->-wrap0(Lcom/android/server/LocationManagerService;Ljava/lang/String;)Z
PLcom/android/server/LocationManagerService;->-wrap1(I)Z
-PLcom/android/server/LocationManagerService;->-wrap10(Lcom/android/server/LocationManagerService;I)V
-PLcom/android/server/LocationManagerService;->-wrap3(Lcom/android/server/LocationManagerService;II)I
+PLcom/android/server/LocationManagerService;->-wrap2(Lcom/android/server/LocationManagerService;II)I
+PLcom/android/server/LocationManagerService;->-wrap5(Lcom/android/server/LocationManagerService;Landroid/location/Location;Z)V
+PLcom/android/server/LocationManagerService;->-wrap7(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$Receiver;)V
+PLcom/android/server/LocationManagerService;->-wrap9(Lcom/android/server/LocationManagerService;I)V
PLcom/android/server/LocationManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/LocationManagerService;->addProviderLocked(Lcom/android/server/location/LocationProviderInterface;)V
-PLcom/android/server/LocationManagerService;->applyRequirementsLocked(Ljava/lang/String;)V
PLcom/android/server/LocationManagerService;->checkDeviceStatsAllowed()V
PLcom/android/server/LocationManagerService;->checkListenerOrIntentLocked(Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver;
-PLcom/android/server/LocationManagerService;->checkLocationAccess(IILjava/lang/String;I)Z
-PLcom/android/server/LocationManagerService;->checkPackageName(Ljava/lang/String;)V
-PLcom/android/server/LocationManagerService;->checkResolutionLevelIsSufficientForProviderUse(ILjava/lang/String;)V
PLcom/android/server/LocationManagerService;->checkUpdateAppOpsAllowed()V
PLcom/android/server/LocationManagerService;->createSanitizedRequest(Landroid/location/LocationRequest;I)Landroid/location/LocationRequest;
PLcom/android/server/LocationManagerService;->ensureFallbackFusedProviderPresentLocked(Ljava/util/ArrayList;)V
PLcom/android/server/LocationManagerService;->geocoderIsPresent()Z
-PLcom/android/server/LocationManagerService;->getAllowedResolutionLevel(II)I
-PLcom/android/server/LocationManagerService;->getCallerAllowedResolutionLevel()I
-PLcom/android/server/LocationManagerService;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location;
-PLcom/android/server/LocationManagerService;->getMinimumResolutionLevelForProviderUse(Ljava/lang/String;)I
+PLcom/android/server/LocationManagerService;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
PLcom/android/server/LocationManagerService;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;
PLcom/android/server/LocationManagerService;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List;
-PLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/location/ILocationListener;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver;
PLcom/android/server/LocationManagerService;->hasGnssPermissions(Ljava/lang/String;)Z
-PLcom/android/server/LocationManagerService;->isAllowedByCurrentUserSettingsLocked(Ljava/lang/String;)Z
-PLcom/android/server/LocationManagerService;->isAllowedByUserSettingsLocked(Ljava/lang/String;I)Z
-PLcom/android/server/LocationManagerService;->isCurrentProfile(I)Z
-PLcom/android/server/LocationManagerService;->isImportanceForeground(I)Z
-PLcom/android/server/LocationManagerService;->isProviderEnabled(Ljava/lang/String;)Z
-PLcom/android/server/LocationManagerService;->isThrottlingExemptLocked(Lcom/android/server/LocationManagerService$Identity;)Z
+PLcom/android/server/LocationManagerService;->isMockProvider(Ljava/lang/String;)Z
+PLcom/android/server/LocationManagerService;->isUidALocationProvider(I)Z
PLcom/android/server/LocationManagerService;->loadProvidersLocked()V
PLcom/android/server/LocationManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;)Z
PLcom/android/server/LocationManagerService;->removeUpdates(Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V
-PLcom/android/server/LocationManagerService;->removeUpdatesLocked(Lcom/android/server/LocationManagerService$Receiver;)V
-PLcom/android/server/LocationManagerService;->reportLocationAccessNoThrow(IILjava/lang/String;I)Z
-PLcom/android/server/LocationManagerService;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V
PLcom/android/server/LocationManagerService;->requestLocationUpdatesLocked(Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;IILjava/lang/String;)V
-PLcom/android/server/LocationManagerService;->resolutionLevelToOp(I)I
PLcom/android/server/LocationManagerService;->switchUser(I)V
PLcom/android/server/LocationManagerService;->systemRunning()V
PLcom/android/server/LocationManagerService;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
@@ -4195,10 +7215,7 @@ PLcom/android/server/NativeDaemonConnector$Command;->-get0(Lcom/android/server/N
PLcom/android/server/NativeDaemonConnector$Command;->-get1(Lcom/android/server/NativeDaemonConnector$Command;)Ljava/lang/String;
PLcom/android/server/NativeDaemonConnector$Command;-><init>(Ljava/lang/String;[Ljava/lang/Object;)V
PLcom/android/server/NativeDaemonConnector$Command;->appendArg(Ljava/lang/Object;)Lcom/android/server/NativeDaemonConnector$Command;
-PLcom/android/server/NativeDaemonConnector$ResponseQueue$PendingCmd;-><init>(ILjava/lang/String;)V
PLcom/android/server/NativeDaemonConnector$ResponseQueue;-><init>(I)V
-PLcom/android/server/NativeDaemonConnector$ResponseQueue;->add(ILcom/android/server/NativeDaemonEvent;)V
-PLcom/android/server/NativeDaemonConnector$ResponseQueue;->remove(IJLjava/lang/String;)Lcom/android/server/NativeDaemonEvent;
PLcom/android/server/NativeDaemonConnector$SensitiveArg;-><init>(Ljava/lang/Object;)V
PLcom/android/server/NativeDaemonConnector$SensitiveArg;->toString()Ljava/lang/String;
PLcom/android/server/NativeDaemonConnector;-><init>(Lcom/android/server/INativeDaemonConnectorCallbacks;Ljava/lang/String;ILjava/lang/String;ILandroid/os/PowerManager$WakeLock;)V
@@ -4208,26 +7225,19 @@ PLcom/android/server/NativeDaemonConnector;->execute(JLjava/lang/String;[Ljava/l
PLcom/android/server/NativeDaemonConnector;->execute(Lcom/android/server/NativeDaemonConnector$Command;)Lcom/android/server/NativeDaemonEvent;
PLcom/android/server/NativeDaemonConnector;->execute(Ljava/lang/String;[Ljava/lang/Object;)Lcom/android/server/NativeDaemonEvent;
PLcom/android/server/NativeDaemonConnector;->executeForList(Ljava/lang/String;[Ljava/lang/Object;)[Lcom/android/server/NativeDaemonEvent;
-PLcom/android/server/NativeDaemonConnector;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/NativeDaemonConnector;->log(Ljava/lang/String;)V
PLcom/android/server/NativeDaemonConnector;->loge(Ljava/lang/String;)V
PLcom/android/server/NativeDaemonConnector;->monitor()V
PLcom/android/server/NativeDaemonConnector;->run()V
PLcom/android/server/NativeDaemonConnector;->setDebug(Z)V
PLcom/android/server/NativeDaemonConnector;->setWarnIfHeld(Ljava/lang/Object;)V
-PLcom/android/server/NativeDaemonEvent;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/io/FileDescriptor;)V
PLcom/android/server/NativeDaemonEvent;->checkCode(I)V
PLcom/android/server/NativeDaemonEvent;->filterMessageList([Lcom/android/server/NativeDaemonEvent;I)[Ljava/lang/String;
PLcom/android/server/NativeDaemonEvent;->getCmdNumber()I
-PLcom/android/server/NativeDaemonEvent;->getCode()I
PLcom/android/server/NativeDaemonEvent;->getMessage()Ljava/lang/String;
PLcom/android/server/NativeDaemonEvent;->getRawEvent()Ljava/lang/String;
PLcom/android/server/NativeDaemonEvent;->isClassClientError()Z
PLcom/android/server/NativeDaemonEvent;->isClassContinue()Z
PLcom/android/server/NativeDaemonEvent;->isClassServerError()Z
-PLcom/android/server/NativeDaemonEvent;->isClassUnsolicited()Z
-PLcom/android/server/NativeDaemonEvent;->isClassUnsolicited(I)Z
-PLcom/android/server/NativeDaemonEvent;->toString()Ljava/lang/String;
PLcom/android/server/NetworkManagementInternal;-><init>()V
PLcom/android/server/NetworkManagementService$1;-><init>(Lcom/android/server/NetworkManagementService;I)V
PLcom/android/server/NetworkManagementService$1;->run()V
@@ -4235,18 +7245,17 @@ PLcom/android/server/NetworkManagementService$IdleTimerParams;-><init>(II)V
PLcom/android/server/NetworkManagementService$LocalService;-><init>(Lcom/android/server/NetworkManagementService;)V
PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;-><init>(Lcom/android/server/NetworkManagementService;)V
PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;-><init>(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$NetdCallbackReceiver;)V
-PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onCheckHoldWakeLock(I)Z
PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onDaemonConnected()V
-PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onEvent(ILjava/lang/String;[Ljava/lang/String;)Z
-PLcom/android/server/NetworkManagementService;->-get1(Lcom/android/server/NetworkManagementService;)Ljava/util/concurrent/CountDownLatch;
-PLcom/android/server/NetworkManagementService;->-get8(Lcom/android/server/NetworkManagementService;)Landroid/util/SparseIntArray;
+PLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;-><init>(Lcom/android/server/NetworkManagementService;)V
+PLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;-><init>(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;)V
+PLcom/android/server/NetworkManagementService;->-get0(Lcom/android/server/NetworkManagementService;)Ljava/util/concurrent/CountDownLatch;
+PLcom/android/server/NetworkManagementService;->-get1(Lcom/android/server/NetworkManagementService;)Lcom/android/server/NativeDaemonConnector;
PLcom/android/server/NetworkManagementService;->-set0(Lcom/android/server/NetworkManagementService;Ljava/util/concurrent/CountDownLatch;)Ljava/util/concurrent/CountDownLatch;
PLcom/android/server/NetworkManagementService;->-wrap11(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/NetworkManagementService;->-wrap12(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/RouteInfo;)V
PLcom/android/server/NetworkManagementService;->-wrap3(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V
PLcom/android/server/NetworkManagementService;->-wrap4(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V
PLcom/android/server/NetworkManagementService;->-wrap5(Lcom/android/server/NetworkManagementService;Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->-wrap6(Lcom/android/server/NetworkManagementService;IIJIZ)V
PLcom/android/server/NetworkManagementService;->-wrap7(Lcom/android/server/NetworkManagementService;Ljava/lang/String;J[Ljava/lang/String;)V
PLcom/android/server/NetworkManagementService;->-wrap8(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Z)V
PLcom/android/server/NetworkManagementService;->-wrap9(Lcom/android/server/NetworkManagementService;Ljava/lang/String;)V
@@ -4262,37 +7271,27 @@ PLcom/android/server/NetworkManagementService;->create(Landroid/content/Context;
PLcom/android/server/NetworkManagementService;->createPhysicalNetwork(ILjava/lang/String;)V
PLcom/android/server/NetworkManagementService;->disableIpv6(Ljava/lang/String;)V
PLcom/android/server/NetworkManagementService;->enableIpv6(Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->enforceSystemUid()V
PLcom/android/server/NetworkManagementService;->getBatteryStats()Lcom/android/internal/app/IBatteryStats;
-PLcom/android/server/NetworkManagementService;->getFirewallChainName(I)Ljava/lang/String;
-PLcom/android/server/NetworkManagementService;->getFirewallRuleName(II)Ljava/lang/String;
PLcom/android/server/NetworkManagementService;->getFirewallType(I)I
PLcom/android/server/NetworkManagementService;->getInterfaceConfig(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;
PLcom/android/server/NetworkManagementService;->getNetdService()Landroid/net/INetd;
PLcom/android/server/NetworkManagementService;->getNetworkStatsSummaryDev()Landroid/net/NetworkStats;
PLcom/android/server/NetworkManagementService;->getNetworkStatsSummaryXt()Landroid/net/NetworkStats;
-PLcom/android/server/NetworkManagementService;->getNetworkStatsTethering()Landroid/net/NetworkStats;
PLcom/android/server/NetworkManagementService;->getNetworkStatsUidDetail(I)Landroid/net/NetworkStats;
-PLcom/android/server/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray;
PLcom/android/server/NetworkManagementService;->isBandwidthControlEnabled()Z
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_17509(Ljava/lang/String;ZLandroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_17716(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18101(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18305(Ljava/lang/String;Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_20521(IZJLandroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_27982(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_28210(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_28464(Ljava/lang/String;J[Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_28737(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_28817(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18114(Ljava/lang/String;ZLandroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18321(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18706(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29657(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29911(Ljava/lang/String;J[Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_30184(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_30264(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V
PLcom/android/server/NetworkManagementService;->listInterfaces()[Ljava/lang/String;
PLcom/android/server/NetworkManagementService;->modifyInterfaceInNetwork(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/NetworkManagementService;->modifyRoute(Ljava/lang/String;Ljava/lang/String;Landroid/net/RouteInfo;)V
-PLcom/android/server/NetworkManagementService;->monitor()V
PLcom/android/server/NetworkManagementService;->notifyAddressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V
PLcom/android/server/NetworkManagementService;->notifyAddressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V
PLcom/android/server/NetworkManagementService;->notifyInterfaceAdded(Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->notifyInterfaceClassActivity(IIJIZ)V
PLcom/android/server/NetworkManagementService;->notifyInterfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V
PLcom/android/server/NetworkManagementService;->notifyInterfaceLinkStateChanged(Ljava/lang/String;Z)V
PLcom/android/server/NetworkManagementService;->notifyInterfaceRemoved(Ljava/lang/String;)V
@@ -4300,6 +7299,7 @@ PLcom/android/server/NetworkManagementService;->notifyLimitReached(Ljava/lang/St
PLcom/android/server/NetworkManagementService;->notifyRouteChange(Ljava/lang/String;Landroid/net/RouteInfo;)V
PLcom/android/server/NetworkManagementService;->prepareNativeDaemon()V
PLcom/android/server/NetworkManagementService;->registerObserver(Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->registerTetheringStatsProvider(Landroid/net/ITetheringStatsProvider;Ljava/lang/String;)V
PLcom/android/server/NetworkManagementService;->reportNetworkActive()V
PLcom/android/server/NetworkManagementService;->setDataSaverModeEnabled(Z)Z
PLcom/android/server/NetworkManagementService;->setDefaultNetId(I)V
@@ -4307,29 +7307,26 @@ PLcom/android/server/NetworkManagementService;->setDnsConfigurationForNetwork(I[
PLcom/android/server/NetworkManagementService;->setFirewallChainEnabled(IZ)V
PLcom/android/server/NetworkManagementService;->setFirewallChainState(IZ)V
PLcom/android/server/NetworkManagementService;->setFirewallEnabled(Z)V
-PLcom/android/server/NetworkManagementService;->setFirewallUidRule(III)V
-PLcom/android/server/NetworkManagementService;->setFirewallUidRuleLocked(III)V
PLcom/android/server/NetworkManagementService;->setFirewallUidRules(I[I[I)V
PLcom/android/server/NetworkManagementService;->setGlobalAlert(J)V
+PLcom/android/server/NetworkManagementService;->setIPv6AddrGenMode(Ljava/lang/String;I)V
PLcom/android/server/NetworkManagementService;->setInterfaceConfig(Ljava/lang/String;Landroid/net/InterfaceConfiguration;)V
PLcom/android/server/NetworkManagementService;->setInterfaceIpv6PrivacyExtensions(Ljava/lang/String;Z)V
PLcom/android/server/NetworkManagementService;->setInterfaceUp(Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->setPermission(Ljava/lang/String;[I)V
-PLcom/android/server/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V
PLcom/android/server/NetworkManagementService;->setUidMeteredNetworkWhitelist(IZ)V
PLcom/android/server/NetworkManagementService;->setUidOnMeteredNetworkList(IZZ)V
-PLcom/android/server/NetworkManagementService;->startClatd(Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->stopClatd(Ljava/lang/String;)V
PLcom/android/server/NetworkManagementService;->syncFirewallChainLocked(ILjava/lang/String;)V
PLcom/android/server/NetworkManagementService;->systemReady()V
-PLcom/android/server/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z
PLcom/android/server/NetworkScoreService$1;-><init>(Lcom/android/server/NetworkScoreService;)V
PLcom/android/server/NetworkScoreService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;-><init>(Ljava/util/function/Supplier;)V
-PLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;->apply(Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/NetworkScoreService$2;-><init>(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/NetworkScoreService$3;-><init>(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService$3;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V
+PLcom/android/server/NetworkScoreService$3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/NetworkScoreService$DispatchingContentObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->observe(Landroid/net/Uri;I)V
+PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->onChange(ZLandroid/net/Uri;)V
PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;-><init>(Landroid/content/Context;Ljava/util/List;ILjava/util/function/UnaryOperator;Ljava/util/function/UnaryOperator;)V
PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V
PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
@@ -4338,66 +7335,71 @@ PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->filter
PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;-><init>(Lcom/android/server/NetworkScoreService;Ljava/lang/String;)V
PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;-><init>(Lcom/android/server/NetworkScoreService;Ljava/lang/String;Lcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;)V
PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->evaluateBinding(Ljava/lang/String;Z)V
-PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
PLcom/android/server/NetworkScoreService$ScoringServiceConnection;-><init>(Landroid/net/NetworkScorerAppData;)V
PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->bind(Landroid/content/Context;)V
-PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getAppData()Landroid/net/NetworkScorerAppData;
-PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getPackageName()Ljava/lang/String;
PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider;
PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
PLcom/android/server/NetworkScoreService$ServiceHandler;-><init>(Lcom/android/server/NetworkScoreService;Landroid/os/Looper;)V
-PLcom/android/server/NetworkScoreService$WifiInfoSupplier;-><init>(Landroid/content/Context;)V
-PLcom/android/server/NetworkScoreService$WifiInfoSupplier;->get()Landroid/net/wifi/WifiInfo;
-PLcom/android/server/NetworkScoreService$WifiInfoSupplier;->get()Ljava/lang/Object;
+PLcom/android/server/NetworkScoreService$ServiceHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/NetworkScoreService;->-com_android_server_NetworkScoreService-mthref-0(Landroid/net/NetworkScorerAppData;)Lcom/android/server/NetworkScoreService$ScoringServiceConnection;
PLcom/android/server/NetworkScoreService;->-get0()Z
PLcom/android/server/NetworkScoreService;->-get2(Lcom/android/server/NetworkScoreService;)Lcom/android/server/NetworkScorerAppManager;
PLcom/android/server/NetworkScoreService;->-wrap0(Lcom/android/server/NetworkScoreService;Landroid/net/NetworkScorerAppData;)V
+PLcom/android/server/NetworkScoreService;->-wrap1(Lcom/android/server/NetworkScoreService;)V
PLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;)V
PLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager;Ljava/util/function/Function;Landroid/os/Looper;)V
PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded()V
PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded(Landroid/net/NetworkScorerAppData;)V
-PLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String;
+PLcom/android/server/NetworkScoreService;->clearInternal()V
PLcom/android/server/NetworkScoreService;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider;
-PLcom/android/server/NetworkScoreService;->isCallerActiveScorer(I)Z
+PLcom/android/server/NetworkScoreService;->getScoreCacheLists()Ljava/util/Collection;
PLcom/android/server/NetworkScoreService;->onUserUnlocked(I)V
PLcom/android/server/NetworkScoreService;->refreshBinding()V
PLcom/android/server/NetworkScoreService;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V
PLcom/android/server/NetworkScoreService;->registerPackageMonitorIfNeeded()V
PLcom/android/server/NetworkScoreService;->registerRecommendationSettingsObserver()V
-PLcom/android/server/NetworkScoreService;->requestScores([Landroid/net/NetworkKey;)Z
-PLcom/android/server/NetworkScoreService;->sendCacheUpdateCallback(Ljava/util/function/BiConsumer;Ljava/util/Collection;)V
PLcom/android/server/NetworkScoreService;->systemReady()V
PLcom/android/server/NetworkScoreService;->systemRunning()V
-PLcom/android/server/NetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z
+PLcom/android/server/NetworkScoreService;->unbindFromScoringServiceIfNeeded()V
PLcom/android/server/NetworkScorerAppManager$SettingsFacade;-><init>()V
PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getInt(Landroid/content/Context;Ljava/lang/String;I)I
+PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getSecureInt(Landroid/content/Context;Ljava/lang/String;I)I
PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getString(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->putInt(Landroid/content/Context;Ljava/lang/String;I)Z
PLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager$SettingsFacade;)V
+PLcom/android/server/NetworkScorerAppManager;->canAccessLocation(ILjava/lang/String;)Z
PLcom/android/server/NetworkScorerAppManager;->findUseOpenWifiNetworksActivity(Landroid/content/pm/ServiceInfo;)Landroid/content/ComponentName;
PLcom/android/server/NetworkScorerAppManager;->getActiveScorer()Landroid/net/NetworkScorerAppData;
PLcom/android/server/NetworkScorerAppManager;->getAllValidScorers()Ljava/util/List;
+PLcom/android/server/NetworkScorerAppManager;->getDefaultPackageSetting()Ljava/lang/String;
PLcom/android/server/NetworkScorerAppManager;->getNetworkAvailableNotificationChannelId(Landroid/content/pm/ServiceInfo;)Ljava/lang/String;
PLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsEnabledSetting()I
PLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsPackage()Ljava/lang/String;
PLcom/android/server/NetworkScorerAppManager;->getRecommendationServiceLabel(Landroid/content/pm/ServiceInfo;Landroid/content/pm/PackageManager;)Ljava/lang/String;
PLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData;
-PLcom/android/server/NetworkScorerAppManager;->hasPermissions(Ljava/lang/String;)Z
+PLcom/android/server/NetworkScorerAppManager;->hasPermissions(ILjava/lang/String;)Z
+PLcom/android/server/NetworkScorerAppManager;->hasScoreNetworksPermission(Ljava/lang/String;)Z
+PLcom/android/server/NetworkScorerAppManager;->isLocationModeEnabled()Z
PLcom/android/server/NetworkScorerAppManager;->migrateNetworkScorerAppSettingIfNeeded()V
PLcom/android/server/NetworkScorerAppManager;->setNetworkRecommendationsEnabledSetting(I)V
PLcom/android/server/NetworkScorerAppManager;->updateState()V
PLcom/android/server/NetworkTimeUpdateService$1;-><init>(Lcom/android/server/NetworkTimeUpdateService;)V
PLcom/android/server/NetworkTimeUpdateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/NetworkTimeUpdateService$2;-><init>(Lcom/android/server/NetworkTimeUpdateService;)V
+PLcom/android/server/NetworkTimeUpdateService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/NetworkTimeUpdateService$MyHandler;-><init>(Lcom/android/server/NetworkTimeUpdateService;Landroid/os/Looper;)V
+PLcom/android/server/NetworkTimeUpdateService$MyHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;-><init>(Lcom/android/server/NetworkTimeUpdateService;)V
PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;-><init>(Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;)V
PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;->onAvailable(Landroid/net/Network;)V
PLcom/android/server/NetworkTimeUpdateService$SettingsObserver;-><init>(Landroid/os/Handler;I)V
PLcom/android/server/NetworkTimeUpdateService$SettingsObserver;->observe(Landroid/content/Context;)V
+PLcom/android/server/NetworkTimeUpdateService;->-get1(Lcom/android/server/NetworkTimeUpdateService;)Landroid/os/Handler;
PLcom/android/server/NetworkTimeUpdateService;->-set0(Lcom/android/server/NetworkTimeUpdateService;Landroid/net/Network;)Landroid/net/Network;
PLcom/android/server/NetworkTimeUpdateService;->-set1(Lcom/android/server/NetworkTimeUpdateService;J)J
PLcom/android/server/NetworkTimeUpdateService;->-wrap0(Lcom/android/server/NetworkTimeUpdateService;I)V
@@ -4443,14 +7445,14 @@ PLcom/android/server/PersistentDataBlockService;->-get2(Lcom/android/server/Pers
PLcom/android/server/PersistentDataBlockService;->-get4(Lcom/android/server/PersistentDataBlockService;)Z
PLcom/android/server/PersistentDataBlockService;->-get5(Lcom/android/server/PersistentDataBlockService;)Ljava/lang/Object;
PLcom/android/server/PersistentDataBlockService;->-wrap0(Lcom/android/server/PersistentDataBlockService;)Z
-PLcom/android/server/PersistentDataBlockService;->-wrap10(Lcom/android/server/PersistentDataBlockService;I)V
+PLcom/android/server/PersistentDataBlockService;->-wrap11(Lcom/android/server/PersistentDataBlockService;I)V
PLcom/android/server/PersistentDataBlockService;->-wrap2(Lcom/android/server/PersistentDataBlockService;)Z
PLcom/android/server/PersistentDataBlockService;->-wrap3(Lcom/android/server/PersistentDataBlockService;Ljava/io/DataInputStream;)I
PLcom/android/server/PersistentDataBlockService;->-wrap5(Lcom/android/server/PersistentDataBlockService;)J
-PLcom/android/server/PersistentDataBlockService;->-wrap8(Lcom/android/server/PersistentDataBlockService;)V
+PLcom/android/server/PersistentDataBlockService;->-wrap9(Lcom/android/server/PersistentDataBlockService;)V
PLcom/android/server/PersistentDataBlockService;-><init>(Landroid/content/Context;)V
PLcom/android/server/PersistentDataBlockService;->computeAndWriteDigestLocked()Z
-PLcom/android/server/PersistentDataBlockService;->computeDigestLocked([B)[B
+PLcom/android/server/PersistentDataBlockService;->doGetMaximumDataBlockSize()J
PLcom/android/server/PersistentDataBlockService;->doGetOemUnlockEnabled()Z
PLcom/android/server/PersistentDataBlockService;->enforceChecksumValidity()Z
PLcom/android/server/PersistentDataBlockService;->enforceOemUnlockReadPermission()V
@@ -4463,6 +7465,7 @@ PLcom/android/server/PersistentDataBlockService;->lambda$-com_android_server_Per
PLcom/android/server/PersistentDataBlockService;->onBootPhase(I)V
PLcom/android/server/PersistentDataBlockService;->onStart()V
PLcom/android/server/PinnerService$1;-><init>(Lcom/android/server/PinnerService;)V
+PLcom/android/server/PinnerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/PinnerService$BinderService;-><init>(Lcom/android/server/PinnerService;)V
PLcom/android/server/PinnerService$BinderService;-><init>(Lcom/android/server/PinnerService;Lcom/android/server/PinnerService$BinderService;)V
PLcom/android/server/PinnerService$PinnedFile;-><init>(JJLjava/lang/String;)V
@@ -4479,6 +7482,7 @@ PLcom/android/server/PinnerService;->onStart()V
PLcom/android/server/PinnerService;->pinCamera(I)Z
PLcom/android/server/PinnerService;->pinFile(Ljava/lang/String;JJJ)Lcom/android/server/PinnerService$PinnedFile;
PLcom/android/server/PinnerService;->unpinCameraApp()V
+PLcom/android/server/PinnerService;->unpinFile(Lcom/android/server/PinnerService$PinnedFile;)Z
PLcom/android/server/PinnerService;->update(Landroid/util/ArraySet;)V
PLcom/android/server/PruneInstantAppsJobService;->schedule(Landroid/content/Context;)V
PLcom/android/server/RandomBlock;-><init>()V
@@ -4488,14 +7492,21 @@ PLcom/android/server/RandomBlock;->fromStream(Ljava/io/InputStream;)Lcom/android
PLcom/android/server/RandomBlock;->toDataOut(Ljava/io/DataOutput;)V
PLcom/android/server/RandomBlock;->toFile(Ljava/lang/String;Z)V
PLcom/android/server/RandomBlock;->truncateIfPossible(Ljava/io/RandomAccessFile;)V
+PLcom/android/server/RecoverySystemService$BinderService;->checkAndWaitForUncryptService()Z
+PLcom/android/server/RecoverySystemService$BinderService;->clearBcb()Z
+PLcom/android/server/RecoverySystemService$BinderService;->connectService()Landroid/net/LocalSocket;
+PLcom/android/server/RecoverySystemService$BinderService;->setupOrClearBcb(ZLjava/lang/String;)Z
+PLcom/android/server/RecoverySystemService;->-get0(Lcom/android/server/RecoverySystemService;)Landroid/content/Context;
+PLcom/android/server/RecoverySystemService;->-get1()Ljava/lang/Object;
PLcom/android/server/RescueParty;->executeRescueLevel(Landroid/content/Context;)V
PLcom/android/server/RescueParty;->onSettingsProviderPublished(Landroid/content/Context;)V
PLcom/android/server/SensorNotificationService;-><init>(Landroid/content/Context;)V
PLcom/android/server/SensorNotificationService;->onBootPhase(I)V
+PLcom/android/server/SensorNotificationService;->onLocationChanged(Landroid/location/Location;)V
PLcom/android/server/SensorNotificationService;->onStart()V
+PLcom/android/server/SensorNotificationService;->useMockedLocation()Z
PLcom/android/server/SerialService;-><init>(Landroid/content/Context;)V
PLcom/android/server/ServiceWatcher$1;-><init>(Lcom/android/server/ServiceWatcher;)V
-PLcom/android/server/ServiceWatcher$1;->onPackageAdded(Ljava/lang/String;I)V
PLcom/android/server/ServiceWatcher$1;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
PLcom/android/server/ServiceWatcher$2;-><init>(Lcom/android/server/ServiceWatcher;)V
PLcom/android/server/ServiceWatcher$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
@@ -4503,14 +7514,14 @@ PLcom/android/server/ServiceWatcher;->-get0(Lcom/android/server/ServiceWatcher;)
PLcom/android/server/ServiceWatcher;->-get1(Lcom/android/server/ServiceWatcher;)Ljava/lang/Object;
PLcom/android/server/ServiceWatcher;->-wrap0(Lcom/android/server/ServiceWatcher;Ljava/lang/String;Z)Z
PLcom/android/server/ServiceWatcher;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/Runnable;Landroid/os/Handler;)V
-PLcom/android/server/ServiceWatcher;->bindBestPackageLocked(Ljava/lang/String;Z)Z
PLcom/android/server/ServiceWatcher;->bindToPackageLocked(Landroid/content/ComponentName;II)V
+PLcom/android/server/ServiceWatcher;->getBestPackageName()Ljava/lang/String;
PLcom/android/server/ServiceWatcher;->getBinder()Landroid/os/IBinder;
PLcom/android/server/ServiceWatcher;->getSignatureSets(Landroid/content/Context;Ljava/util/List;)Ljava/util/ArrayList;
PLcom/android/server/ServiceWatcher;->isServiceMissing()Z
PLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;)Z
-PLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;Ljava/util/List;)Z
PLcom/android/server/ServiceWatcher;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/ServiceWatcher;->onServiceDisconnected(Landroid/content/ComponentName;)V
PLcom/android/server/ServiceWatcher;->start()Z
PLcom/android/server/ServiceWatcher;->switchUser(I)V
PLcom/android/server/ServiceWatcher;->unbindLocked()V
@@ -4533,7 +7544,6 @@ PLcom/android/server/StorageManagerService$ObbActionHandler;-><init>(Lcom/androi
PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;)V
PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;)V
PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->addExternalStoragePolicy(Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;)V
-PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I
PLcom/android/server/StorageManagerService$StorageManagerServiceHandler;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V
PLcom/android/server/StorageManagerService$StorageManagerServiceHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/StorageManagerService;->-get0(Lcom/android/server/StorageManagerService;)Lcom/android/server/NativeDaemonConnector;
@@ -4547,15 +7557,16 @@ PLcom/android/server/StorageManagerService;->-wrap7(Lcom/android/server/StorageM
PLcom/android/server/StorageManagerService;->-wrap8(Lcom/android/server/StorageManagerService;)V
PLcom/android/server/StorageManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/StorageManagerService;->addInternalVolumeLocked()V
-PLcom/android/server/StorageManagerService;->adjustAllocateFlags(IILjava/lang/String;)I
+PLcom/android/server/StorageManagerService;->addUserKeyAuth(II[B[B)V
PLcom/android/server/StorageManagerService;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V
PLcom/android/server/StorageManagerService;->bootCompleted()V
+PLcom/android/server/StorageManagerService;->changeEncryptionPassword(ILjava/lang/String;)I
PLcom/android/server/StorageManagerService;->clearPassword()V
PLcom/android/server/StorageManagerService;->copyLocaleFromMountService()V
PLcom/android/server/StorageManagerService;->encodeBytes([B)Lcom/android/server/NativeDaemonConnector$SensitiveArg;
PLcom/android/server/StorageManagerService;->enforcePermission(Ljava/lang/String;)V
PLcom/android/server/StorageManagerService;->escapeNull(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J
+PLcom/android/server/StorageManagerService;->fixateNewestUserKeyAuth(I)V
PLcom/android/server/StorageManagerService;->getDefaultPrimaryStorageUuid()Ljava/lang/String;
PLcom/android/server/StorageManagerService;->getDisks()[Landroid/os/storage/DiskInfo;
PLcom/android/server/StorageManagerService;->getField(Ljava/lang/String;)Ljava/lang/String;
@@ -4567,7 +7578,6 @@ PLcom/android/server/StorageManagerService;->handleSystemReady()V
PLcom/android/server/StorageManagerService;->initIfReadyAndConnected()V
PLcom/android/server/StorageManagerService;->isMountDisallowed(Landroid/os/storage/VolumeInfo;)Z
PLcom/android/server/StorageManagerService;->isReady()Z
-PLcom/android/server/StorageManagerService;->isUserKeyUnlocked(I)Z
PLcom/android/server/StorageManagerService;->killMediaProvider(Ljava/util/List;)V
PLcom/android/server/StorageManagerService;->lastMaintenance()J
PLcom/android/server/StorageManagerService;->onCheckHoldWakeLock(I)Z
@@ -4589,13 +7599,12 @@ PLcom/android/server/StorageManagerService;->waitForLatch(Ljava/util/concurrent/
PLcom/android/server/StorageManagerService;->waitForLatch(Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;J)V
PLcom/android/server/StorageManagerService;->waitForReady()V
PLcom/android/server/StorageManagerService;->warnOnNotMounted()V
-PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_28929()V
-PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_34065()V
-PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_38654()V
-PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_74165(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/NetworkScoreService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/ConnectivityService;Lcom/android/server/LocationManagerService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/CommonTimeManagementService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
-PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_75070()V
+PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_29579()V
+PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_34627()V
+PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_38931()V
+PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_75718(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/NetworkScoreService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/ConnectivityService;Lcom/android/server/LocationManagerService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/CommonTimeManagementService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_76623()V
PLcom/android/server/SystemServer;->startCoreServices()V
-PLcom/android/server/SystemServer;->startOtherServices()V
PLcom/android/server/SystemServer;->startSystemUi(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/SystemServerInitThreadPool;->shutdown()V
PLcom/android/server/SystemService;->getBinderService(Ljava/lang/String;)Landroid/os/IBinder;
@@ -4609,8 +7618,6 @@ PLcom/android/server/SystemServiceManager;->isRuntimeRestarted()Z
PLcom/android/server/SystemServiceManager;->isSafeMode()Z
PLcom/android/server/SystemServiceManager;->setSafeMode(Z)V
PLcom/android/server/SystemServiceManager;->startService(Ljava/lang/String;)Lcom/android/server/SystemService;
-PLcom/android/server/SystemServiceManager;->startUser(I)V
-PLcom/android/server/SystemServiceManager;->unlockUser(I)V
PLcom/android/server/TelephonyRegistry$1;-><init>(Lcom/android/server/TelephonyRegistry;)V
PLcom/android/server/TelephonyRegistry$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/TelephonyRegistry$2;-><init>(Lcom/android/server/TelephonyRegistry;)V
@@ -4618,13 +7625,9 @@ PLcom/android/server/TelephonyRegistry$2;->onReceive(Landroid/content/Context;La
PLcom/android/server/TelephonyRegistry$Record;-><init>()V
PLcom/android/server/TelephonyRegistry$Record;-><init>(Lcom/android/server/TelephonyRegistry$Record;)V
PLcom/android/server/TelephonyRegistry$Record;->matchOnSubscriptionsChangedListener()Z
-PLcom/android/server/TelephonyRegistry$Record;->matchPhoneStateListenerEvent(I)Z
PLcom/android/server/TelephonyRegistry;->-get0(Lcom/android/server/TelephonyRegistry;)[Landroid/os/Bundle;
PLcom/android/server/TelephonyRegistry;->-get3(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler;
PLcom/android/server/TelephonyRegistry;-><init>(Landroid/content/Context;)V
-PLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-PLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ZI)V
-PLcom/android/server/TelephonyRegistry;->broadcastPreciseDataConnectionStateChanged(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Ljava/lang/String;)V
PLcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;II)V
PLcom/android/server/TelephonyRegistry;->broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;II)V
PLcom/android/server/TelephonyRegistry;->canReadPhoneState(Ljava/lang/String;)Z
@@ -4633,26 +7636,36 @@ PLcom/android/server/TelephonyRegistry;->checkNotifyPermission()Z
PLcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z
PLcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V
PLcom/android/server/TelephonyRegistry;->idMatch(III)Z
-PLcom/android/server/TelephonyRegistry;->listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZI)V
PLcom/android/server/TelephonyRegistry;->listenForSubscriber(ILjava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V
PLcom/android/server/TelephonyRegistry;->log(Ljava/lang/String;)V
PLcom/android/server/TelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/os/Bundle;)V
PLcom/android/server/TelephonyRegistry;->notifyDataActivityForSubscriber(II)V
-PLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V
PLcom/android/server/TelephonyRegistry;->notifyMessageWaitingChangedForPhoneId(IIZ)V
PLcom/android/server/TelephonyRegistry;->notifyOemHookRawEventForSubscriber(I[B)V
PLcom/android/server/TelephonyRegistry;->notifyOtaspChanged(I)V
PLcom/android/server/TelephonyRegistry;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V
-PLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V
-PLcom/android/server/TelephonyRegistry;->notifySimActivationStateChangedForPhoneId(IIII)V
PLcom/android/server/TelephonyRegistry;->notifySubscriptionInfoChanged()V
-PLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V
PLcom/android/server/TelephonyRegistry;->systemRunning()V
PLcom/android/server/TelephonyRegistry;->validatePhoneId(I)Z
+PLcom/android/server/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;-><init>(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;Lcom/android/server/TextServicesManagerService$SessionRequest;)V
+PLcom/android/server/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;)V
+PLcom/android/server/TextServicesManagerService$InternalDeathRecipients;-><init>(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;)V
+PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->-get0(Lcom/android/server/TextServicesManagerService$InternalServiceConnection;)Ljava/lang/String;
+PLcom/android/server/TextServicesManagerService$InternalServiceConnection;-><init>(Lcom/android/server/TextServicesManagerService;Ljava/lang/String;)V
+PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->onServiceConnectedInnerLocked(Landroid/content/ComponentName;Landroid/os/IBinder;)V
PLcom/android/server/TextServicesManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/TextServicesManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/TextServicesManagerService$Lifecycle;->onStart()V
PLcom/android/server/TextServicesManagerService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/TextServicesManagerService$SessionRequest;-><init>(ILjava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V
+PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->-get1(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;)Lcom/android/server/TextServicesManagerService$InternalServiceConnection;
+PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;-><init>(Lcom/android/server/TextServicesManagerService;Lcom/android/server/TextServicesManagerService$InternalServiceConnection;)V
+PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->cleanLocked()V
+PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->getISpellCheckerSessionOrQueueLocked(Lcom/android/server/TextServicesManagerService$SessionRequest;)V
+PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->onServiceConnectedLocked(Lcom/android/internal/textservice/ISpellCheckerService;)V
+PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;Lcom/android/server/TextServicesManagerService$SessionRequest;)V
+PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->removeListener(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V
PLcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;-><init>(Lcom/android/server/TextServicesManagerService;)V
PLcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;-><init>(Lcom/android/server/TextServicesManagerService;Lcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;)V
PLcom/android/server/TextServicesManagerService$TextServicesMonitor;-><init>(Lcom/android/server/TextServicesManagerService;)V
@@ -4660,24 +7673,34 @@ PLcom/android/server/TextServicesManagerService$TextServicesMonitor;-><init>(Lco
PLcom/android/server/TextServicesManagerService$TextServicesMonitor;->isChangingPackagesOfCurrentUser()Z
PLcom/android/server/TextServicesManagerService$TextServicesMonitor;->onSomePackagesChanged()V
PLcom/android/server/TextServicesManagerService$TextServicesSettings;-><init>(Landroid/content/ContentResolver;IZ)V
+PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getBoolean(Ljava/lang/String;Z)Z
PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getCurrentUserId()I
+PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getInt(Ljava/lang/String;I)I
PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getSelectedSpellChecker()Ljava/lang/String;
+PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getSelectedSpellCheckerSubtype(I)I
PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/TextServicesManagerService$TextServicesSettings;->isSpellCheckerEnabled()Z
PLcom/android/server/TextServicesManagerService$TextServicesSettings;->setCurrentProfileIds([I)V
PLcom/android/server/TextServicesManagerService$TextServicesSettings;->switchCurrentUser(IZ)V
PLcom/android/server/TextServicesManagerService;->-get1(Lcom/android/server/TextServicesManagerService;)Landroid/content/Context;
-PLcom/android/server/TextServicesManagerService;->-get2(Lcom/android/server/TextServicesManagerService;)Lcom/android/server/TextServicesManagerService$TextServicesSettings;
-PLcom/android/server/TextServicesManagerService;->-get4(Lcom/android/server/TextServicesManagerService;)Ljava/util/ArrayList;
-PLcom/android/server/TextServicesManagerService;->-get5(Lcom/android/server/TextServicesManagerService;)Ljava/util/HashMap;
+PLcom/android/server/TextServicesManagerService;->-get2(Lcom/android/server/TextServicesManagerService;)Ljava/lang/Object;
+PLcom/android/server/TextServicesManagerService;->-get3(Lcom/android/server/TextServicesManagerService;)Lcom/android/server/TextServicesManagerService$TextServicesSettings;
+PLcom/android/server/TextServicesManagerService;->-get4(Lcom/android/server/TextServicesManagerService;)Ljava/util/HashMap;
+PLcom/android/server/TextServicesManagerService;->-get5(Lcom/android/server/TextServicesManagerService;)Ljava/util/ArrayList;
+PLcom/android/server/TextServicesManagerService;->-get6(Lcom/android/server/TextServicesManagerService;)Ljava/util/HashMap;
PLcom/android/server/TextServicesManagerService;->-wrap1(Landroid/content/Context;Ljava/util/ArrayList;Ljava/util/HashMap;Lcom/android/server/TextServicesManagerService$TextServicesSettings;)V
PLcom/android/server/TextServicesManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/TextServicesManagerService;->buildSpellCheckerMapLocked(Landroid/content/Context;Ljava/util/ArrayList;Ljava/util/HashMap;Lcom/android/server/TextServicesManagerService$TextServicesSettings;)V
-PLcom/android/server/TextServicesManagerService;->calledFromValidUser()Z
+PLcom/android/server/TextServicesManagerService;->bindCurrentSpellCheckerService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
PLcom/android/server/TextServicesManagerService;->findAvailSpellCheckerLocked(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo;
+PLcom/android/server/TextServicesManagerService;->finishSpellCheckerService(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V
PLcom/android/server/TextServicesManagerService;->getCurrentSpellChecker(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo;
PLcom/android/server/TextServicesManagerService;->getCurrentSpellCheckerWithoutVerification()Landroid/view/textservice/SpellCheckerInfo;
+PLcom/android/server/TextServicesManagerService;->getSpellCheckerService(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V
+PLcom/android/server/TextServicesManagerService;->isSpellCheckerEnabled()Z
+PLcom/android/server/TextServicesManagerService;->isSpellCheckerEnabledLocked()Z
PLcom/android/server/TextServicesManagerService;->onUnlockUser(I)V
PLcom/android/server/TextServicesManagerService;->resetInternalState(I)V
+PLcom/android/server/TextServicesManagerService;->startSpellCheckerServiceInnerLocked(Landroid/view/textservice/SpellCheckerInfo;)Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;
PLcom/android/server/TextServicesManagerService;->systemRunning()V
PLcom/android/server/TextServicesManagerService;->unbindServiceLocked()V
PLcom/android/server/TextServicesManagerService;->updateCurrentProfileIds()V
@@ -4685,29 +7708,28 @@ PLcom/android/server/ThreadPriorityBooster$1;->initialValue()Lcom/android/server
PLcom/android/server/ThreadPriorityBooster$1;->initialValue()Ljava/lang/Object;
PLcom/android/server/ThreadPriorityBooster$PriorityState;-><init>()V
PLcom/android/server/ThreadPriorityBooster$PriorityState;-><init>(Lcom/android/server/ThreadPriorityBooster$PriorityState;)V
-PLcom/android/server/ThreadPriorityBooster;->setBoostToPriority(I)V
PLcom/android/server/UiModeManagerService$1;-><init>(Lcom/android/server/UiModeManagerService;)V
PLcom/android/server/UiModeManagerService$2;-><init>(Lcom/android/server/UiModeManagerService;)V
PLcom/android/server/UiModeManagerService$3;-><init>(Lcom/android/server/UiModeManagerService;)V
-PLcom/android/server/UiModeManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/UiModeManagerService$4;-><init>(Lcom/android/server/UiModeManagerService;)V
PLcom/android/server/UiModeManagerService$5;-><init>(Lcom/android/server/UiModeManagerService;)V
PLcom/android/server/UiModeManagerService$6;-><init>(Lcom/android/server/UiModeManagerService;)V
PLcom/android/server/UiModeManagerService$6;->getCurrentModeType()I
PLcom/android/server/UiModeManagerService;->-set0(Lcom/android/server/UiModeManagerService;Z)Z
PLcom/android/server/UiModeManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/UiModeManagerService;->isDeskDockState(I)Z
PLcom/android/server/UiModeManagerService;->lambda$-com_android_server_UiModeManagerService_9177()V
PLcom/android/server/UiModeManagerService;->onBootPhase(I)V
PLcom/android/server/UiModeManagerService;->onStart()V
PLcom/android/server/UiModeManagerService;->registerVrStateListener()V
-PLcom/android/server/UiModeManagerService;->sendConfigurationAndStartDreamOrDockAppLocked(Ljava/lang/String;)V
PLcom/android/server/UiModeManagerService;->sendConfigurationLocked()V
PLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked()V
-PLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V
-PLcom/android/server/UiModeManagerService;->updateLocked(II)V
PLcom/android/server/UpdateLockService$LockWatcher;-><init>(Lcom/android/server/UpdateLockService;Landroid/os/Handler;Ljava/lang/String;)V
+PLcom/android/server/UpdateLockService$LockWatcher;->acquired()V
+PLcom/android/server/UpdateLockService$LockWatcher;->released()V
PLcom/android/server/UpdateLockService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/UpdateLockService;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/UpdateLockService;->makeTag(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/UpdateLockService;->releaseUpdateLock(Landroid/os/IBinder;)V
PLcom/android/server/UpdateLockService;->sendLockChangedBroadcast(Z)V
PLcom/android/server/VibratorService$1;-><init>(Lcom/android/server/VibratorService;)V
PLcom/android/server/VibratorService$1;->run()V
@@ -4716,61 +7738,31 @@ PLcom/android/server/VibratorService$3;-><init>(Lcom/android/server/VibratorServ
PLcom/android/server/VibratorService$4;-><init>(Lcom/android/server/VibratorService;)V
PLcom/android/server/VibratorService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/VibratorService$SettingsObserver;-><init>(Lcom/android/server/VibratorService;Landroid/os/Handler;)V
-PLcom/android/server/VibratorService$VibrateThread;-><init>(Lcom/android/server/VibratorService;Landroid/os/VibrationEffect$Waveform;II)V
-PLcom/android/server/VibratorService$VibrateThread;->cancel()V
-PLcom/android/server/VibratorService$VibrateThread;->delayLocked(J)J
-PLcom/android/server/VibratorService$VibrateThread;->getTotalOnDuration([J[III)J
-PLcom/android/server/VibratorService$VibrateThread;->playWaveform()Z
-PLcom/android/server/VibratorService$VibrateThread;->run()V
-PLcom/android/server/VibratorService$Vibration;->-get0(Lcom/android/server/VibratorService$Vibration;)Landroid/os/VibrationEffect;
PLcom/android/server/VibratorService$Vibration;->-get1(Lcom/android/server/VibratorService$Vibration;)Ljava/lang/String;
PLcom/android/server/VibratorService$Vibration;->-get2(Lcom/android/server/VibratorService$Vibration;)J
-PLcom/android/server/VibratorService$Vibration;->-get4(Lcom/android/server/VibratorService$Vibration;)I
PLcom/android/server/VibratorService$Vibration;->-get5(Lcom/android/server/VibratorService$Vibration;)I
PLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;IILjava/lang/String;)V
PLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;IILjava/lang/String;Lcom/android/server/VibratorService$Vibration;)V
PLcom/android/server/VibratorService$VibrationInfo;-><init>(JLandroid/os/VibrationEffect;IILjava/lang/String;)V
-PLcom/android/server/VibratorService;->-get2(Lcom/android/server/VibratorService;)Lcom/android/server/VibratorService$VibrateThread;
-PLcom/android/server/VibratorService;->-get3(Lcom/android/server/VibratorService;)Landroid/os/WorkSource;
-PLcom/android/server/VibratorService;->-get4(Lcom/android/server/VibratorService;)Landroid/os/PowerManager$WakeLock;
-PLcom/android/server/VibratorService;->-wrap1(Lcom/android/server/VibratorService;JIII)V
PLcom/android/server/VibratorService;->-wrap3(Lcom/android/server/VibratorService;)V
PLcom/android/server/VibratorService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
PLcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V
PLcom/android/server/VibratorService;->createEffect([J)Landroid/os/VibrationEffect;
-PLcom/android/server/VibratorService;->doCancelVibrateLocked()V
PLcom/android/server/VibratorService;->doVibratorExists()Z
-PLcom/android/server/VibratorService;->doVibratorOff()V
-PLcom/android/server/VibratorService;->doVibratorOn(JIII)V
-PLcom/android/server/VibratorService;->doVibratorPrebakedEffectLocked(Lcom/android/server/VibratorService$Vibration;)J
-PLcom/android/server/VibratorService;->doVibratorSetAmplitude(I)V
-PLcom/android/server/VibratorService;->getAppOpMode(Lcom/android/server/VibratorService$Vibration;)I
PLcom/android/server/VibratorService;->getLongIntArray(Landroid/content/res/Resources;I)[J
PLcom/android/server/VibratorService;->hasVibrator()Z
PLcom/android/server/VibratorService;->isAllowedToVibrate(Lcom/android/server/VibratorService$Vibration;)Z
PLcom/android/server/VibratorService;->noteVibratorOffLocked()V
PLcom/android/server/VibratorService;->noteVibratorOnLocked(IJ)V
PLcom/android/server/VibratorService;->onVibrationFinished()V
-PLcom/android/server/VibratorService;->reportFinishVibrationLocked()V
-PLcom/android/server/VibratorService;->startVibrationInnerLocked(Lcom/android/server/VibratorService$Vibration;)V
-PLcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
PLcom/android/server/VibratorService;->systemReady()V
PLcom/android/server/VibratorService;->updateInputDeviceVibratorsLocked()Z
PLcom/android/server/VibratorService;->updateLowPowerModeLocked()Z
PLcom/android/server/VibratorService;->updateVibrators()V
-PLcom/android/server/VibratorService;->verifyIncomingUid(I)V
PLcom/android/server/VibratorService;->verifyVibrationEffect(Landroid/os/VibrationEffect;)Z
-PLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILandroid/os/IBinder;)V
-PLcom/android/server/Watchdog$BinderThreadMonitor;->monitor()V
-PLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I
-PLcom/android/server/Watchdog$HandlerChecker;->run()V
-PLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked()V
PLcom/android/server/Watchdog$RebootRequestReceiver;-><init>(Lcom/android/server/Watchdog;)V
-PLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I
PLcom/android/server/Watchdog;->init(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/Watchdog;->processStarted(Ljava/lang/String;I)V
-PLcom/android/server/Watchdog;->run()V
PLcom/android/server/WiredAccessoryManager$1;-><init>(Lcom/android/server/WiredAccessoryManager;Landroid/os/Looper;Landroid/os/Handler$Callback;Z)V
PLcom/android/server/WiredAccessoryManager$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;-><init>(Lcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;Ljava/lang/String;III)V
@@ -4799,6 +7791,8 @@ PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;->$m$2(L
PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;-><init>(BI)V
PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;->accept(Ljava/lang/Object;)V
PLcom/android/server/accessibility/AccessibilityManagerService$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$1;->onPackageUpdateFinished(Ljava/lang/String;I)V
PLcom/android/server/accessibility/AccessibilityManagerService$1;->onSomePackagesChanged()V
PLcom/android/server/accessibility/AccessibilityManagerService$2;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
PLcom/android/server/accessibility/AccessibilityManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
@@ -4807,36 +7801,79 @@ PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConn
PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;->unlinkToDeath()V
PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Handler;)V
PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->register(Landroid/content/ContentResolver;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->clearAccessibilityFocusNotLocked(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->getAccessibilityFocusNotLocked(I)Landroid/view/accessibility/AccessibilityNodeInfo;
PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Looper;)V
PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->getUserClientsForId(I)Landroid/os/RemoteCallbackList;
PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->lambda$-com_android_server_accessibility_AccessibilityManagerService$MainHandler_113337(ILandroid/view/accessibility/IAccessibilityManagerClient;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->lambda$-com_android_server_accessibility_AccessibilityManagerService$MainHandler_113532(ILandroid/view/accessibility/IAccessibilityManagerClient;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->notifyClientsOfServicesStateChange(Landroid/os/RemoteCallbackList;)V
PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->sendStateToClients(ILandroid/os/RemoteCallbackList;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap3(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)I
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap4(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)Landroid/view/WindowInfo;
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap4(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)I
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap5(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canCaptureFingerprintGestures(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canControlMagnification(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canRetrieveWindowsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->clearWindowsLocked()V
PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->findWindowInfoById(I)Landroid/view/WindowInfo;
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->getFocusedWindowId()I
PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->hasPermission(Ljava/lang/String;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isCallerInteractingAcrossUsers(I)Z
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->notifyWindowsChanged()V
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveProfileParentLocked(I)I
+PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->setAccessibilityFocusedWindowLocked(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/os/Looper;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service$2;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service$2;->run()V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service$InvocationHandler;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/os/Looper;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;ILandroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->bindLocked()Z
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->binderDied()V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->canRetrieveInteractiveWindowsLocked()Z
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->findFocus(IJIILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->getWindow(I)Landroid/view/accessibility/AccessibilityWindowInfo;
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->isCapturingFingerprintGestures()Z
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->isConnectedLocked()Z
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onAdded()V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onRemoved()V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->resetLocked()V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->resolveAccessibilityWindowIdForFindFocusLocked(II)I
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->setDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Service;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
PLcom/android/server/accessibility/AccessibilityManagerService$UserState$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get0(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Landroid/os/IBinder$DeathRecipient;
PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get1(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Lcom/android/server/accessibility/AccessibilityManagerService$Service;
+PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get2(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Landroid/accessibilityservice/IAccessibilityServiceClient;
+PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set0(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)I
+PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set1(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Lcom/android/server/accessibility/AccessibilityManagerService$Service;
+PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set2(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Landroid/accessibilityservice/IAccessibilityServiceClient;)Landroid/accessibilityservice/IAccessibilityServiceClient;
+PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set3(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Landroid/os/IBinder;)Landroid/os/IBinder;
PLcom/android/server/accessibility/AccessibilityManagerService$UserState;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->destroyUiAutomationService()V
PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->getClientState()I
-PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isHandlingAccessibilityEvents()Z
PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isUiAutomationSuppressingOtherServices()Z
PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->onSwitchToAnotherUser()V
+PLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->-get0()I
PLcom/android/server/accessibility/AccessibilityManagerService;->-get1(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/content/Context;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-get19(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-get2(Lcom/android/server/accessibility/AccessibilityManagerService;)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->-get10(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-get13(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/os/PowerManager;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-get19(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/view/WindowManagerInternal;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-get21()Landroid/content/ComponentName;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-get22()I
PLcom/android/server/accessibility/AccessibilityManagerService;->-get4(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/os/RemoteCallbackList;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-get8(Lcom/android/server/accessibility/AccessibilityManagerService;)Ljava/lang/Object;
-PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap12(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-set0(I)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap11(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;
PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap13(Lcom/android/server/accessibility/AccessibilityManagerService;I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap14(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/KeyEventDispatcher;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap16(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap18(Lcom/android/server/accessibility/AccessibilityManagerService;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap20(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap23(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap25(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap28(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap29(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap30(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
@@ -4844,15 +7881,18 @@ PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap33(Lcom/an
PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap34(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap4(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
+PLcom/android/server/accessibility/AccessibilityManagerService;->addServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->broadcastToClients(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Ljava/util/function/Consumer;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserStateLocked()Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
-PLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityManagerService;->canRequestAndRequestsTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->ensureWindowsAvailableTimed()V
PLcom/android/server/accessibility/AccessibilityManagerService;->getInstalledAccessibilityServiceList(I)Ljava/util/List;
-PLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61351(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61405(ILandroid/view/accessibility/IAccessibilityManagerClient;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->getInteractionBridge()Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getKeyEventDispatcher()Lcom/android/server/accessibility/KeyEventDispatcher;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getMagnificationController()Lcom/android/server/accessibility/MagnificationController;
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61763(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61817(ILandroid/view/accessibility/IAccessibilityManagerClient;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChanged(Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChangedLocked(Z)V
PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityShortcutSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readAutoclickEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
@@ -4861,11 +7901,14 @@ PLcom/android/server/accessibility/AccessibilityManagerService;->readComponentNa
PLcom/android/server/accessibility/AccessibilityManagerService;->readConfigurationForUserStateLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readEnabledAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readHighTextContrastEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationEnabledSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationGrantedAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/AccessibilityManagerService;->registerBroadcastReceivers()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->registerUiTestAutomationService(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/accessibilityservice/AccessibilityServiceInfo;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->removeServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleNotifyClientsOfServicesStateChange(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateClientsIfNeededLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateInputFilter(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
@@ -4873,20 +7916,18 @@ PLcom/android/server/accessibility/AccessibilityManagerService;->setPictureInPic
PLcom/android/server/accessibility/AccessibilityManagerService;->switchUser(I)V
PLcom/android/server/accessibility/AccessibilityManagerService;->unbindAllServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->unlockUser(I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargets(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->unregisterUiTestAutomationService(Landroid/accessibilityservice/IAccessibilityServiceClient;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityEnabledSetting(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityFocusBehaviorLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateDisplayDaltonizerLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateDisplayInversionLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateFilterKeyEventsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateInputFilter(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updatePerformGesturesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateRelevantEventsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateSoftKeyboardShowModeLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
PLcom/android/server/accessibility/AccessibilityManagerService;->updateWindowsForAccessibilityCallbackLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
@@ -4894,30 +7935,39 @@ PLcom/android/server/accessibility/AccessibilityManagerService;->userHasListenin
PLcom/android/server/accessibility/AccessibilityManagerService;->userHasMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
PLcom/android/server/accessibility/DisplayAdjustmentUtils;->applyDaltonizerSetting(Landroid/content/Context;I)V
PLcom/android/server/accessibility/DisplayAdjustmentUtils;->applyInversionSetting(Landroid/content/Context;I)V
+PLcom/android/server/accessibility/KeyEventDispatcher;-><init>(Landroid/os/Handler;ILjava/lang/Object;Landroid/os/PowerManager;)V
+PLcom/android/server/accessibility/KeyEventDispatcher;->flush(Lcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;)V
+PLcom/android/server/accessibility/MagnificationController$1;-><init>(Lcom/android/server/accessibility/MagnificationController;)V
+PLcom/android/server/accessibility/MagnificationController$ScreenStateObserver;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/MagnificationController;)V
+PLcom/android/server/accessibility/MagnificationController$SettingsBridge;-><init>(Landroid/content/ContentResolver;)V
+PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;-><init>(Landroid/content/Context;Ljava/lang/Object;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;)V
+PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;-><init>(Landroid/content/Context;Ljava/lang/Object;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;Lcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;)V
+PLcom/android/server/accessibility/MagnificationController;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/MagnificationController;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;Landroid/os/Handler;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;Lcom/android/server/accessibility/MagnificationController$SettingsBridge;)V
+PLcom/android/server/accessibility/MagnificationController;->getIdOfLastServiceToMagnify()I
+PLcom/android/server/accessibility/MagnificationController;->isMagnifying()Z
+PLcom/android/server/accessibility/MagnificationController;->setUserId(I)V
+PLcom/android/server/accessibility/MagnificationController;->unregister()V
+PLcom/android/server/accessibility/MagnificationController;->unregisterInternalLocked()V
PLcom/android/server/accounts/-$Lambda$JwXVQhqSYlVkCeKB5Nx7U6RsZlU;-><init>(Ljava/lang/Object;)V
PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>()V
PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>(Lcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;)V
PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/accounts/AuthenticatorDescription;
PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/Object;
PLcom/android/server/accounts/AccountAuthenticatorCache;-><init>(Landroid/content/Context;)V
-PLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
-PLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/accounts/AuthenticatorDescription;
PLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object;
PLcom/android/server/accounts/AccountManagerService$1;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/accounts/AccountManagerService$2;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
-PLcom/android/server/accounts/AccountManagerService$2;->onPackageAdded(Ljava/lang/String;I)V
PLcom/android/server/accounts/AccountManagerService$3;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
-PLcom/android/server/accounts/AccountManagerService$7;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZIZLjava/lang/String;[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V
-PLcom/android/server/accounts/AccountManagerService$7;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/accounts/AccountManagerService$7;->run()V
+PLcom/android/server/accounts/AccountManagerService$3;->onPackageUpdateFinished(Ljava/lang/String;I)V
+PLcom/android/server/accounts/AccountManagerService$4;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$8;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZIZLjava/lang/String;[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService$8;->run()V
PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;)V
PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->addOnAppPermissionChangeListener(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;)V
PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/String;Z)V
-PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V
-PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V
-PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V
PLcom/android/server/accounts/AccountManagerService$Injector;-><init>(Landroid/content/Context;)V
PLcom/android/server/accounts/AccountManagerService$Injector;->addLocalService(Landroid/accounts/AccountManagerInternal;)V
PLcom/android/server/accounts/AccountManagerService$Injector;->getAccountAuthenticatorCache()Lcom/android/server/accounts/IAccountAuthenticatorCache;
@@ -4933,101 +7983,57 @@ PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onUnlockUser(I)V
PLcom/android/server/accounts/AccountManagerService$MessageHandler;-><init>(Lcom/android/server/accounts/AccountManagerService;Landroid/os/Looper;)V
PLcom/android/server/accounts/AccountManagerService$NotificationId;->-get0(Lcom/android/server/accounts/AccountManagerService$NotificationId;)I
PLcom/android/server/accounts/AccountManagerService$NotificationId;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;Z)V
-PLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V
-PLcom/android/server/accounts/AccountManagerService$Session;->bind()V
-PLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z
-PLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V
-PLcom/android/server/accounts/AccountManagerService$Session;->close()V
-PLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse;
-PLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/accounts/AccountManagerService$Session;->unbind()V
PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->onResult(Landroid/os/Bundle;)V
PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->run()V
PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get0(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Lcom/android/server/accounts/TokenCache;
PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get1(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
-PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get10(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get2(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap;
PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get4(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get6(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap;
-PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get8(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
-PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get9(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-set0(Lcom/android/server/accounts/AccountManagerService$UserAccounts;I)I
PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-set1(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/database/sqlite/SQLiteStatement;)Landroid/database/sqlite/SQLiteStatement;
PLcom/android/server/accounts/AccountManagerService$UserAccounts;-><init>(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)V
PLcom/android/server/accounts/AccountManagerService;->-get1(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
PLcom/android/server/accounts/AccountManagerService;->-get2(Lcom/android/server/accounts/AccountManagerService;)Lcom/android/server/accounts/IAccountAuthenticatorCache;
-PLcom/android/server/accounts/AccountManagerService;->-get5(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/LinkedHashMap;
PLcom/android/server/accounts/AccountManagerService;->-wrap11(Lcom/android/server/accounts/AccountManagerService;IZ)V
PLcom/android/server/accounts/AccountManagerService;->-wrap13(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/os/UserHandle;)V
PLcom/android/server/accounts/AccountManagerService;->-wrap21(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V
-PLcom/android/server/accounts/AccountManagerService;->-wrap4(Lcom/android/server/accounts/AccountManagerService;I)Z
PLcom/android/server/accounts/AccountManagerService;->-wrap9(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId;
PLcom/android/server/accounts/AccountManagerService;-><init>(Lcom/android/server/accounts/AccountManagerService$Injector;)V
-PLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z
-PLcom/android/server/accounts/AccountManagerService;->accountTypeManagesContacts(Ljava/lang/String;I)Z
-PLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;)[B
PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(IZ)V
PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;ILjava/lang/String;Z)V
PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;IZ)V
PLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/os/UserHandle;)V
-PLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Landroid/os/UserHandle;)V
PLcom/android/server/accounts/AccountManagerService;->checkGetAccountsPermission(Ljava/lang/String;II)Z
PLcom/android/server/accounts/AccountManagerService;->checkReadAccountsPermitted(ILjava/lang/String;ILjava/lang/String;)V
PLcom/android/server/accounts/AccountManagerService;->checkReadContactsPermission(Ljava/lang/String;II)Z
-PLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map;
-PLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
-PLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account;
-PLcom/android/server/accounts/AccountManagerService;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
+PLcom/android/server/accounts/AccountManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->dumpUser(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
PLcom/android/server/accounts/AccountManagerService;->getAccounts([I)[Landroid/accounts/AccountAndUser;
-PLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account;
-PLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
PLcom/android/server/accounts/AccountManagerService;->getAllAccounts()[Landroid/accounts/AccountAndUser;
-PLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V
PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypeAndUIDForUser(Lcom/android/server/accounts/IAccountAuthenticatorCache;I)Ljava/util/HashMap;
-PLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription;
PLcom/android/server/accounts/AccountManagerService;->getPassword(Landroid/accounts/Account;)Ljava/lang/String;
PLcom/android/server/accounts/AccountManagerService;->getRunningAccounts()[Landroid/accounts/AccountAndUser;
-PLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId;
PLcom/android/server/accounts/AccountManagerService;->getSingleton()Lcom/android/server/accounts/AccountManagerService;
-PLcom/android/server/accounts/AccountManagerService;->getTypesManagedByCaller(II)Ljava/util/List;
-PLcom/android/server/accounts/AccountManagerService;->getTypesVisibleToCaller(IILjava/lang/String;)Ljava/util/List;
-PLcom/android/server/accounts/AccountManagerService;->getUidsOfInstalledOrUpdatedPackagesAsUser(I)Landroid/util/SparseBooleanArray;
-PLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
-PLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager;
-PLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;I)Z
-PLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z
PLcom/android/server/accounts/AccountManagerService;->hasExplicitlyGrantedPermission(Landroid/accounts/Account;Ljava/lang/String;I)Z
-PLcom/android/server/accounts/AccountManagerService;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountManagerService;->initializeDebugDbSizeAndCompileSqlStatementForLogging(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
PLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z
PLcom/android/server/accounts/AccountManagerService;->isAccountVisibleToCaller(Ljava/lang/String;IILjava/lang/String;)Z
-PLcom/android/server/accounts/AccountManagerService;->isLocalUnlockedUser(I)Z
-PLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z
-PLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z
-PLcom/android/server/accounts/AccountManagerService;->onAccountAccessed(Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/accounts/AccountManagerService;->isCrossUser(II)Z
+PLcom/android/server/accounts/AccountManagerService;->onResult(Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;)V
PLcom/android/server/accounts/AccountManagerService;->onUnlockUser(I)V
-PLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z
PLcom/android/server/accounts/AccountManagerService;->purgeOldGrants(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
-PLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->readCachedTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String;
PLcom/android/server/accounts/AccountManagerService;->readPasswordInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
PLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/accounts/AccountManagerService;->saveCachedToken(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/accounts/AccountManagerService;->scanArgs([Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountManagerService;->syncDeCeAccountsLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
PLcom/android/server/accounts/AccountManagerService;->validateAccounts(I)V
PLcom/android/server/accounts/AccountManagerService;->validateAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Z)V
PLcom/android/server/accounts/AccountManagerService;->writeAuthTokenIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
@@ -5035,7 +8041,6 @@ PLcom/android/server/accounts/AccountManagerService;->writeUserDataIntoCacheLock
PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;-><init>(Landroid/content/Context;Ljava/lang/String;)V
PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->create(Landroid/content/Context;Ljava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb$CeDatabaseHelper;
PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
-PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-get0(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)Z
PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-set0(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Z)Z
PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;)V
PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)V
@@ -5050,6 +8055,7 @@ PLcom/android/server/accounts/AccountsDb;->compileSqlStatementForLogging()Landro
PLcom/android/server/accounts/AccountsDb;->create(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb;
PLcom/android/server/accounts/AccountsDb;->deleteAuthToken(Ljava/lang/String;)Z
PLcom/android/server/accounts/AccountsDb;->deleteAuthtokensByAccountIdAndType(JLjava/lang/String;)Z
+PLcom/android/server/accounts/AccountsDb;->dumpDeAccountsTable(Ljava/io/PrintWriter;)V
PLcom/android/server/accounts/AccountsDb;->endTransaction()V
PLcom/android/server/accounts/AccountsDb;->findAccountPasswordByNameAndType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/accounts/AccountsDb;->findAllDeAccounts()Ljava/util/Map;
@@ -5059,16 +8065,14 @@ PLcom/android/server/accounts/AccountsDb;->findAuthTokensByAccount(Landroid/acco
PLcom/android/server/accounts/AccountsDb;->findAuthtokenForAllAccounts(Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
PLcom/android/server/accounts/AccountsDb;->findCeAccountsNotInDe()Ljava/util/List;
PLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J
-PLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J
PLcom/android/server/accounts/AccountsDb;->findMatchingGrantsCountAnyToken(ILandroid/accounts/Account;)J
PLcom/android/server/accounts/AccountsDb;->findMetaAuthUid()Ljava/util/Map;
-PLcom/android/server/accounts/AccountsDb;->findUserExtrasForAccount(Landroid/accounts/Account;)Ljava/util/Map;
PLcom/android/server/accounts/AccountsDb;->insertAuthToken(JLjava/lang/String;Ljava/lang/String;)J
-PLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z
+PLcom/android/server/accounts/AccountsDb;->insertExtra(JLjava/lang/String;Ljava/lang/String;)J
PLcom/android/server/accounts/AccountsDb;->setTransactionSuccessful()V
PLcom/android/server/accounts/AccountsDb;->updateExtra(JLjava/lang/String;)Z
PLcom/android/server/accounts/TokenCache$Key;-><init>(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)V
-PLcom/android/server/accounts/TokenCache$Key;->hashCode()I
+PLcom/android/server/accounts/TokenCache$Key;->equals(Ljava/lang/Object;)Z
PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;-><init>(Lcom/android/server/accounts/TokenCache$TokenLruCache;)V
PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->add(Lcom/android/server/accounts/TokenCache$Key;)V
PLcom/android/server/accounts/TokenCache$TokenLruCache;-><init>()V
@@ -5078,12 +8082,9 @@ PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Lcom/android/ser
PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/accounts/TokenCache$Value;-><init>(Ljava/lang/String;J)V
PLcom/android/server/accounts/TokenCache;-><init>()V
-PLcom/android/server/accounts/TokenCache;->get(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String;
PLcom/android/server/accounts/TokenCache;->put(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BJ)V
PLcom/android/server/accounts/TokenCache;->remove(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->$m$1()V
-PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;-><init>(BIIIIIIIILjava/lang/Object;)V
-PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->run()V
+PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->$m$0()V
PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$0(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$1(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$10(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
@@ -5092,366 +8093,217 @@ PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$12(Landroid/ap
PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$13(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$8(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$9(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-PLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->$m$0(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
PLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;-><init>(B)V
-PLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+PLcom/android/server/am/ActiveInstrumentation;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActiveInstrumentation;->removeProcess(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActiveServices$ActiveForegroundApp;-><init>()V
-PLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
PLcom/android/server/am/ActiveServices$ServiceMap;-><init>(Lcom/android/server/am/ActiveServices;Landroid/os/Looper;I)V
PLcom/android/server/am/ActiveServices$ServiceMap;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V
-PLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;)V
-PLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$ServiceRestarter;)V
PLcom/android/server/am/ActiveServices$ServiceRestarter;->run()V
-PLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V
PLcom/android/server/am/ActiveServices;->-get0()Ljava/lang/String;
-PLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z
-PLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZZ)Z
-PLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
-PLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;Landroid/content/ComponentName;Landroid/content/Intent;)V
-PLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZZLandroid/util/ArrayMap;)Z
PLcom/android/server/am/ActiveServices;->decActiveForegroundAppLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Lcom/android/server/am/ServiceRecord;
-PLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V
+PLcom/android/server/am/ActiveServices;->foregroundAppShownEnoughLocked(Lcom/android/server/am/ActiveServices$ActiveForegroundApp;J)Z
PLcom/android/server/am/ActiveServices;->foregroundServiceProcStateChangedLocked(Lcom/android/server/am/UidRecord;)V
-PLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List;
-PLcom/android/server/am/ActiveServices;->getServiceByNameLocked(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
PLcom/android/server/am/ActiveServices;->getServicesLocked(I)Landroid/util/ArrayMap;
-PLcom/android/server/am/ActiveServices;->hasBackgroundServicesLocked(I)Z
-PLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z
-PLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V
-PLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
-PLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZ)Z
-PLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;Z)V
PLcom/android/server/am/ActiveServices;->requestUpdateActiveForegroundAppsLocked(Lcom/android/server/am/ActiveServices$ServiceMap;J)V
-PLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
+PLcom/android/server/am/ActiveServices;->serviceProcessGoneLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->serviceTimeout(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;I)V
PLcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;I)V
-PLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V
-PLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
-PLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V
-PLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
-PLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V
-PLcom/android/server/am/ActiveServices;->updateScreenStateLocked(Z)V
-PLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActiveServices;->updateWhitelistManagerLocked(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActivityManagerConstants;->start(Landroid/content/ContentResolver;)V
PLcom/android/server/am/ActivityManagerConstants;->updateConstants()V
PLcom/android/server/am/ActivityManagerService$10;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$10;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/ActivityManagerService$11;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;ILandroid/os/IBinder;Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$18;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$18;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
PLcom/android/server/am/ActivityManagerService$19;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/StringBuilder;Landroid/os/DropBoxManager;Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$19;->run()V
-PLcom/android/server/am/ActivityManagerService$1;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
-PLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Landroid/content/IntentFilter;
-PLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Lcom/android/server/am/BroadcastFilter;
-PLcom/android/server/am/ActivityManagerService$1;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
-PLcom/android/server/am/ActivityManagerService$1;->newResult(Lcom/android/server/am/BroadcastFilter;II)Lcom/android/server/am/BroadcastFilter;
PLcom/android/server/am/ActivityManagerService$20;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Landroid/os/DropBoxManager;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService$20;->run()V
PLcom/android/server/am/ActivityManagerService$21;-><init>(Lcom/android/server/am/ActivityManagerService;IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V
PLcom/android/server/am/ActivityManagerService$21;->run()V
PLcom/android/server/am/ActivityManagerService$22;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Landroid/os/DropBoxManager;)V
PLcom/android/server/am/ActivityManagerService$22;->run()V
-PLcom/android/server/am/ActivityManagerService$2;->lambda$-com_android_server_am_ActivityManagerService$2_103032(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+PLcom/android/server/am/ActivityManagerService$24;-><init>()V
+PLcom/android/server/am/ActivityManagerService$28;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$28;->run()V
PLcom/android/server/am/ActivityManagerService$8;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$9;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
-PLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V
PLcom/android/server/am/ActivityManagerService$AppTaskImpl;-><init>(Lcom/android/server/am/ActivityManagerService;II)V
PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->checkCaller()V
-PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;
PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->setExcludeFromRecents(Z)V
PLcom/android/server/am/ActivityManagerService$CpuBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$DbBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$FontScaleSettingObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$GrantUri;-><init>(ILandroid/net/Uri;Z)V
-PLcom/android/server/am/ActivityManagerService$GrantUri;->hashCode()I
-PLcom/android/server/am/ActivityManagerService$GrantUri;->resolve(ILandroid/net/Uri;)Lcom/android/server/am/ActivityManagerService$GrantUri;
PLcom/android/server/am/ActivityManagerService$GraphicsBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-PLcom/android/server/am/ActivityManagerService$KillHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/am/ActivityManagerService$ImportanceToken;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/os/IBinder;Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->getUidProcessState(I)I
PLcom/android/server/am/ActivityManagerService$LocalService;->isSystemReady()Z
PLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionCancelled()V
-PLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionFinished()V
-PLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionStarting(Landroid/util/SparseIntArray;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->notifyDockedStackMinimizedChanged(Z)V
PLcom/android/server/am/ActivityManagerService$LocalService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->notifyKeyguardTrustedChanged()V
-PLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setDeviceIdleWhitelist([I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setFocusedActivity(Landroid/os/IBinder;)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setHasOverlayUi(IZ)V
PLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentWhitelistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;J)V
PLcom/android/server/am/ActivityManagerService$LocalService;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)I
PLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempWhitelist([IIZ)V
-PLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/am/ActivityManagerService$MemBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$PendingAssistExtras;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;Landroid/content/Intent;Ljava/lang/String;Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;I)V
+PLcom/android/server/am/ActivityManagerService$PendingTempWhitelist;-><init>(IJLjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService$PermissionController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$PermissionController;->checkPermission(Ljava/lang/String;II)Z
+PLcom/android/server/am/ActivityManagerService$PermissionController;->getPackagesForUid(I)[Ljava/lang/String;
PLcom/android/server/am/ActivityManagerService$ProcessChangeItem;-><init>()V
PLcom/android/server/am/ActivityManagerService$ProcessInfoService;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService$ProcessInfoService;->getProcessStatesAndOomScoresFromPids([I[I[I)V
-PLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/am/ActivityManagerService$UidObserverRegistration;-><init>(ILjava/lang/String;II)V
PLcom/android/server/am/ActivityManagerService;->-get0()Ljava/lang/String;
PLcom/android/server/am/ActivityManagerService;->-get2(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/KeyguardController;
-PLcom/android/server/am/ActivityManagerService;->-get5(Lcom/android/server/am/ActivityManagerService;)Ljava/lang/StringBuilder;
PLcom/android/server/am/ActivityManagerService;->-get6(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/VrController;
+PLcom/android/server/am/ActivityManagerService;->-set0(Lcom/android/server/am/ActivityManagerService;Z)Z
PLcom/android/server/am/ActivityManagerService;->-wrap0(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/TaskRecord;)Landroid/app/ActivityManager$RecentTaskInfo;
-PLcom/android/server/am/ActivityManagerService;->-wrap2(Lcom/android/server/am/ActivityManagerService;II)V
PLcom/android/server/am/ActivityManagerService;->-wrap3(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/ActivityManagerService;->-wrap5(Lcom/android/server/am/ActivityManagerService;I)V
PLcom/android/server/am/ActivityManagerService;->-wrap6(Lcom/android/server/am/ActivityManagerService;Z)V
-PLcom/android/server/am/ActivityManagerService;->-wrap7(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActivityManagerService;->-wrap9(Lcom/android/server/am/ActivityManagerService;I)V
+PLcom/android/server/am/ActivityManagerService;->acquireSleepToken(Ljava/lang/String;I)Landroid/app/ActivityManagerInternal$SleepToken;
PLcom/android/server/am/ActivityManagerService;->activityDestroyed(Landroid/os/IBinder;)V
-PLcom/android/server/am/ActivityManagerService;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
-PLcom/android/server/am/ActivityManagerService;->activityPaused(Landroid/os/IBinder;)V
-PLcom/android/server/am/ActivityManagerService;->activityResumed(Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityManagerService;->activityRelaunched(Landroid/os/IBinder;)V
PLcom/android/server/am/ActivityManagerService;->activitySlept(Landroid/os/IBinder;)V
-PLcom/android/server/am/ActivityManagerService;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZLjava/lang/String;)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->addBackgroundCheckViolationLocked(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V
PLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
-PLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;Z)V
-PLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLocked(ILjava/lang/String;I)I
-PLcom/android/server/am/ActivityManagerService;->appServicesRestrictedInBackgroundLocked(ILjava/lang/String;I)I
-PLcom/android/server/am/ActivityManagerService;->applyUpdateLockStateLocked(Lcom/android/server/am/ActivityRecord;)V
+PLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActivityManagerService;->applyUpdateVrModeLocked(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;)V
-PLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V
PLcom/android/server/am/ActivityManagerService;->batteryNeedsCpuUpdate()V
-PLcom/android/server/am/ActivityManagerService;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I
+PLcom/android/server/am/ActivityManagerService;->batteryPowerChanged(Z)V
+PLcom/android/server/am/ActivityManagerService;->batterySendBroadcast(Landroid/content/Intent;)V
PLcom/android/server/am/ActivityManagerService;->bootAnimationComplete()V
-PLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZI)I
-PLcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
PLcom/android/server/am/ActivityManagerService;->buildAssistBundleLocked(Lcom/android/server/am/ActivityManagerService$PendingAssistExtras;Landroid/os/Bundle;)V
PLcom/android/server/am/ActivityManagerService;->canClearIdentity(III)Z
-PLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V
PLcom/android/server/am/ActivityManagerService;->cancelIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Z)V
-PLcom/android/server/am/ActivityManagerService;->cancelTaskThumbnailTransition(I)V
-PLcom/android/server/am/ActivityManagerService;->cancelTaskWindowTransition(I)V
-PLcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;)Z
PLcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IIIILjava/lang/String;)Z
PLcom/android/server/am/ActivityManagerService;->checkAuthorityGrants(ILandroid/content/pm/ProviderInfo;IZ)Z
-PLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V
-PLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked(Z)V
-PLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;I)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
-PLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;II)I
-PLcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsInternalLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ActivityManagerService$GrantUri;IIZ)Z
-PLcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ActivityManagerService$GrantUri;II)Z
-PLcom/android/server/am/ActivityManagerService;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I
PLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I
PLcom/android/server/am/ActivityManagerService;->checkUriPermissionLocked(Lcom/android/server/am/ActivityManagerService$GrantUri;II)Z
-PLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZIZ)Z
-PLcom/android/server/am/ActivityManagerService;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
PLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageComponentsLocked(Ljava/lang/String;IZ[Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageTasksLocked(Ljava/lang/String;Ljava/util/Set;I)V
PLcom/android/server/am/ActivityManagerService;->closeSystemDialogs(Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->closeSystemDialogsLocked(Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
-PLcom/android/server/am/ActivityManagerService;->dispatchProcessDied(II)V
-PLcom/android/server/am/ActivityManagerService;->dispatchProcessesChanged()V
-PLcom/android/server/am/ActivityManagerService;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActivityManagerService;->doStopUidLocked(ILcom/android/server/am/UidRecord;)V
+PLcom/android/server/am/ActivityManagerService;->dumpHeap(Ljava/lang/String;IZZZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)Z
+PLcom/android/server/am/ActivityManagerService;->dumpHeapFinished(Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->enableScreenAfterBoot()V
-PLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->enqueueAssistContext(ILandroid/content/Intent;Ljava/lang/String;Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZILandroid/os/Bundle;JI)Lcom/android/server/am/ActivityManagerService$PendingAssistExtras;
-PLcom/android/server/am/ActivityManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/am/ActivityRecord;I)Z
-PLcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V
-PLcom/android/server/am/ActivityManagerService;->findOrCreateUriPermissionLocked(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/am/ActivityManagerService$GrantUri;)Lcom/android/server/am/UriPermission;
-PLcom/android/server/am/ActivityManagerService;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z
+PLcom/android/server/am/ActivityManagerService;->findProcessLocked(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/am/ProcessRecord;
PLcom/android/server/am/ActivityManagerService;->finishBooting()V
+PLcom/android/server/am/ActivityManagerService;->finishForceStopPackageLocked(Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->finishInstrumentation(Landroid/app/IApplicationThread;ILandroid/os/Bundle;)V
+PLcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
PLcom/android/server/am/ActivityManagerService;->finishRunningVoiceLocked()V
-PLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZILjava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
+PLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;ILjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->getActivityDisplayId(Landroid/os/IBinder;)I
-PLcom/android/server/am/ActivityManagerService;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle;
PLcom/android/server/am/ActivityManagerService;->getActivityStackId(Landroid/os/IBinder;)I
-PLcom/android/server/am/ActivityManagerService;->getAllStackInfos()Ljava/util/List;
PLcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
PLcom/android/server/am/ActivityManagerService;->getAppOpsService()Lcom/android/internal/app/IAppOpsService;
-PLcom/android/server/am/ActivityManagerService;->getAppTasks(Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet;
PLcom/android/server/am/ActivityManagerService;->getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName;
PLcom/android/server/am/ActivityManagerService;->getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityManagerService;->getCommonServicesLocked(Z)Ljava/util/HashMap;
PLcom/android/server/am/ActivityManagerService;->getConfiguration()Landroid/content/res/Configuration;
-PLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
+PLcom/android/server/am/ActivityManagerService;->getContentProviderExternal(Ljava/lang/String;ILandroid/os/IBinder;)Landroid/app/ContentProviderHolder;
PLcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)Landroid/app/ContentProviderHolder;
-PLcom/android/server/am/ActivityManagerService;->getCurrentUser()Landroid/content/pm/UserInfo;
PLcom/android/server/am/ActivityManagerService;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
-PLcom/android/server/am/ActivityManagerService;->getFocusedStack()Lcom/android/server/am/ActivityStack;
-PLcom/android/server/am/ActivityManagerService;->getFocusedStackId()I
-PLcom/android/server/am/ActivityManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration;
PLcom/android/server/am/ActivityManagerService;->getHomeIntent()Landroid/content/Intent;
PLcom/android/server/am/ActivityManagerService;->getInputDispatchingTimeoutLocked(Lcom/android/server/am/ActivityRecord;)J
PLcom/android/server/am/ActivityManagerService;->getInputDispatchingTimeoutLocked(Lcom/android/server/am/ProcessRecord;)J
-PLcom/android/server/am/ActivityManagerService;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent;
-PLcom/android/server/am/ActivityManagerService;->getLastResumedActivityUserId()I
-PLcom/android/server/am/ActivityManagerService;->getLockTaskModeState()I
-PLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
-PLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I
-PLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
-PLcom/android/server/am/ActivityManagerService;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String;
-PLcom/android/server/am/ActivityManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I
-PLcom/android/server/am/ActivityManagerService;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
-PLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;IZ)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ActivityManagerService;->getKsmInfo()[J
PLcom/android/server/am/ActivityManagerService;->getProcessStatesAndOomScoresForPIDs([I[I[I)V
-PLcom/android/server/am/ActivityManagerService;->getProviderInfoLocked(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
PLcom/android/server/am/ActivityManagerService;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String;
PLcom/android/server/am/ActivityManagerService;->getRequestedOrientation(Landroid/os/IBinder;)I
PLcom/android/server/am/ActivityManagerService;->getRunningUserIds()[I
PLcom/android/server/am/ActivityManagerService;->getServices(II)Ljava/util/List;
-PLcom/android/server/am/ActivityManagerService;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo;
-PLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/ActivityManagerService;->getTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap;
PLcom/android/server/am/ActivityManagerService;->getTaskForActivity(Landroid/os/IBinder;Z)I
-PLcom/android/server/am/ActivityManagerService;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot;
-PLcom/android/server/am/ActivityManagerService;->getTasks(II)Ljava/util/List;
-PLcom/android/server/am/ActivityManagerService;->getUidForIntentSender(Landroid/content/IIntentSender;)I
PLcom/android/server/am/ActivityManagerService;->getUidFromIntent(Landroid/content/Intent;)I
PLcom/android/server/am/ActivityManagerService;->getUidState(I)I
PLcom/android/server/am/ActivityManagerService;->getUidStateLocked(I)I
-PLcom/android/server/am/ActivityManagerService;->grantUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
PLcom/android/server/am/ActivityManagerService;->grantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/am/UriPermissionOwner;I)V
-PLcom/android/server/am/ActivityManagerService;->grantUriPermissionLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;ILcom/android/server/am/UriPermissionOwner;I)V
-PLcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;ILcom/android/server/am/UriPermissionOwner;)V
-PLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
PLcom/android/server/am/ActivityManagerService;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;)Z
PLcom/android/server/am/ActivityManagerService;->handleApplicationWtfInner(IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
-PLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->idleUids()V
PLcom/android/server/am/ActivityManagerService;->installEncryptionUnawareProviders(I)V
PLcom/android/server/am/ActivityManagerService;->installSystemProviders()V
PLcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z
PLcom/android/server/am/ActivityManagerService;->isInLockTaskMode()Z
-PLcom/android/server/am/ActivityManagerService;->isInMultiWindowMode(Landroid/os/IBinder;)Z
+PLcom/android/server/am/ActivityManagerService;->isInPictureInPictureMode(Landroid/os/IBinder;)Z
+PLcom/android/server/am/ActivityManagerService;->isInPictureInPictureMode(Lcom/android/server/am/ActivityRecord;)Z
PLcom/android/server/am/ActivityManagerService;->isKeyguardLocked()Z
PLcom/android/server/am/ActivityManagerService;->isNextTransitionForward()Z
-PLcom/android/server/am/ActivityManagerService;->isOnDeviceIdleWhitelistLocked(I)Z
-PLcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z
-PLcom/android/server/am/ActivityManagerService;->isShuttingDownLocked()Z
-PLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
PLcom/android/server/am/ActivityManagerService;->isSleepingOrShuttingDownLocked()Z
-PLcom/android/server/am/ActivityManagerService;->isTopOfTask(Landroid/os/IBinder;)Z
-PLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z
-PLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z
PLcom/android/server/am/ActivityManagerService;->keyguardGoingAway(I)V
PLcom/android/server/am/ActivityManagerService;->killAllBackgroundProcessesExcept(II)V
PLcom/android/server/am/ActivityManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZLjava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->killProcessGroup(II)V
PLcom/android/server/am/ActivityManagerService;->logAppTooSlow(Lcom/android/server/am/ProcessRecord;JLjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->makeIntentSenderCanceledLocked(Lcom/android/server/am/PendingIntentRecord;)V
-PLcom/android/server/am/ActivityManagerService;->monitor()V
-PLcom/android/server/am/ActivityManagerService;->moveTaskToFrontLocked(IILandroid/os/Bundle;Z)V
-PLcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZI)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ActivityManagerService;->moveActivityTaskToBack(Landroid/os/IBinder;Z)Z
PLcom/android/server/am/ActivityManagerService;->newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder;
-PLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;ILjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;ILjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->noteUidProcessState(II)V
-PLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->notifyActivityDrawn(Landroid/os/IBinder;)V
PLcom/android/server/am/ActivityManagerService;->notifyEnterAnimationComplete(Landroid/os/IBinder;)V
-PLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V
PLcom/android/server/am/ActivityManagerService;->notifyTaskPersisterLocked(Lcom/android/server/am/TaskRecord;Z)V
PLcom/android/server/am/ActivityManagerService;->notifyVrManagerOfSleepState(Z)V
PLcom/android/server/am/ActivityManagerService;->onCoreSettingsChange(Landroid/os/Bundle;)V
+PLcom/android/server/am/ActivityManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
PLcom/android/server/am/ActivityManagerService;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V
PLcom/android/server/am/ActivityManagerService;->performDisplayOverrideConfigUpdate(Landroid/content/res/Configuration;ZI)I
PLcom/android/server/am/ActivityManagerService;->postFinishBooting(ZZ)V
-PLcom/android/server/am/ActivityManagerService;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I
PLcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
-PLcom/android/server/am/ActivityManagerService;->processContentProviderPublishTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityManagerService;->pushTempWhitelist()V
PLcom/android/server/am/ActivityManagerService;->readGrantedUriPermissionsLocked()V
-PLcom/android/server/am/ActivityManagerService;->recordPssSampleLocked(Lcom/android/server/am/ProcessRecord;IJJJJ)V
PLcom/android/server/am/ActivityManagerService;->registerProcessObserver(Landroid/app/IProcessObserver;)V
PLcom/android/server/am/ActivityManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
PLcom/android/server/am/ActivityManagerService;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->removeContentProviderExternal(Ljava/lang/String;Landroid/os/IBinder;)V
PLcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
-PLcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
-PLcom/android/server/am/ActivityManagerService;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
PLcom/android/server/am/ActivityManagerService;->removeUriPermissionsForPackageLocked(Ljava/lang/String;IZ)V
+PLcom/android/server/am/ActivityManagerService;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V
PLcom/android/server/am/ActivityManagerService;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V
PLcom/android/server/am/ActivityManagerService;->reportSizeConfigurations(Landroid/os/IBinder;[I[I[I)V
PLcom/android/server/am/ActivityManagerService;->requestAutofillData(Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;Landroid/os/IBinder;I)Z
PLcom/android/server/am/ActivityManagerService;->requestPssAllProcsLocked(JZZ)V
-PLcom/android/server/am/ActivityManagerService;->requestPssLocked(Lcom/android/server/am/ProcessRecord;I)V
PLcom/android/server/am/ActivityManagerService;->resolveActivityInfo(Landroid/content/Intent;II)Landroid/content/pm/ActivityInfo;
PLcom/android/server/am/ActivityManagerService;->retrieveSettings()V
-PLcom/android/server/am/ActivityManagerService;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
-PLcom/android/server/am/ActivityManagerService;->revokeUriPermissionLocked(Ljava/lang/String;ILcom/android/server/am/ActivityManagerService$GrantUri;I)V
-PLcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
PLcom/android/server/am/ActivityManagerService;->scheduleApplicationInfoChanged(Ljava/util/List;I)V
PLcom/android/server/am/ActivityManagerService;->scheduleStartProfilesLocked()V
-PLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
PLcom/android/server/am/ActivityManagerService;->sendNotifyVrManagerOfSleepState(Z)V
-PLcom/android/server/am/ActivityManagerService;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
-PLcom/android/server/am/ActivityManagerService;->setAppIdTempWhitelistStateLocked(IZ)V
PLcom/android/server/am/ActivityManagerService;->setDisablePreviewScreenshots(Landroid/os/IBinder;Z)V
PLcom/android/server/am/ActivityManagerService;->setHasTopUi(Z)V
+PLcom/android/server/am/ActivityManagerService;->setImmersive(Landroid/os/IBinder;Z)V
PLcom/android/server/am/ActivityManagerService;->setLockScreenShown(Z)V
-PLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLocked(Lcom/android/server/am/ProcessRecord;IJ)V
-PLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V
-PLcom/android/server/am/ActivityManagerService;->setRequestedOrientation(Landroid/os/IBinder;I)V
-PLcom/android/server/am/ActivityManagerService;->setResumedActivityUncheckLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->setProcessImportant(Landroid/os/IBinder;IZLjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;I)V
PLcom/android/server/am/ActivityManagerService;->setSystemProcess()V
-PLcom/android/server/am/ActivityManagerService;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V
+PLcom/android/server/am/ActivityManagerService;->setUidTempWhitelistStateLocked(IZ)V
PLcom/android/server/am/ActivityManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V
PLcom/android/server/am/ActivityManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/am/ActivityManagerService;->shouldDisableNonVrUiLocked()Z
PLcom/android/server/am/ActivityManagerService;->shouldShowDialogs(Landroid/content/res/Configuration;)Z
-PLcom/android/server/am/ActivityManagerService;->shouldSleepLocked()Z
-PLcom/android/server/am/ActivityManagerService;->showAskCompatModeDialogLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityManagerService;->showUnsupportedZoomDialogIfNeededLocked(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
PLcom/android/server/am/ActivityManagerService;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I
-PLcom/android/server/am/ActivityManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I
-PLcom/android/server/am/ActivityManagerService;->startActivityFromRecents(ILandroid/os/Bundle;)I
-PLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IILandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association;
+PLcom/android/server/am/ActivityManagerService;->startActivityAndWait(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)Landroid/app/WaitResult;
PLcom/android/server/am/ActivityManagerService;->startHomeActivityLocked(ILjava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;ILandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;ILjava/lang/String;)Z
PLcom/android/server/am/ActivityManagerService;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)I
PLcom/android/server/am/ActivityManagerService;->startObservingNativeCrashes()V
PLcom/android/server/am/ActivityManagerService;->startPersistentApps(I)V
-PLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZIZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZZ)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName;
PLcom/android/server/am/ActivityManagerService;->startSetupActivityLocked()V
PLcom/android/server/am/ActivityManagerService;->startTimeTrackingFocusedActivityLocked()V
PLcom/android/server/am/ActivityManagerService;->stopAppSwitches()V
-PLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;ILandroid/content/ComponentName;)V
-PLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
-PLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
PLcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;Landroid/util/TimingsTraceLog;)V
-PLcom/android/server/am/ActivityManagerService;->trimApplications()V
-PLcom/android/server/am/ActivityManagerService;->uidOnBackgroundWhitelist(I)Z
+PLcom/android/server/am/ActivityManagerService;->tempWhitelistUidLocked(IJLjava/lang/String;)V
PLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
-PLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z
PLcom/android/server/am/ActivityManagerService;->unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V
-PLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V
PLcom/android/server/am/ActivityManagerService;->updateApplicationInfoLocked(Ljava/util/List;I)V
PLcom/android/server/am/ActivityManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z
PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;Z)Z
@@ -5460,14 +8312,22 @@ PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landr
PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZIZLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)Z
PLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)Z
PLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZI)Z
-PLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZILcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)Z
PLcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
-PLcom/android/server/am/ActivityManagerService;->updateGlobalConfiguration(Landroid/content/res/Configuration;ZZIZ)I
PLcom/android/server/am/ActivityManagerService;->updateLockTaskPackages(I[Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
PLcom/android/server/am/ActivityManagerService;->updateSleepIfNeededLocked()V
-PLcom/android/server/am/ActivityManagerService;->updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V
-PLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
+PLcom/android/server/am/ActivityManagerShellCommand$1;-><init>(Lcom/android/server/am/ActivityManagerShellCommand;)V
+PLcom/android/server/am/ActivityManagerShellCommand$1;->handleOption(Ljava/lang/String;Landroid/os/ShellCommand;)Z
+PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->waitForFinish()V
+PLcom/android/server/am/ActivityManagerShellCommand;->-set10(Lcom/android/server/am/ActivityManagerShellCommand;Z)Z
+PLcom/android/server/am/ActivityManagerShellCommand;->-set14(Lcom/android/server/am/ActivityManagerShellCommand;Z)Z
+PLcom/android/server/am/ActivityManagerShellCommand;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
+PLcom/android/server/am/ActivityManagerShellCommand;->makeIntent(I)Landroid/content/Intent;
+PLcom/android/server/am/ActivityManagerShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runDumpHeap(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runForceStop(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runSendBroadcast(Ljava/io/PrintWriter;)I
PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get0(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I
PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get1(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)Z
PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get2(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)Lcom/android/server/am/ActivityRecord;
@@ -5488,371 +8348,210 @@ PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set7(Lcom/a
PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set8(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;I)I
PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;-><init>(Lcom/android/server/am/ActivityMetricsLogger;)V
PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;-><init>(Lcom/android/server/am/ActivityMetricsLogger;Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)V
-PLcom/android/server/am/ActivityMetricsLogger;->allStacksWindowsDrawn()Z
PLcom/android/server/am/ActivityMetricsLogger;->calculateCurrentDelay()I
+PLcom/android/server/am/ActivityMetricsLogger;->calculateDelay(J)I
PLcom/android/server/am/ActivityMetricsLogger;->getTransitionType(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I
PLcom/android/server/am/ActivityMetricsLogger;->hasStartedActivity(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)Z
-PLcom/android/server/am/ActivityMetricsLogger;->isAnyTransitionActive()Z
-PLcom/android/server/am/ActivityMetricsLogger;->logAppTransitionMultiEvents()V
-PLcom/android/server/am/ActivityMetricsLogger;->logWindowState()V
-PLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;ZZ)V
+PLcom/android/server/am/ActivityMetricsLogger;->logAppTransitionReportedDrawn(Lcom/android/server/am/ActivityRecord;Z)V
PLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunching()V
-PLcom/android/server/am/ActivityMetricsLogger;->notifyBindApplication(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityMetricsLogger;->notifyStartingWindowDrawn(I)V
-PLcom/android/server/am/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/SparseIntArray;)V
-PLcom/android/server/am/ActivityMetricsLogger;->notifyVisibilityChanged(Lcom/android/server/am/ActivityRecord;Z)V
-PLcom/android/server/am/ActivityMetricsLogger;->notifyWindowsDrawn(I)V
PLcom/android/server/am/ActivityMetricsLogger;->reset(Z)V
-PLcom/android/server/am/ActivityRecord$Token;->-wrap0(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityRecord$Token;-><init>(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityRecord$Token;->toString()Ljava/lang/String;
-PLcom/android/server/am/ActivityRecord$Token;->tokenToActivityRecordLocked(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityRecord;->-getcom-android-server-am-ActivityStack$ActivityStateSwitchesValues()[I
-PLcom/android/server/am/ActivityRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityStackSupervisor$ActivityContainer;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityRecord;->activityResumedLocked(Landroid/os/IBinder;)V
-PLcom/android/server/am/ActivityRecord;->activityStoppedLocked(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
PLcom/android/server/am/ActivityRecord;->addNewIntentLocked(Lcom/android/internal/content/ReferrerIntent;)V
PLcom/android/server/am/ActivityRecord;->addResultLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V
PLcom/android/server/am/ActivityRecord;->allowTaskSnapshot()Z
-PLcom/android/server/am/ActivityRecord;->applyOptionsLocked()V
+PLcom/android/server/am/ActivityRecord;->canBeLaunchedOnDisplay(I)Z
PLcom/android/server/am/ActivityRecord;->canLaunchHomeActivity(ILcom/android/server/am/ActivityRecord;)Z
PLcom/android/server/am/ActivityRecord;->checkEnterPictureInPictureAppOpsState()Z
-PLcom/android/server/am/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;ZZ)Z
PLcom/android/server/am/ActivityRecord;->clearOptionsLocked()V
-PLcom/android/server/am/ActivityRecord;->completeResumeLocked()V
-PLcom/android/server/am/ActivityRecord;->computeBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/am/ActivityRecord;->continueLaunchTickingLocked()Z
-PLcom/android/server/am/ActivityRecord;->createWindowContainer()V
+PLcom/android/server/am/ActivityRecord;->createImageFilename(JI)Ljava/lang/String;
+PLcom/android/server/am/ActivityRecord;->crossesHorizontalSizeThreshold(II)Z
+PLcom/android/server/am/ActivityRecord;->crossesSizeThreshold([III)Z
+PLcom/android/server/am/ActivityRecord;->crossesVerticalSizeThreshold(II)Z
PLcom/android/server/am/ActivityRecord;->deliverNewIntentLocked(ILandroid/content/Intent;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityRecord;->ensureActivityConfigurationLocked(IZ)Z
-PLcom/android/server/am/ActivityRecord;->finishLaunchTickingLocked()V
-PLcom/android/server/am/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityRecord;->getChildCount()I
-PLcom/android/server/am/ActivityRecord;->getDisplayId()I
+PLcom/android/server/am/ActivityRecord;->getConfigurationChanges(Landroid/content/res/Configuration;)I
PLcom/android/server/am/ActivityRecord;->getOptionsForTargetActivityLocked()Landroid/app/ActivityOptions;
-PLcom/android/server/am/ActivityRecord;->getParent()Lcom/android/server/am/ConfigurationContainer;
PLcom/android/server/am/ActivityRecord;->getRequestedOrientation()I
-PLcom/android/server/am/ActivityRecord;->getStackId()I
-PLcom/android/server/am/ActivityRecord;->getStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityStack;
-PLcom/android/server/am/ActivityRecord;->getTask()Lcom/android/server/am/TaskRecord;
PLcom/android/server/am/ActivityRecord;->getTaskForActivityLocked(Landroid/os/IBinder;Z)I
PLcom/android/server/am/ActivityRecord;->getUriPermissionsLocked()Lcom/android/server/am/UriPermissionOwner;
PLcom/android/server/am/ActivityRecord;->getWindowContainerController()Lcom/android/server/wm/AppWindowContainerController;
-PLcom/android/server/am/ActivityRecord;->handleAlreadyVisible()Z
-PLcom/android/server/am/ActivityRecord;->hasDismissKeyguardWindows()Z
-PLcom/android/server/am/ActivityRecord;->hasShowWhenLockedWindows()Z
PLcom/android/server/am/ActivityRecord;->isAlwaysFocusable()Z
-PLcom/android/server/am/ActivityRecord;->isAssistantActivity()Z
-PLcom/android/server/am/ActivityRecord;->isConfigurationCompatible(Landroid/content/res/Configuration;)Z
-PLcom/android/server/am/ActivityRecord;->isFocusable()Z
PLcom/android/server/am/ActivityRecord;->isFreeform()Z
-PLcom/android/server/am/ActivityRecord;->isHomeActivity()Z
PLcom/android/server/am/ActivityRecord;->isHomeIntent(Landroid/content/Intent;)Z
-PLcom/android/server/am/ActivityRecord;->isInHistory()Z
-PLcom/android/server/am/ActivityRecord;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
+PLcom/android/server/am/ActivityRecord;->isInVrUiMode(Landroid/content/res/Configuration;)Z
PLcom/android/server/am/ActivityRecord;->isMainIntent(Landroid/content/Intent;)Z
PLcom/android/server/am/ActivityRecord;->isNoHistory()Z
-PLcom/android/server/am/ActivityRecord;->isPersistable()Z
PLcom/android/server/am/ActivityRecord;->isProcessRunning()Z
-PLcom/android/server/am/ActivityRecord;->isRecentsActivity()Z
+PLcom/android/server/am/ActivityRecord;->isResizeOnlyChange(I)Z
PLcom/android/server/am/ActivityRecord;->isResizeable()Z
-PLcom/android/server/am/ActivityRecord;->isResolverActivity()Z
+PLcom/android/server/am/ActivityRecord;->isTopRunningActivity()Z
PLcom/android/server/am/ActivityRecord;->makeFinishingLocked()V
PLcom/android/server/am/ActivityRecord;->makeVisibleIfNeeded(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityRecord;->mayFreezeScreenLocked(Lcom/android/server/am/ProcessRecord;)Z
PLcom/android/server/am/ActivityRecord;->notifyAppResumed(Z)V
PLcom/android/server/am/ActivityRecord;->notifyUnknownVisibilityLaunched()V
-PLcom/android/server/am/ActivityRecord;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/am/ActivityRecord;->onOverrideConfigurationSent()V
-PLcom/android/server/am/ActivityRecord;->onStartingWindowDrawn()V
-PLcom/android/server/am/ActivityRecord;->onWindowsDrawn()V
PLcom/android/server/am/ActivityRecord;->onWindowsGone()V
-PLcom/android/server/am/ActivityRecord;->onWindowsVisible()V
+PLcom/android/server/am/ActivityRecord;->onlyVrUiModeChanged(ILandroid/content/res/Configuration;)Z
PLcom/android/server/am/ActivityRecord;->pauseKeyDispatchingLocked()V
-PLcom/android/server/am/ActivityRecord;->removeOrphanedStartingWindow(Z)V
+PLcom/android/server/am/ActivityRecord;->relaunchActivityLocked(ZZ)V
PLcom/android/server/am/ActivityRecord;->removeUriPermissionsLocked()V
PLcom/android/server/am/ActivityRecord;->removeWindowContainer()V
-PLcom/android/server/am/ActivityRecord;->reportLaunchTimeLocked(J)V
-PLcom/android/server/am/ActivityRecord;->resumeKeyDispatchingLocked()V
+PLcom/android/server/am/ActivityRecord;->reportFullyDrawnLocked(Z)V
+PLcom/android/server/am/ActivityRecord;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/am/ActivityRecord;->screenshotActivityLocked()Landroid/graphics/Bitmap;
-PLcom/android/server/am/ActivityRecord;->setActivityType(ZILandroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityRecord;->setDeferHidingClient(Z)V
PLcom/android/server/am/ActivityRecord;->setDisablePreviewScreenshots(Z)V
+PLcom/android/server/am/ActivityRecord;->setLastReportedConfiguration(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
PLcom/android/server/am/ActivityRecord;->setLastReportedConfiguration(Landroid/util/MergedConfiguration;)V
PLcom/android/server/am/ActivityRecord;->setLastReportedGlobalConfiguration(Landroid/content/res/Configuration;)V
PLcom/android/server/am/ActivityRecord;->setRequestedOrientation(I)V
PLcom/android/server/am/ActivityRecord;->setSizeConfigurations([I[I[I)V
PLcom/android/server/am/ActivityRecord;->setSleeping(Z)V
PLcom/android/server/am/ActivityRecord;->setSleeping(ZZ)V
-PLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;)V
-PLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;Z)V
-PLcom/android/server/am/ActivityRecord;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
-PLcom/android/server/am/ActivityRecord;->setVisibility(Z)V
-PLcom/android/server/am/ActivityRecord;->setVisible(Z)V
-PLcom/android/server/am/ActivityRecord;->shouldBeVisibleIgnoringKeyguard(ZZLcom/android/server/am/ActivityRecord;Z)Z
+PLcom/android/server/am/ActivityRecord;->shouldRelaunchLocked(ILandroid/content/res/Configuration;)Z
PLcom/android/server/am/ActivityRecord;->showStartingWindow(Lcom/android/server/am/ActivityRecord;ZZ)V
-PLcom/android/server/am/ActivityRecord;->showStartingWindow(Lcom/android/server/am/ActivityRecord;ZZZ)V
PLcom/android/server/am/ActivityRecord;->startFreezingScreenLocked(Lcom/android/server/am/ProcessRecord;I)V
-PLcom/android/server/am/ActivityRecord;->startLaunchTickingLocked()V
-PLcom/android/server/am/ActivityRecord;->stopFreezingScreenLocked(Z)V
-PLcom/android/server/am/ActivityRecord;->supportsPictureInPicture()Z
+PLcom/android/server/am/ActivityRecord;->supportsResizeableMultiWindow()Z
PLcom/android/server/am/ActivityRecord;->takeFromHistory()V
-PLcom/android/server/am/ActivityRecord;->toString()Ljava/lang/String;
+PLcom/android/server/am/ActivityRecord;->takeOptionsLocked()Landroid/app/ActivityOptions;
PLcom/android/server/am/ActivityRecord;->updateOptionsLocked(Landroid/app/ActivityOptions;)V
-PLcom/android/server/am/ActivityRecord;->updateOverrideConfiguration()V
PLcom/android/server/am/ActivityRecord;->updateThumbnailLocked(Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
PLcom/android/server/am/ActivityResult;-><init>(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V
PLcom/android/server/am/ActivityStack$ActivityStackHandler;-><init>(Lcom/android/server/am/ActivityStack;Landroid/os/Looper;)V
-PLcom/android/server/am/ActivityStack$ActivityStackHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/am/ActivityStack$ActivityState;-><init>(Ljava/lang/String;I)V
PLcom/android/server/am/ActivityStack$ActivityState;->values()[Lcom/android/server/am/ActivityStack$ActivityState;
PLcom/android/server/am/ActivityStack;->-get0()Ljava/lang/String;
PLcom/android/server/am/ActivityStack;->-getcom-android-server-am-ActivityStack$ActivityStateSwitchesValues()[I
-PLcom/android/server/am/ActivityStack;-><init>(Lcom/android/server/am/ActivityStackSupervisor$ActivityContainer;Lcom/android/server/am/RecentTasks;Z)V
-PLcom/android/server/am/ActivityStack;->activityDestroyedLocked(Landroid/os/IBinder;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityStack;->activityPausedLocked(Landroid/os/IBinder;Z)V
+PLcom/android/server/am/ActivityStack;-><init>(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;ILcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/RecentTasks;Z)V
+PLcom/android/server/am/ActivityStack;->addRecentActivityLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStack;->addStartingWindowsForVisibleActivities(Z)V
-PLcom/android/server/am/ActivityStack;->addTask(Lcom/android/server/am/TaskRecord;IZLjava/lang/String;)V
PLcom/android/server/am/ActivityStack;->addTask(Lcom/android/server/am/TaskRecord;ZLjava/lang/String;)V
-PLcom/android/server/am/ActivityStack;->addToStopping(Lcom/android/server/am/ActivityRecord;ZZ)V
-PLcom/android/server/am/ActivityStack;->adjustFocusedActivityStackLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
PLcom/android/server/am/ActivityStack;->awakeFromSleepingLocked()V
-PLcom/android/server/am/ActivityStack;->canShowWithInsecureKeyguard()Z
-PLcom/android/server/am/ActivityStack;->cancelInitializingActivities()V
-PLcom/android/server/am/ActivityStack;->checkReadyForSleepLocked()Z
-PLcom/android/server/am/ActivityStack;->checkTranslucentActivityWaiting(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStack;->cleanUpActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V
+PLcom/android/server/am/ActivityStack;->canEnterPipOnTaskSwitch(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z
PLcom/android/server/am/ActivityStack;->cleanUpActivityServicesLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStack;->clearLaunchTime(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStack;->closeSystemDialogsLocked()V
-PLcom/android/server/am/ActivityStack;->completePauseLocked(ZLcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStack;->continueUpdateBounds()V
+PLcom/android/server/am/ActivityStack;->containsActivityFromStack(Ljava/util/List;)Z
PLcom/android/server/am/ActivityStack;->createStackWindowController(IZLandroid/graphics/Rect;)Lcom/android/server/wm/StackWindowController;
PLcom/android/server/am/ActivityStack;->createTaskRecord(ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZI)Lcom/android/server/am/TaskRecord;
-PLcom/android/server/am/ActivityStack;->destroyActivityLocked(Lcom/android/server/am/ActivityRecord;ZLjava/lang/String;)Z
-PLcom/android/server/am/ActivityStack;->executeAppTransition(Landroid/app/ActivityOptions;)V
PLcom/android/server/am/ActivityStack;->findActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStack;->findStackInsertIndex(Z)I
-PLcom/android/server/am/ActivityStack;->findTaskLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStackSupervisor$FindTaskResult;)V
PLcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;Z)Z
-PLcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;ZZ)Z
PLcom/android/server/am/ActivityStack;->finishActivityResultsLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;)V
-PLcom/android/server/am/ActivityStack;->finishCurrentActivityLocked(Lcom/android/server/am/ActivityRecord;IZ)Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStack;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z
-PLcom/android/server/am/ActivityStack;->getAdjustedPositionForTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityRecord;)I
-PLcom/android/server/am/ActivityStack;->getAllTasks()Ljava/util/ArrayList;
+PLcom/android/server/am/ActivityStack;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer;
PLcom/android/server/am/ActivityStack;->getChildCount()I
PLcom/android/server/am/ActivityStack;->getNextTask(Lcom/android/server/am/TaskRecord;)Lcom/android/server/am/TaskRecord;
PLcom/android/server/am/ActivityStack;->getParent()Lcom/android/server/am/ConfigurationContainer;
-PLcom/android/server/am/ActivityStack;->getStackId()I
-PLcom/android/server/am/ActivityStack;->getTasksLocked(Ljava/util/List;IZ)V
-PLcom/android/server/am/ActivityStack;->getTopDismissingKeyguardActivity()Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStack;->getTopStackOnDisplay()Lcom/android/server/am/ActivityStack;
-PLcom/android/server/am/ActivityStack;->getVisibleBehindActivity()Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStack;->getWindowContainerBounds(Landroid/graphics/Rect;)V
PLcom/android/server/am/ActivityStack;->getWindowContainerController()Lcom/android/server/wm/StackWindowController;
PLcom/android/server/am/ActivityStack;->goToSleep()V
-PLcom/android/server/am/ActivityStack;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z
-PLcom/android/server/am/ActivityStack;->hasVisibleBehindActivity()Z
-PLcom/android/server/am/ActivityStack;->insertTaskAtTop(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)V
+PLcom/android/server/am/ActivityStack;->goToSleepIfPossible(Z)Z
PLcom/android/server/am/ActivityStack;->isATopFinishingTask(Lcom/android/server/am/TaskRecord;)Z
-PLcom/android/server/am/ActivityStack;->isAssistantStack()Z
-PLcom/android/server/am/ActivityStack;->isAttached()Z
-PLcom/android/server/am/ActivityStack;->isDockedStack()Z
-PLcom/android/server/am/ActivityStack;->isFocusable()Z
-PLcom/android/server/am/ActivityStack;->isHomeOrRecentsStack()Z
PLcom/android/server/am/ActivityStack;->isHomeStack()Z
-PLcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStack;->isInStackLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityStack;->isInStackLocked(Lcom/android/server/am/TaskRecord;)Z
PLcom/android/server/am/ActivityStack;->isOnHomeDisplay()Z
-PLcom/android/server/am/ActivityStack;->isPinnedStack()Z
-PLcom/android/server/am/ActivityStack;->isStackTranslucent(Lcom/android/server/am/ActivityRecord;I)Z
PLcom/android/server/am/ActivityStack;->isTaskSwitch(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)Z
PLcom/android/server/am/ActivityStack;->layoutTaskInStack(Lcom/android/server/am/TaskRecord;Landroid/content/pm/ActivityInfo$WindowLayout;)Z
-PLcom/android/server/am/ActivityStack;->logStartActivity(ILcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;)V
-PLcom/android/server/am/ActivityStack;->makeInvisible(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStack;->makeVisibleAndRestartIfNeeded(Lcom/android/server/am/ActivityRecord;IZZLcom/android/server/am/ActivityRecord;)Z
PLcom/android/server/am/ActivityStack;->minimalResumeActivityLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStack;->moveHomeStackTaskToTop()V
-PLcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityStack;->moveTaskToBackLocked(I)Z
PLcom/android/server/am/ActivityStack;->moveToFront(Ljava/lang/String;)V
-PLcom/android/server/am/ActivityStack;->moveToFront(Ljava/lang/String;Lcom/android/server/am/TaskRecord;)V
PLcom/android/server/am/ActivityStack;->notifyActivityDrawnLocked(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStack;->numActivities()I
PLcom/android/server/am/ActivityStack;->onActivityRemovedFromStack(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStack;->onLockTaskPackagesUpdatedLocked()V
PLcom/android/server/am/ActivityStack;->onParentChanged()V
PLcom/android/server/am/ActivityStack;->postAddTask(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityStack;Z)V
PLcom/android/server/am/ActivityStack;->postAddToDisplay(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;Landroid/graphics/Rect;Z)V
PLcom/android/server/am/ActivityStack;->preAddTask(Lcom/android/server/am/TaskRecord;Ljava/lang/String;Z)Lcom/android/server/am/ActivityStack;
-PLcom/android/server/am/ActivityStack;->prepareActivityHideTransitionAnimation(Lcom/android/server/am/ActivityRecord;I)V
-PLcom/android/server/am/ActivityStack;->rankTaskLayers(I)I
PLcom/android/server/am/ActivityStack;->removeActivitiesFromLRUListLocked(Lcom/android/server/am/TaskRecord;)V
-PLcom/android/server/am/ActivityStack;->removeActivityFromHistoryLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Lcom/android/server/am/ProcessRecord;)Z
-PLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Ljava/util/ArrayList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityStack;->removeTask(Lcom/android/server/am/TaskRecord;Ljava/lang/String;I)V
-PLcom/android/server/am/ActivityStack;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Z)Z
-PLcom/android/server/am/ActivityStack;->resetAffinityTaskIfNeededLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/TaskRecord;ZZI)I
PLcom/android/server/am/ActivityStack;->resetTargetTaskIfNeededLocked(Lcom/android/server/am/TaskRecord;Z)Landroid/app/ActivityOptions;
-PLcom/android/server/am/ActivityStack;->resetTaskIfNeededLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityStack;->resumeTopActivityInNextFocusableStack(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Ljava/lang/String;)Z
-PLcom/android/server/am/ActivityStack;->resumeTopActivityInnerLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z
-PLcom/android/server/am/ActivityStack;->resumeTopActivityUncheckedLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z
-PLcom/android/server/am/ActivityStack;->schedulePauseTimeout(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStack;->setLaunchTime(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStack;->setResumedActivityLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityStack;->startActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;ZZLandroid/app/ActivityOptions;)V
-PLcom/android/server/am/ActivityStack;->startLaunchTraces(Ljava/lang/String;)V
-PLcom/android/server/am/ActivityStack;->startPausingLocked(ZZLcom/android/server/am/ActivityRecord;Z)Z
-PLcom/android/server/am/ActivityStack;->stopActivityLocked(Lcom/android/server/am/ActivityRecord;)V
+PLcom/android/server/am/ActivityStack;->sendActivityResultLocked(ILcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V
PLcom/android/server/am/ActivityStack;->stopFullyDrawnTraceIfNeeded()V
-PLcom/android/server/am/ActivityStack;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
-PLcom/android/server/am/ActivityStack;->topActivity()Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStack;->topActivityOccludesKeyguard()Z
-PLcom/android/server/am/ActivityStack;->topRunningNonDelayedActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStack;->topTask()Lcom/android/server/am/TaskRecord;
-PLcom/android/server/am/ActivityStack;->updateBehindFullscreen(ZZLcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)Z
PLcom/android/server/am/ActivityStack;->updateLRUListLocked(Lcom/android/server/am/ActivityRecord;)Z
-PLcom/android/server/am/ActivityStack;->updateTaskMovement(Lcom/android/server/am/TaskRecord;Z)V
-PLcom/android/server/am/ActivityStack;->updateTaskReturnToForTopInsertion(Lcom/android/server/am/TaskRecord;)V
PLcom/android/server/am/ActivityStack;->updateTransitLocked(ILandroid/app/ActivityOptions;)V
-PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;-><init>(Lcom/android/server/am/ActivityStackSupervisor;ILcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;Z)V
-PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->createStack(IZ)V
-PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->getDisplayId()I
-PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->getOuter()Lcom/android/server/am/ActivityStackSupervisor;
-PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->isAttachedLocked()Z
-PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->isEligibleForNewTasks()Z
-PLcom/android/server/am/ActivityStackSupervisor$ActivityContainer;->setDrawn()V
PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;-><init>(Lcom/android/server/am/ActivityStackSupervisor;I)V
PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->attachStack(Lcom/android/server/am/ActivityStack;I)V
PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer;
PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getChildCount()I
PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getParent()Lcom/android/server/am/ConfigurationContainer;
-PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->hasVisibleBehindActivity()Z
PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->init(Landroid/view/Display;)V
-PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->isPrivate()Z
-PLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->activityIdleInternal(Lcom/android/server/am/ActivityRecord;Z)V
-PLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/ActivityStackSupervisor;->-get0()Ljava/lang/String;
-PLcom/android/server/am/ActivityStackSupervisor;->-get5(Lcom/android/server/am/ActivityStackSupervisor;)Lcom/android/server/am/RecentTasks;
-PLcom/android/server/am/ActivityStackSupervisor;->-wrap4(Lcom/android/server/am/ActivityStackSupervisor;I)V
-PLcom/android/server/am/ActivityStackSupervisor;->acquireLaunchWakelock()V
-PLcom/android/server/am/ActivityStackSupervisor;->activityIdleInternalLocked(Landroid/os/IBinder;ZZLandroid/content/res/Configuration;)Lcom/android/server/am/ActivityRecord;
+PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->setIsSleeping(Z)V
+PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->shouldSleep()Z
+PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;->-get0(Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)I
+PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;->release()V
+PLcom/android/server/am/ActivityStackSupervisor;->-wrap3(Lcom/android/server/am/ActivityStackSupervisor;I)V
+PLcom/android/server/am/ActivityStackSupervisor;->-wrap6(Lcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)V
+PLcom/android/server/am/ActivityStackSupervisor;->activityRelaunchedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityStackSupervisor;->activityRelaunchingLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStackSupervisor;->activitySleptLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStackSupervisor;->addStartingWindowsForVisibleActivities(Z)V
-PLcom/android/server/am/ActivityStackSupervisor;->allPausedActivitiesComplete()Z
-PLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesComplete()Z
-PLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesIdle()Z
-PLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesVisible()Z
PLcom/android/server/am/ActivityStackSupervisor;->anyTaskForIdLocked(I)Lcom/android/server/am/TaskRecord;
-PLcom/android/server/am/ActivityStackSupervisor;->anyTaskForIdLocked(III)Lcom/android/server/am/TaskRecord;
-PLcom/android/server/am/ActivityStackSupervisor;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;)Z
+PLcom/android/server/am/ActivityStackSupervisor;->applySleepTokensLocked(Z)V
+PLcom/android/server/am/ActivityStackSupervisor;->beginDeferResume()V
PLcom/android/server/am/ActivityStackSupervisor;->calculateDefaultMinimalSizeOfResizeableTasks(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;)V
+PLcom/android/server/am/ActivityStackSupervisor;->canPlaceEntityOnDisplay(IZIILandroid/content/pm/ActivityInfo;)Z
PLcom/android/server/am/ActivityStackSupervisor;->canUseActivityOptionsLaunchBounds(Landroid/app/ActivityOptions;I)Z
-PLcom/android/server/am/ActivityStackSupervisor;->cancelInitializingActivities()V
-PLcom/android/server/am/ActivityStackSupervisor;->checkActivityBelongsInStack(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)Z
PLcom/android/server/am/ActivityStackSupervisor;->checkFinishBootingLocked()Z
-PLcom/android/server/am/ActivityStackSupervisor;->checkReadyForSleepLocked()V
-PLcom/android/server/am/ActivityStackSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;ZLcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;Landroid/app/ActivityOptions;)Z
+PLcom/android/server/am/ActivityStackSupervisor;->checkReadyForSleepLocked(Z)V
PLcom/android/server/am/ActivityStackSupervisor;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;ZZ)V
PLcom/android/server/am/ActivityStackSupervisor;->cleanupActivity(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStackSupervisor;->closeSystemDialogsLocked()V
PLcom/android/server/am/ActivityStackSupervisor;->comeOutOfSleepIfNeededLocked()V
-PLcom/android/server/am/ActivityStackSupervisor;->continueUpdateBounds(I)V
+PLcom/android/server/am/ActivityStackSupervisor;->createSleepTokenLocked(Ljava/lang/String;I)Landroid/app/ActivityManagerInternal$SleepToken;
+PLcom/android/server/am/ActivityStackSupervisor;->createStack(ILcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;Z)Lcom/android/server/am/ActivityStack;
PLcom/android/server/am/ActivityStackSupervisor;->createStackOnDisplay(IIZ)Lcom/android/server/am/ActivityStack;
-PLcom/android/server/am/ActivityStackSupervisor;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;IZ)V
+PLcom/android/server/am/ActivityStackSupervisor;->endDeferResume()V
PLcom/android/server/am/ActivityStackSupervisor;->findActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStackSupervisor;->findTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStackSupervisor;->findTaskToMoveToFrontLocked(Lcom/android/server/am/TaskRecord;ILandroid/app/ActivityOptions;Ljava/lang/String;Z)V
-PLcom/android/server/am/ActivityStackSupervisor;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z
PLcom/android/server/am/ActivityStackSupervisor;->getActionRestrictionForCallingPackage(Ljava/lang/String;Ljava/lang/String;II)I
-PLcom/android/server/am/ActivityStackSupervisor;->getActivityDisplayOrCreateLocked(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;
-PLcom/android/server/am/ActivityStackSupervisor;->getAllStackInfosLocked()Ljava/util/ArrayList;
PLcom/android/server/am/ActivityStackSupervisor;->getChildAt(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;
PLcom/android/server/am/ActivityStackSupervisor;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer;
PLcom/android/server/am/ActivityStackSupervisor;->getComponentRestrictionForCallingPackage(Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIZ)I
-PLcom/android/server/am/ActivityStackSupervisor;->getDisplayOverrideConfiguration(I)Landroid/content/res/Configuration;
-PLcom/android/server/am/ActivityStackSupervisor;->getFocusedStack()Lcom/android/server/am/ActivityStack;
PLcom/android/server/am/ActivityStackSupervisor;->getHomeActivity()Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityStackSupervisor;->getHomeActivityForUser(I)Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStackSupervisor;->getLastStack()Lcom/android/server/am/ActivityStack;
PLcom/android/server/am/ActivityStackSupervisor;->getLockTaskModeState()I
PLcom/android/server/am/ActivityStackSupervisor;->getLockedTaskLocked()Lcom/android/server/am/TaskRecord;
PLcom/android/server/am/ActivityStackSupervisor;->getNextTaskIdForUserLocked(I)I
-PLcom/android/server/am/ActivityStackSupervisor;->getStack(I)Lcom/android/server/am/ActivityStack;
-PLcom/android/server/am/ActivityStackSupervisor;->getStack(IZZ)Lcom/android/server/am/ActivityStack;
-PLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(I)Landroid/app/ActivityManager$StackInfo;
-PLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(Lcom/android/server/am/ActivityStack;)Landroid/app/ActivityManager$StackInfo;
-PLcom/android/server/am/ActivityStackSupervisor;->getStacksOnDefaultDisplay()Ljava/util/ArrayList;
-PLcom/android/server/am/ActivityStackSupervisor;->getTasksLocked(ILjava/util/List;IZ)V
+PLcom/android/server/am/ActivityStackSupervisor;->getUserInfo(I)Landroid/content/pm/UserInfo;
PLcom/android/server/am/ActivityStackSupervisor;->goingToSleepLocked()V
-PLcom/android/server/am/ActivityStackSupervisor;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z
PLcom/android/server/am/ActivityStackSupervisor;->handleDisplayChanged(I)V
PLcom/android/server/am/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/am/TaskRecord;III)V
-PLcom/android/server/am/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/am/TaskRecord;IIIZ)V
+PLcom/android/server/am/ActivityStackSupervisor;->hasAwakeDisplay()Z
PLcom/android/server/am/ActivityStackSupervisor;->invalidateTaskLayers()V
-PLcom/android/server/am/ActivityStackSupervisor;->isCurrentProfileLocked(I)Z
PLcom/android/server/am/ActivityStackSupervisor;->isDisplayAdded(I)Z
-PLcom/android/server/am/ActivityStackSupervisor;->isFocusedStack(Lcom/android/server/am/ActivityStack;)Z
-PLcom/android/server/am/ActivityStackSupervisor;->isFrontOfStackList(Lcom/android/server/am/ActivityStack;Ljava/util/List;)Z
-PLcom/android/server/am/ActivityStackSupervisor;->isFrontStackOnDisplay(Lcom/android/server/am/ActivityStack;)Z
-PLcom/android/server/am/ActivityStackSupervisor;->isInAnyStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityStackSupervisor;->isLastLockedTask(Lcom/android/server/am/TaskRecord;)Z
PLcom/android/server/am/ActivityStackSupervisor;->isLockTaskModeViolation(Lcom/android/server/am/TaskRecord;)Z
PLcom/android/server/am/ActivityStackSupervisor;->isLockTaskModeViolation(Lcom/android/server/am/TaskRecord;Z)Z
-PLcom/android/server/am/ActivityStackSupervisor;->isStackDockedInEffect(I)Z
-PLcom/android/server/am/ActivityStackSupervisor;->isStoppingNoHistoryActivity()Z
+PLcom/android/server/am/ActivityStackSupervisor;->isLockedTask(Lcom/android/server/am/TaskRecord;)Z
PLcom/android/server/am/ActivityStackSupervisor;->logIfTransactionTooLarge(Landroid/content/Intent;Landroid/os/Bundle;)V
PLcom/android/server/am/ActivityStackSupervisor;->logStackState()V
-PLcom/android/server/am/ActivityStackSupervisor;->moveFocusableActivityStackToFrontLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)Z
PLcom/android/server/am/ActivityStackSupervisor;->moveHomeStackTaskToTop(Ljava/lang/String;)Z
PLcom/android/server/am/ActivityStackSupervisor;->moveHomeStackToFront(Ljava/lang/String;)V
PLcom/android/server/am/ActivityStackSupervisor;->nextTaskIdForUser(II)I
-PLcom/android/server/am/ActivityStackSupervisor;->notifyAppTransitionDone()V
PLcom/android/server/am/ActivityStackSupervisor;->onDisplayChanged(I)V
PLcom/android/server/am/ActivityStackSupervisor;->onLockTaskPackagesUpdatedLocked()V
-PLcom/android/server/am/ActivityStackSupervisor;->pauseBackStacks(ZLcom/android/server/am/ActivityRecord;Z)Z
-PLcom/android/server/am/ActivityStackSupervisor;->pauseChildStacks(Lcom/android/server/am/ActivityRecord;ZZLcom/android/server/am/ActivityRecord;Z)V
-PLcom/android/server/am/ActivityStackSupervisor;->processStoppingActivitiesLocked(Lcom/android/server/am/ActivityRecord;ZZ)Ljava/util/ArrayList;
-PLcom/android/server/am/ActivityStackSupervisor;->rankTaskLayersIfNeeded()V
-PLcom/android/server/am/ActivityStackSupervisor;->realStartActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ProcessRecord;ZZ)Z
-PLcom/android/server/am/ActivityStackSupervisor;->removeChildActivityContainers(Lcom/android/server/am/ActivityRecord;)V
+PLcom/android/server/am/ActivityStackSupervisor;->putStacksToSleepLocked(ZZ)Z
PLcom/android/server/am/ActivityStackSupervisor;->removeLockedTaskLocked(Lcom/android/server/am/TaskRecord;)V
PLcom/android/server/am/ActivityStackSupervisor;->removeSleepTimeouts()V
+PLcom/android/server/am/ActivityStackSupervisor;->removeSleepTokenLocked(Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)V
PLcom/android/server/am/ActivityStackSupervisor;->removeTaskByIdLocked(IZZ)Z
PLcom/android/server/am/ActivityStackSupervisor;->removeTaskByIdLocked(IZZZ)Z
-PLcom/android/server/am/ActivityStackSupervisor;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStackSupervisor;->reportActivityLaunchedLocked(ZLcom/android/server/am/ActivityRecord;JJ)V
PLcom/android/server/am/ActivityStackSupervisor;->reportActivityVisibleLocked(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStackSupervisor;->reportResumedActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
-PLcom/android/server/am/ActivityStackSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo;
PLcom/android/server/am/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/am/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/am/ActivityStackSupervisor;->restoreRecentTaskLocked(Lcom/android/server/am/TaskRecord;I)Z
PLcom/android/server/am/ActivityStackSupervisor;->resumeFocusedStackTopActivityLocked()Z
-PLcom/android/server/am/ActivityStackSupervisor;->resumeFocusedStackTopActivityLocked(Lcom/android/server/am/ActivityStack;Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z
PLcom/android/server/am/ActivityStackSupervisor;->resumeHomeStackTask(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)Z
-PLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleLocked()V
-PLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleTimeoutLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStackSupervisor;->scheduleResumeTopActivities()V
PLcom/android/server/am/ActivityStackSupervisor;->scheduleSleepTimeout()V
-PLcom/android/server/am/ActivityStackSupervisor;->sendWaitingVisibleReportLocked(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/ActivityStackSupervisor;->setDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)V
PLcom/android/server/am/ActivityStackSupervisor;->setDockedStackMinimized(Z)V
-PLcom/android/server/am/ActivityStackSupervisor;->setFocusStackUnchecked(Ljava/lang/String;Lcom/android/server/am/ActivityStack;)V
-PLcom/android/server/am/ActivityStackSupervisor;->setLaunchSource(I)V
PLcom/android/server/am/ActivityStackSupervisor;->setNextTaskIdForUserLocked(II)V
PLcom/android/server/am/ActivityStackSupervisor;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/am/ActivityStackSupervisor;->startActivityFromRecentsInner(ILandroid/os/Bundle;)I
-PLcom/android/server/am/ActivityStackSupervisor;->startSpecificActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V
-PLcom/android/server/am/ActivityStackSupervisor;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/ActivityStackSupervisor;->updatePreviousProcessLocked(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStackSupervisor;->updateUIDsPresentOnDisplay()V
+PLcom/android/server/am/ActivityStackSupervisor;->updateActivityApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V
PLcom/android/server/am/ActivityStackSupervisor;->updateUserStackLocked(ILcom/android/server/am/ActivityStack;)V
-PLcom/android/server/am/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/am/TaskRecord;IILandroid/app/ActivityOptions;)V
PLcom/android/server/am/ActivityStartInterceptor;->interceptQuietProfileIfNeeded()Z
PLcom/android/server/am/ActivityStartInterceptor;->interceptSuspendPackageIfNeed()Z
PLcom/android/server/am/ActivityStartInterceptor;->interceptWithConfirmCredentialsIfNeeded(Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Ljava/lang/String;I)Landroid/content/Intent;
@@ -5864,260 +8563,154 @@ PLcom/android/server/am/ActivityStarter;->canLaunchIntoFocusedStack(Lcom/android
PLcom/android/server/am/ActivityStarter;->clearPendingActivityLaunchesLocked(Ljava/lang/String;)Z
PLcom/android/server/am/ActivityStarter;->computeLaunchingTaskFlags()V
PLcom/android/server/am/ActivityStarter;->computeSourceStack()V
-PLcom/android/server/am/ActivityStarter;->computeStackFocus(Lcom/android/server/am/ActivityRecord;ZLandroid/graphics/Rect;ILandroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack;
PLcom/android/server/am/ActivityStarter;->doPendingActivityLaunchesLocked(Z)V
-PLcom/android/server/am/ActivityStarter;->getLaunchStack(Lcom/android/server/am/ActivityRecord;ILcom/android/server/am/TaskRecord;Landroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack;
PLcom/android/server/am/ActivityStarter;->getOverrideBounds(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;)Landroid/graphics/Rect;
PLcom/android/server/am/ActivityStarter;->getReusableIntentActivity()Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityStarter;->getSourceDisplayId(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)I
PLcom/android/server/am/ActivityStarter;->isDocumentLaunchesIntoExisting(I)Z
PLcom/android/server/am/ActivityStarter;->isValidLaunchStackId(IILcom/android/server/am/ActivityRecord;)Z
-PLcom/android/server/am/ActivityStarter;->postStartActivityProcessing(Lcom/android/server/am/ActivityRecord;IILcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)V
PLcom/android/server/am/ActivityStarter;->reset()V
PLcom/android/server/am/ActivityStarter;->resumeTargetStackIfNeeded()V
PLcom/android/server/am/ActivityStarter;->sendNewTaskResultRequestIfNeeded()V
PLcom/android/server/am/ActivityStarter;->sendPowerHintForLaunchEndIfNeeded()V
-PLcom/android/server/am/ActivityStarter;->sendPowerHintForLaunchStartIfNeeded(Z)V
-PLcom/android/server/am/ActivityStarter;->setInitialState(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;ZILcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V
-PLcom/android/server/am/ActivityStarter;->setTargetStackAndMoveToFrontIfNeeded(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/ActivityStarter;->setTaskFromIntentActivity(Lcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/ActivityStarter;->setTaskFromReuseOrCreateNewTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityStack;)I
PLcom/android/server/am/ActivityStarter;->setTaskFromSourceRecord()I
PLcom/android/server/am/ActivityStarter;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/am/ActivityStarter;->startActivity(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I
-PLcom/android/server/am/ActivityStarter;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILandroid/app/ActivityOptions;ZZ[Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStackSupervisor$ActivityContainer;Lcom/android/server/am/TaskRecord;)I
-PLcom/android/server/am/ActivityStarter;->startActivityMayWait(Landroid/app/IApplicationThread;ILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/app/WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;ZILandroid/app/IActivityContainer;Lcom/android/server/am/TaskRecord;)I
-PLcom/android/server/am/ActivityStarter;->startActivityUnchecked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I
PLcom/android/server/am/ActivityStarter;->startHomeActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)V
PLcom/android/server/am/ActivityStarter;->updateTaskReturnToType(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityStack;)V
-PLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/AppErrors;->isBadProcessLocked(Landroid/content/pm/ApplicationInfo;)Z
PLcom/android/server/am/AppErrors;->loadAppsNotReportingCrashesFromConfigLocked(Ljava/lang/String;)V
-PLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(Landroid/content/pm/ApplicationInfo;)V
PLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(ZII)V
PLcom/android/server/am/BatteryExternalStatsWorker;->extractDeltaLocked(Landroid/net/wifi/WifiActivityEnergyInfo;)Landroid/net/wifi/WifiActivityEnergyInfo;
PLcom/android/server/am/BatteryExternalStatsWorker;->scheduleCpuSyncDueToRemovedUid(I)Ljava/util/concurrent/Future;
-PLcom/android/server/am/BatteryExternalStatsWorker;->scheduleRunnable(Ljava/lang/Runnable;)V
PLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSync(Ljava/lang/String;I)Ljava/util/concurrent/Future;
PLcom/android/server/am/BatteryStatsService;->addIsolatedUid(II)V
PLcom/android/server/am/BatteryStatsService;->awaitUninterruptibly(Ljava/util/concurrent/Future;)V
+PLcom/android/server/am/BatteryStatsService;->doEnableOrDisable(Ljava/io/PrintWriter;I[Ljava/lang/String;Z)I
+PLcom/android/server/am/BatteryStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/am/BatteryStatsService;->getPlatformLowPowerStats()Ljava/lang/String;
-PLcom/android/server/am/BatteryStatsService;->getService()Lcom/android/internal/app/IBatteryStats;
PLcom/android/server/am/BatteryStatsService;->getStatistics()[B
+PLcom/android/server/am/BatteryStatsService;->getStatisticsStream()Landroid/os/ParcelFileDescriptor;
PLcom/android/server/am/BatteryStatsService;->getSubsystemLowPowerStats()Ljava/lang/String;
PLcom/android/server/am/BatteryStatsService;->isCharging()Z
-PLcom/android/server/am/BatteryStatsService;->isOnBattery()Z
-PLcom/android/server/am/BatteryStatsService;->lambda$-com_android_server_am_BatteryStatsService_30585(IIIIIIII)V
-PLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->lambda$-com_android_server_am_BatteryStatsService_32467(IIIIIIII)V
PLcom/android/server/am/BatteryStatsService;->noteBleScanResults(Landroid/os/WorkSource;I)V
PLcom/android/server/am/BatteryStatsService;->noteBleScanStarted(Landroid/os/WorkSource;Z)V
-PLcom/android/server/am/BatteryStatsService;->noteBleScanStopped(Landroid/os/WorkSource;)V
-PLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
+PLcom/android/server/am/BatteryStatsService;->noteBleScanStopped(Landroid/os/WorkSource;Z)V
PLcom/android/server/am/BatteryStatsService;->noteConnectivityChanged(ILjava/lang/String;)V
-PLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteFullWifiLockAcquiredFromSource(Landroid/os/WorkSource;)V
-PLcom/android/server/am/BatteryStatsService;->noteFullWifiLockReleasedFromSource(Landroid/os/WorkSource;)V
PLcom/android/server/am/BatteryStatsService;->noteInteractive(Z)V
-PLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V
PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteNetworkInterfaceType(Ljava/lang/String;I)V
PLcom/android/server/am/BatteryStatsService;->noteNetworkStatsEnabled()V
PLcom/android/server/am/BatteryStatsService;->notePackageInstalled(Ljava/lang/String;I)V
PLcom/android/server/am/BatteryStatsService;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V
PLcom/android/server/am/BatteryStatsService;->notePhoneState(I)V
-PLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteProcessStart(Ljava/lang/String;I)V
PLcom/android/server/am/BatteryStatsService;->noteResetBleScan()V
PLcom/android/server/am/BatteryStatsService;->noteScreenBrightness(I)V
PLcom/android/server/am/BatteryStatsService;->noteScreenState(I)V
-PLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V
PLcom/android/server/am/BatteryStatsService;->noteStartCamera(I)V
PLcom/android/server/am/BatteryStatsService;->noteStartGps(I)V
-PLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V
PLcom/android/server/am/BatteryStatsService;->noteStartVideo(I)V
-PLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
-PLcom/android/server/am/BatteryStatsService;->noteStopAudio(I)V
PLcom/android/server/am/BatteryStatsService;->noteStopCamera(I)V
PLcom/android/server/am/BatteryStatsService;->noteStopGps(I)V
-PLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V
-PLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteStopVideo(I)V
PLcom/android/server/am/BatteryStatsService;->noteSyncFinish(Ljava/lang/String;I)V
PLcom/android/server/am/BatteryStatsService;->noteSyncStart(Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V
-PLcom/android/server/am/BatteryStatsService;->noteUserActivity(II)V
PLcom/android/server/am/BatteryStatsService;->noteVibratorOff(I)V
PLcom/android/server/am/BatteryStatsService;->noteVibratorOn(IJ)V
PLcom/android/server/am/BatteryStatsService;->noteWifiMulticastDisabled(I)V
PLcom/android/server/am/BatteryStatsService;->noteWifiMulticastEnabled(I)V
PLcom/android/server/am/BatteryStatsService;->noteWifiOff()V
PLcom/android/server/am/BatteryStatsService;->noteWifiOn()V
-PLcom/android/server/am/BatteryStatsService;->noteWifiRadioPowerState(IJI)V
PLcom/android/server/am/BatteryStatsService;->noteWifiRssiChanged(I)V
PLcom/android/server/am/BatteryStatsService;->noteWifiRunning(Landroid/os/WorkSource;)V
-PLcom/android/server/am/BatteryStatsService;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V
-PLcom/android/server/am/BatteryStatsService;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V
PLcom/android/server/am/BatteryStatsService;->noteWifiState(ILjava/lang/String;)V
PLcom/android/server/am/BatteryStatsService;->noteWifiSupplicantStateChanged(IZ)V
PLcom/android/server/am/BatteryStatsService;->removeIsolatedUid(II)V
-PLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIII)V
-PLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;IIZZ)V
-PLcom/android/server/am/BroadcastFilter;->toString()Ljava/lang/String;
-PLcom/android/server/am/BroadcastQueue$BroadcastHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/BroadcastQueue;->backgroundServicesFinishedLocked(I)V
-PLcom/android/server/am/BroadcastQueue;->broadcastTimeoutLocked(Z)V
-PLcom/android/server/am/BroadcastQueue;->cancelBroadcastTimeoutLocked()V
-PLcom/android/server/am/BroadcastQueue;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
-PLcom/android/server/am/BroadcastQueue;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
-PLcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
-PLcom/android/server/am/BroadcastQueue;->getMatchingOrderedReceiver(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
-PLcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z
PLcom/android/server/am/BroadcastQueue;->isSignaturePerm([Ljava/lang/String;)Z
-PLcom/android/server/am/BroadcastQueue;->performReceiveLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-PLcom/android/server/am/BroadcastQueue;->replaceBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord;
PLcom/android/server/am/BroadcastQueue;->replaceOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord;
-PLcom/android/server/am/BroadcastQueue;->replaceParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord;
-PLcom/android/server/am/BroadcastQueue;->ringAdvance(III)I
-PLcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
+PLcom/android/server/am/BroadcastQueue;->scheduleTempWhitelistLocked(IJLcom/android/server/am/BroadcastRecord;)V
PLcom/android/server/am/BroadcastQueue;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
-PLcom/android/server/am/BroadcastQueue;->setBroadcastTimeoutLocked(J)V
-PLcom/android/server/am/BroadcastQueue;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZI)V
PLcom/android/server/am/BroadcastStats$1;-><init>()V
-PLcom/android/server/am/BroadcastStats$ActionEntry;-><init>(Ljava/lang/String;)V
-PLcom/android/server/am/BroadcastStats$PackageEntry;-><init>()V
PLcom/android/server/am/BroadcastStats$ViolationEntry;-><init>()V
PLcom/android/server/am/BroadcastStats;-><init>()V
-PLcom/android/server/am/BroadcastStats;->addBackgroundCheckViolation(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V
-PLcom/android/server/am/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I
PLcom/android/server/am/CompatModePackages;->handlePackageAddedLocked(Ljava/lang/String;Z)V
-PLcom/android/server/am/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration;
PLcom/android/server/am/ConfigurationContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration;
-PLcom/android/server/am/ConfigurationContainer;->getOverrideConfiguration()Landroid/content/res/Configuration;
-PLcom/android/server/am/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V
PLcom/android/server/am/ConfigurationContainer;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/am/ConfigurationContainer;->onParentChanged()V
-PLcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/IServiceConnection;IILandroid/app/PendingIntent;)V
-PLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
+PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->-get0(Lcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;)I
+PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->-set0(Lcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;I)I
+PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;-><init>(Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;)V
+PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->unlinkFromOwnDeathLocked()V
PLcom/android/server/am/ContentProviderRecord;->addExternalProcessHandleLocked(Landroid/os/IBinder;)V
-PLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
-PLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/ContentProviderHolder;
+PLcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleInternalLocked(Landroid/os/IBinder;)V
PLcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z
PLcom/android/server/am/CoreSettingsObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/CoreSettingsObserver;->beginObserveCoreSettings()V
-PLcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle;
PLcom/android/server/am/CoreSettingsObserver;->populateSettings(Landroid/os/Bundle;Ljava/util/Map;)V
PLcom/android/server/am/CoreSettingsObserver;->sendCoreSettings()V
PLcom/android/server/am/DumpHeapProvider;-><init>()V
PLcom/android/server/am/DumpHeapProvider;->onCreate()Z
-PLcom/android/server/am/EventLogTags;->writeAmFocusedStack(IIILjava/lang/String;)V
PLcom/android/server/am/EventLogTags;->writeAmMeminfo(JJJJJ)V
-PLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJ)V
-PLcom/android/server/am/EventLogTags;->writeAmSetResumedActivity(ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/EventLogTags;->writeAmStopActivity(IILjava/lang/String;)V
-PLcom/android/server/am/EventLogTags;->writeAmUidActive(I)V
PLcom/android/server/am/EventLogTags;->writeAmUidIdle(I)V
-PLcom/android/server/am/EventLogTags;->writeAmUidRunning(I)V
-PLcom/android/server/am/EventLogTags;->writeAmUidStopped(I)V
PLcom/android/server/am/EventLogTags;->writeAmUserStateChanged(II)V
-PLcom/android/server/am/IntentBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V
-PLcom/android/server/am/KeyguardController;->beginActivityVisibilityUpdate()V
+PLcom/android/server/am/InstrumentationReporter$MyThread;-><init>(Lcom/android/server/am/InstrumentationReporter;)V
+PLcom/android/server/am/InstrumentationReporter$MyThread;->run()V
+PLcom/android/server/am/InstrumentationReporter$Report;-><init>(Lcom/android/server/am/InstrumentationReporter;ILandroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;ILandroid/os/Bundle;)V
+PLcom/android/server/am/InstrumentationReporter;->report(Lcom/android/server/am/InstrumentationReporter$Report;)V
+PLcom/android/server/am/InstrumentationReporter;->reportFinished(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;ILandroid/os/Bundle;)V
PLcom/android/server/am/KeyguardController;->canShowActivityWhileKeyguardShowing(Lcom/android/server/am/ActivityRecord;Z)Z
+PLcom/android/server/am/KeyguardController;->canShowWhileOccluded(ZZ)Z
PLcom/android/server/am/KeyguardController;->convertTransitFlags(I)I
PLcom/android/server/am/KeyguardController;->dismissDockedStackIfNeeded()V
-PLcom/android/server/am/KeyguardController;->endActivityVisibilityUpdate()V
+PLcom/android/server/am/KeyguardController;->handleDismissKeyguard()V
PLcom/android/server/am/KeyguardController;->handleOccludedChanged()V
-PLcom/android/server/am/KeyguardController;->isKeyguardLocked()Z
-PLcom/android/server/am/KeyguardController;->isKeyguardShowing()Z
PLcom/android/server/am/KeyguardController;->keyguardGoingAway(I)V
PLcom/android/server/am/KeyguardController;->setKeyguardGoingAway(Z)V
PLcom/android/server/am/KeyguardController;->setKeyguardShown(Z)V
PLcom/android/server/am/KeyguardController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/am/KeyguardController;->visibilitiesUpdated()V
+PLcom/android/server/am/KeyguardController;->updateKeyguardSleepToken()V
PLcom/android/server/am/NativeCrashListener;-><init>(Lcom/android/server/am/ActivityManagerService;)V
PLcom/android/server/am/NativeCrashListener;->run()V
-PLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)V
-PLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I
-PLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/PendingIntentRecord$Key;I)V
-PLcom/android/server/am/PendingIntentRecord;->completeFinalize()V
PLcom/android/server/am/PendingIntentRecord;->detachCancelListenersLocked()Landroid/os/RemoteCallbackList;
-PLcom/android/server/am/PendingIntentRecord;->finalize()V
-PLcom/android/server/am/PendingIntentRecord;->sendInner(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;Landroid/app/IActivityContainer;)I
-PLcom/android/server/am/PendingIntentRecord;->sendWithResult(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
PLcom/android/server/am/PendingIntentRecord;->setWhitelistDurationLocked(Landroid/os/IBinder;J)V
PLcom/android/server/am/ProcessList;->applyDisplaySize(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/am/ProcessList;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
-PLcom/android/server/am/ProcessList;->computeNextPssTime(IZZZJ)J
+PLcom/android/server/am/ProcessList;->getCachedRestoreThresholdKb()J
PLcom/android/server/am/ProcessList;->makeOomAdjString(I)Ljava/lang/String;
PLcom/android/server/am/ProcessList;->makeProcStateString(I)Ljava/lang/String;
+PLcom/android/server/am/ProcessList;->minTimeFromStateChange(Z)J
PLcom/android/server/am/ProcessList;->openLmkdSocket()Z
-PLcom/android/server/am/ProcessList;->remove(I)V
-PLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)V
-PLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;ILcom/android/server/am/ProcessStatsService;)Z
-PLcom/android/server/am/ProcessRecord;->forceProcessStateUpTo(I)V
-PLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;Z)V
-PLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V
-PLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V
-PLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V
-PLcom/android/server/am/ProcessRecord;->setPid(I)V
-PLcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
-PLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V
PLcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;
-PLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
+PLcom/android/server/am/ProcessStatsService$2;-><init>(Lcom/android/server/am/ProcessStatsService;)V
+PLcom/android/server/am/ProcessStatsService$2;->run()V
PLcom/android/server/am/ProcessStatsService;->addSysMemUsageLocked(JJJJJ)V
-PLcom/android/server/am/ProcessStatsService;->getProcessStateLocked(Ljava/lang/String;IILjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState;
-PLcom/android/server/am/ProcessStatsService;->getServiceStateLocked(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState;
+PLcom/android/server/am/ProcessStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ProcessStatsService;->dumpInner(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ProcessStatsService;->getCommittedFiles(IZZ)Ljava/util/ArrayList;
PLcom/android/server/am/ProcessStatsService;->isMemFactorLowered()Z
-PLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z
+PLcom/android/server/am/ProcessStatsService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/am/ProcessStatsService;->performWriteState()V
+PLcom/android/server/am/ProcessStatsService;->trimHistoricStatesWriteLocked()V
+PLcom/android/server/am/ProcessStatsService;->writeStateAsyncLocked()V
+PLcom/android/server/am/ProcessStatsService;->writeStateLocked(Z)V
+PLcom/android/server/am/ProcessStatsService;->writeStateLocked(ZZ)V
PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZILjava/util/ArrayList;)Z
-PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z
-PLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
-PLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
-PLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap;
-PLcom/android/server/am/ProviderMap;->getProvidersByName(I)Ljava/util/HashMap;
-PLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
-PLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
-PLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V
-PLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V
-PLcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V
-PLcom/android/server/am/ReceiverList;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/am/ReceiverList;->hashCode()I
-PLcom/android/server/am/ReceiverList;->toString()Ljava/lang/String;
-PLcom/android/server/am/RecentTasks;->addLocked(Lcom/android/server/am/TaskRecord;)V
PLcom/android/server/am/RecentTasks;->cleanupLocked(I)V
+PLcom/android/server/am/RecentTasks;->getTaskDescriptionIcon(Ljava/lang/String;)Landroid/graphics/Bitmap;
PLcom/android/server/am/RecentTasks;->loadPersistedTaskIdsForUserLocked(I)V
PLcom/android/server/am/RecentTasks;->loadUserRecentsLocked(I)V
-PLcom/android/server/am/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/am/TaskRecord;Z)V
PLcom/android/server/am/RecentTasks;->onSystemReadyLocked()V
PLcom/android/server/am/RecentTasks;->processNextAffiliateChainLocked(I)I
-PLcom/android/server/am/RecentTasks;->shouldPersistTaskLocked(Lcom/android/server/am/TaskRecord;)Z
-PLcom/android/server/am/RecentTasks;->syncPersistentTaskIdsLocked()V
-PLcom/android/server/am/RecentTasks;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
+PLcom/android/server/am/RecentTasks;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V
PLcom/android/server/am/RecentTasks;->taskIdTakenForUserLocked(II)Z
-PLcom/android/server/am/RecentTasks;->trimForTaskLocked(Lcom/android/server/am/TaskRecord;Z)I
-PLcom/android/server/am/RecentTasks;->usersWithRecentsLoadedLocked()[I
PLcom/android/server/am/ServiceRecord$1;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/app/Notification;Ljava/lang/String;III)V
PLcom/android/server/am/ServiceRecord$1;->run()V
PLcom/android/server/am/ServiceRecord$2;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;I)V
PLcom/android/server/am/ServiceRecord$2;->run()V
-PLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/am/ActivityManagerService$NeededUriGrants;I)V
-PLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V
PLcom/android/server/am/ServiceRecord;->cancelNotification()V
-PLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V
PLcom/android/server/am/ServiceRecord;->forceClearTracker()V
-PLcom/android/server/am/ServiceRecord;->getLastStartId()I
-PLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState;
-PLcom/android/server/am/ServiceRecord;->makeNextStartId()I
PLcom/android/server/am/ServiceRecord;->makeRestarting(IJ)V
-PLcom/android/server/am/ServiceRecord;->postNotification()V
-PLcom/android/server/am/ServiceRecord;->resetRestartCounter()V
PLcom/android/server/am/ServiceRecord;->toString()Ljava/lang/String;
PLcom/android/server/am/ServiceRecord;->updateWhitelistManager()V
-PLcom/android/server/am/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/am/TaskChangeNotificationController;->-get10(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;
PLcom/android/server/am/TaskChangeNotificationController;->-get11(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;
PLcom/android/server/am/TaskChangeNotificationController;->-get13(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;
@@ -6128,9 +8721,6 @@ PLcom/android/server/am/TaskChangeNotificationController;->-get17(Lcom/android/s
PLcom/android/server/am/TaskChangeNotificationController;->-get18(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/ActivityStackSupervisor;
PLcom/android/server/am/TaskChangeNotificationController;->-get4(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;
PLcom/android/server/am/TaskChangeNotificationController;->-get9(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;
-PLcom/android/server/am/TaskChangeNotificationController;->-wrap0(Lcom/android/server/am/TaskChangeNotificationController;Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
-PLcom/android/server/am/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
-PLcom/android/server/am/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3225(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3334(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3467(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
@@ -6141,89 +8731,67 @@ PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_s
PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_5401(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
PLcom/android/server/am/TaskChangeNotificationController;->notifyActivityRequestedOrientationChanged(II)V
PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskCreated(ILandroid/content/ComponentName;)V
-PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V
PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskMovedToFront(I)V
PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskRemovalStarted(I)V
PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskRemoved(I)V
PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V
-PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskStackChanged()V
PLcom/android/server/am/TaskChangeNotificationController;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
PLcom/android/server/am/TaskPersister$1;-><init>(Lcom/android/server/am/TaskPersister;)V
PLcom/android/server/am/TaskPersister$1;->compare(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/TaskRecord;)I
PLcom/android/server/am/TaskPersister$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->run()V
+PLcom/android/server/am/TaskPersister$ImageWriteQueueItem;-><init>(Ljava/lang/String;Landroid/graphics/Bitmap;)V
PLcom/android/server/am/TaskPersister$TaskWriteQueueItem;-><init>(Lcom/android/server/am/TaskRecord;)V
PLcom/android/server/am/TaskPersister$WriteQueueItem;-><init>()V
PLcom/android/server/am/TaskPersister$WriteQueueItem;-><init>(Lcom/android/server/am/TaskPersister$WriteQueueItem;)V
-PLcom/android/server/am/TaskPersister;->-get0(Lcom/android/server/am/TaskPersister;)J
-PLcom/android/server/am/TaskPersister;->-get1(Lcom/android/server/am/TaskPersister;)Lcom/android/server/am/RecentTasks;
PLcom/android/server/am/TaskPersister;->-get2(Lcom/android/server/am/TaskPersister;)Lcom/android/server/am/ActivityManagerService;
PLcom/android/server/am/TaskPersister;->-set0(Lcom/android/server/am/TaskPersister;J)J
+PLcom/android/server/am/TaskPersister;->-wrap0(Ljava/lang/String;)Z
PLcom/android/server/am/TaskPersister;->-wrap1(Lcom/android/server/am/TaskPersister;Lcom/android/server/am/TaskRecord;)Ljava/io/StringWriter;
PLcom/android/server/am/TaskPersister;->-wrap2(Lcom/android/server/am/TaskPersister;Landroid/util/ArraySet;)V
PLcom/android/server/am/TaskPersister;->-wrap3(Lcom/android/server/am/TaskPersister;)V
-PLcom/android/server/am/TaskPersister;->getUserImagesDir(I)Ljava/io/File;
+PLcom/android/server/am/TaskPersister;->createParentDirectory(Ljava/lang/String;)Z
+PLcom/android/server/am/TaskPersister;->getImageFromWriteQueue(Ljava/lang/String;)Landroid/graphics/Bitmap;
+PLcom/android/server/am/TaskPersister;->getTaskDescriptionIcon(Ljava/lang/String;)Landroid/graphics/Bitmap;
PLcom/android/server/am/TaskPersister;->getUserPersistedTaskIdsFile(I)Ljava/io/File;
-PLcom/android/server/am/TaskPersister;->getUserTasksDir(I)Ljava/io/File;
PLcom/android/server/am/TaskPersister;->loadPersistedTaskIdsForUser(I)Landroid/util/SparseBooleanArray;
-PLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V
-PLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[Ljava/io/File;)V
PLcom/android/server/am/TaskPersister;->removeThumbnails(Lcom/android/server/am/TaskRecord;)V
-PLcom/android/server/am/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List;
-PLcom/android/server/am/TaskPersister;->saveToXml(Lcom/android/server/am/TaskRecord;)Ljava/io/StringWriter;
+PLcom/android/server/am/TaskPersister;->restoreImage(Ljava/lang/String;)Landroid/graphics/Bitmap;
+PLcom/android/server/am/TaskPersister;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V
PLcom/android/server/am/TaskPersister;->startPersisting()V
PLcom/android/server/am/TaskPersister;->taskIdToTask(ILjava/util/ArrayList;)Lcom/android/server/am/TaskRecord;
-PLcom/android/server/am/TaskPersister;->wakeup(Lcom/android/server/am/TaskRecord;Z)V
-PLcom/android/server/am/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V
-PLcom/android/server/am/TaskPersister;->writeTaskIdsFiles()V
PLcom/android/server/am/TaskPersister;->yieldIfQueueTooDeep()V
PLcom/android/server/am/TaskRecord;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZIIILjava/lang/String;Ljava/util/ArrayList;JJJZLandroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskThumbnailInfo;IIIIILjava/lang/String;IZZZZII)V
-PLcom/android/server/am/TaskRecord;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;I)V
-PLcom/android/server/am/TaskRecord;->addActivityAtIndex(ILcom/android/server/am/ActivityRecord;)V
-PLcom/android/server/am/TaskRecord;->addActivityToTop(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/TaskRecord;->addStartingWindowsForVisibleActivities(Z)V
PLcom/android/server/am/TaskRecord;->autoRemoveFromRecents()Z
-PLcom/android/server/am/TaskRecord;->cancelThumbnailTransition()V
-PLcom/android/server/am/TaskRecord;->cancelWindowTransition()V
PLcom/android/server/am/TaskRecord;->closeRecentsChain()V
-PLcom/android/server/am/TaskRecord;->createWindowContainer(ZZ)V
+PLcom/android/server/am/TaskRecord;->containsOnlyFullscreenActivities()Z
PLcom/android/server/am/TaskRecord;->disposeThumbnail()V
-PLcom/android/server/am/TaskRecord;->findEffectiveRootIndex()I
-PLcom/android/server/am/TaskRecord;->freeLastThumbnail()V
-PLcom/android/server/am/TaskRecord;->getBaseIntent()Landroid/content/Intent;
+PLcom/android/server/am/TaskRecord;->findActivityInHistoryLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
+PLcom/android/server/am/TaskRecord;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer;
PLcom/android/server/am/TaskRecord;->getChildCount()I
-PLcom/android/server/am/TaskRecord;->getLaunchBounds()Landroid/graphics/Rect;
+PLcom/android/server/am/TaskRecord;->getLaunchStackId()I
PLcom/android/server/am/TaskRecord;->getParent()Lcom/android/server/am/ConfigurationContainer;
PLcom/android/server/am/TaskRecord;->getRootActivity()Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/TaskRecord;->getSnapshot(Z)Landroid/app/ActivityManager$TaskSnapshot;
-PLcom/android/server/am/TaskRecord;->getStackId()I
-PLcom/android/server/am/TaskRecord;->getTaskToReturnTo()I
-PLcom/android/server/am/TaskRecord;->getTopActivity()Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/TaskRecord;->getWindowContainerBounds(Landroid/graphics/Rect;)V
PLcom/android/server/am/TaskRecord;->getWindowContainerController()Lcom/android/server/wm/TaskWindowContainerController;
PLcom/android/server/am/TaskRecord;->isApplicationTask()Z
+PLcom/android/server/am/TaskRecord;->isAssistantTask()Z
PLcom/android/server/am/TaskRecord;->isClearingToReuseTask()Z
-PLcom/android/server/am/TaskRecord;->isHomeTask()Z
PLcom/android/server/am/TaskRecord;->isLockTaskWhitelistedLocked()Z
PLcom/android/server/am/TaskRecord;->isOverAssistantStack()Z
-PLcom/android/server/am/TaskRecord;->isOverHomeStack()Z
-PLcom/android/server/am/TaskRecord;->isResizeable()Z
-PLcom/android/server/am/TaskRecord;->isResizeable(Z)Z
+PLcom/android/server/am/TaskRecord;->isRecentsTask()Z
+PLcom/android/server/am/TaskRecord;->isSameIntentFilter(Lcom/android/server/am/ActivityRecord;)Z
PLcom/android/server/am/TaskRecord;->okToShowLocked()Z
PLcom/android/server/am/TaskRecord;->onParentChanged()V
PLcom/android/server/am/TaskRecord;->onSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V
PLcom/android/server/am/TaskRecord;->onlyHasTaskOverlayActivities(Z)Z
PLcom/android/server/am/TaskRecord;->performClearTaskAtIndexLocked(IZ)V
PLcom/android/server/am/TaskRecord;->performClearTaskForReuseLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/TaskRecord;->performClearTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord;
PLcom/android/server/am/TaskRecord;->removeActivity(Lcom/android/server/am/ActivityRecord;)Z
PLcom/android/server/am/TaskRecord;->removeActivity(Lcom/android/server/am/ActivityRecord;Z)Z
PLcom/android/server/am/TaskRecord;->removeTaskActivitiesLocked(Z)V
PLcom/android/server/am/TaskRecord;->removeWindowContainer()V
PLcom/android/server/am/TaskRecord;->removedFromRecents()V
-PLcom/android/server/am/TaskRecord;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/am/TaskRecord;->setFrontOfTask()V
-PLcom/android/server/am/TaskRecord;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
PLcom/android/server/am/TaskRecord;->setIntent(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/TaskRecord;->setLockTaskAuth()V
PLcom/android/server/am/TaskRecord;->setMinDimensions(Landroid/content/pm/ActivityInfo;)V
@@ -6233,24 +8801,11 @@ PLcom/android/server/am/TaskRecord;->setStack(Lcom/android/server/am/ActivitySta
PLcom/android/server/am/TaskRecord;->setTaskToReturnTo(I)V
PLcom/android/server/am/TaskRecord;->setTaskToReturnTo(Lcom/android/server/am/ActivityRecord;)V
PLcom/android/server/am/TaskRecord;->setWindowContainerController(Lcom/android/server/wm/TaskWindowContainerController;)V
-PLcom/android/server/am/TaskRecord;->supportsSplitScreen()Z
+PLcom/android/server/am/TaskRecord;->toString()Ljava/lang/String;
PLcom/android/server/am/TaskRecord;->topRunningActivityWithStartingWindowLocked()Lcom/android/server/am/ActivityRecord;
-PLcom/android/server/am/TaskRecord;->touchActiveTime()V
-PLcom/android/server/am/TaskRecord;->updateEffectiveIntent()V
-PLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;)Z
-PLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-PLcom/android/server/am/TaskRecord;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect;
-PLcom/android/server/am/TaskRecord;->updateTaskDescription()V
PLcom/android/server/am/TaskRecord;->validateBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect;
PLcom/android/server/am/UidRecord$ChangeItem;-><init>()V
-PLcom/android/server/am/UidRecord;-><init>(I)V
PLcom/android/server/am/UidRecord;->toString()Ljava/lang/String;
-PLcom/android/server/am/UidRecord;->updateHasInternetPermission()V
-PLcom/android/server/am/UidRecord;->updateLastDispatchedProcStateSeq(I)V
-PLcom/android/server/am/UriPermission;-><init>(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/am/ActivityManagerService$GrantUri;)V
-PLcom/android/server/am/UriPermission;->grantModes(ILcom/android/server/am/UriPermissionOwner;)V
-PLcom/android/server/am/UriPermission;->revokeModes(IZ)Z
-PLcom/android/server/am/UriPermission;->updateModeFlags()V
PLcom/android/server/am/UriPermissionOwner$ExternalToken;-><init>(Lcom/android/server/am/UriPermissionOwner;)V
PLcom/android/server/am/UriPermissionOwner;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/Object;)V
PLcom/android/server/am/UriPermissionOwner;->getExternalTokenLocked()Landroid/os/Binder;
@@ -6260,28 +8815,17 @@ PLcom/android/server/am/UriPermissionOwner;->removeUriPermissionsLocked(I)V
PLcom/android/server/am/UserController$2;-><init>(Lcom/android/server/am/UserController;I)V
PLcom/android/server/am/UserController$2;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
PLcom/android/server/am/UserController$Injector;->broadcastIntentLocked(Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIII)I
-PLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I
-PLcom/android/server/am/UserController$Injector;->checkComponentPermission(Ljava/lang/String;IIIZ)I
-PLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService;
PLcom/android/server/am/UserController$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal;
PLcom/android/server/am/UserController$Injector;->isRuntimeRestarted()Z
PLcom/android/server/am/UserController;->-get0()Ljava/lang/String;
PLcom/android/server/am/UserController;->dispatchLockedBootComplete(I)V
-PLcom/android/server/am/UserController;->exists(I)Z
PLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;Landroid/content/IIntentReceiver;)V
PLcom/android/server/am/UserController;->finishUserUnlocked(Lcom/android/server/am/UserState;)V
PLcom/android/server/am/UserController;->finishUserUnlockedCompleted(Lcom/android/server/am/UserState;)V
PLcom/android/server/am/UserController;->finishUserUnlocking(Lcom/android/server/am/UserState;)V
-PLcom/android/server/am/UserController;->getCurrentUser()Landroid/content/pm/UserInfo;
-PLcom/android/server/am/UserController;->getCurrentUserIdLocked()I
-PLcom/android/server/am/UserController;->getProfileIds(I)Ljava/util/Set;
-PLcom/android/server/am/UserController;->getStartedUserArrayLocked()[I
PLcom/android/server/am/UserController;->getStorageManager()Landroid/os/storage/IStorageManager;
-PLcom/android/server/am/UserController;->getUserInfo(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/am/UserController;->hasStartedUserState(I)Z
+PLcom/android/server/am/UserController;->getUsers()[I
PLcom/android/server/am/UserController;->hasUserRestriction(Ljava/lang/String;I)Z
-PLcom/android/server/am/UserController;->isSameProfileGroup(II)Z
-PLcom/android/server/am/UserController;->isUserRunningLocked(II)Z
PLcom/android/server/am/UserController;->maybeUnlockUser(I)Z
PLcom/android/server/am/UserController;->onSystemReady()V
PLcom/android/server/am/UserController;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
@@ -6290,7 +8834,6 @@ PLcom/android/server/am/UserController;->sendUserSwitchBroadcastsLocked(II)V
PLcom/android/server/am/UserController;->shouldConfirmCredentials(I)Z
PLcom/android/server/am/UserController;->startProfilesLocked()V
PLcom/android/server/am/UserController;->unlockUserCleared(I[B[BLandroid/os/IProgressListener;)Z
-PLcom/android/server/am/UserController;->unsafeConvertIncomingUserLocked(I)I
PLcom/android/server/am/UserController;->updateCurrentProfileIdsLocked()V
PLcom/android/server/am/UserState;->setState(I)V
PLcom/android/server/am/UserState;->setState(II)Z
@@ -6300,17 +8843,17 @@ PLcom/android/server/am/VrController;->clearVrRenderThreadLocked(Z)V
PLcom/android/server/am/VrController;->hasPersistentVrFlagSet()Z
PLcom/android/server/am/VrController;->inVrMode()Z
PLcom/android/server/am/VrController;->onSystemReady()V
-PLcom/android/server/am/VrController;->onTopProcChangedLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/VrController;->onVrModeChanged(Lcom/android/server/am/ActivityRecord;)Z
-PLcom/android/server/am/VrController;->setVrRenderThreadLocked(IIZ)I
PLcom/android/server/am/VrController;->shouldDisableNonVrUiLocked()Z
PLcom/android/server/am/VrController;->updateVrRenderThreadLocked(IZ)I
+PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;->$m$0()V
+PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;->run()V
PLcom/android/server/appwidget/AppWidgetService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/appwidget/AppWidgetService;->lambda$-com_android_server_appwidget_AppWidgetService_1563(I)V
PLcom/android/server/appwidget/AppWidgetService;->onBootPhase(I)V
PLcom/android/server/appwidget/AppWidgetService;->onStart()V
PLcom/android/server/appwidget/AppWidgetService;->onUnlockUser(I)V
PLcom/android/server/appwidget/AppWidgetServiceImpl$1;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;)V
PLcom/android/server/appwidget/AppWidgetServiceImpl$CallbackHandler;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/os/Looper;)V
@@ -6320,87 +8863,73 @@ PLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;-><init>(IILjava/lang
PLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;->equals(Ljava/lang/Object;)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;-><init>()V
PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->getUserId()I
PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedByLockedProfileLocked(Z)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedByQuietProfileLocked(Z)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedBySuspendedPackageLocked(Z)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->hashCode()I
+PLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;->run()V
PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceCallFromPackage(Ljava/lang/String;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getGroupParent(I)I
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I
PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isEnabledGroupProfile(I)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isParentOrProfile(II)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProfileEnabled(I)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProviderInCallerOrInProfileAndWhitelListed(Ljava/lang/String;I)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get0()Z
PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get1(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/app/AppOpsManager;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get10(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/os/UserManager;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get9(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get5(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Ljava/lang/Object;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap10(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap11(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/content/Intent;I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap14(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap4(Lcom/android/server/appwidget/AppWidgetServiceImpl;IZ)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;-><init>(Landroid/content/Context;)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->addProviderLocked(Landroid/content/pm/ResolveInfo;)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl;->bindLoadedWidgetsLocked(Ljava/util/List;)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->clearProvidersAndHostsTagsLocked()V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->cloneIfLocalBinder(Landroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetProviderInfo;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->computeMaximumWidgetBitmapMemory()V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I
PLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->getSavedStateFile(I)Landroid/util/AtomicFile;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->getStateFile(I)Ljava/io/File;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getUidForPackage(Ljava/lang/String;I)I
PLcom/android/server/appwidget/AppWidgetServiceImpl;->getWidgetIds(Ljava/util/ArrayList;)[I
PLcom/android/server/appwidget/AppWidgetServiceImpl;->isLocalBinder()Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithUnlockedParent(I)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->isUserRunningAndUnlocked(I)Z
PLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupStateLocked([I)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupWidgetProvidersLocked([I)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupOrAddHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->onConfigurationChanged()V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->onPackageBroadcastReceived(Landroid/content/Intent;I)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->onStart()V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->onUserUnlocked(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->parseProviderInfoXml(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ResolveInfo;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->performUpgradeLocked(I)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->pruneHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->queryIntentReceivers(Landroid/content/Intent;I)Ljava/util/List;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->readProfileStateFromFileLocked(Ljava/io/FileInputStream;ILjava/util/List;)I
PLcom/android/server/appwidget/AppWidgetServiceImpl;->registerBroadcastReceiver()V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->registerOnCrossProfileProvidersChangedListener()V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedState(I)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedStateForGroup(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->resolveHostUidLocked(Ljava/lang/String;I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->saveGroupStateAsync(I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->saveStateLocked(I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyGroupHostsForProvidersChangedLocked(I)V
PLcom/android/server/appwidget/AppWidgetServiceImpl;->setSafeMode(Z)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/appwidget/AppWidgetServiceImpl;->stopListening(Ljava/lang/String;I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateProvidersForPackageLocked(Ljava/lang/String;ILjava/util/Set;)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->tagProvidersAndHosts()V
+PLcom/android/server/audio/AudioEventLogger$StringEvent;-><init>(Ljava/lang/String;)V
+PLcom/android/server/audio/AudioEventLogger;-><init>(ILjava/lang/String;)V
PLcom/android/server/audio/AudioService$1;-><init>(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService$1;->onError(I)V
PLcom/android/server/audio/AudioService$2;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$2;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V
+PLcom/android/server/audio/AudioService$2;->onUidGone(IZ)V
PLcom/android/server/audio/AudioService$3;-><init>(Lcom/android/server/audio/AudioService;)V
-PLcom/android/server/audio/AudioService$4;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V
+PLcom/android/server/audio/AudioService$3;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V
+PLcom/android/server/audio/AudioService$4;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$5;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V
PLcom/android/server/audio/AudioService$AudioHandler;-><init>(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService$AudioHandler;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioHandler;)V
-PLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/audio/AudioService$AudioHandler;->onLoadSoundEffects()Z
PLcom/android/server/audio/AudioService$AudioHandler;->onPersistSafeVolumeState(I)V
-PLcom/android/server/audio/AudioService$AudioHandler;->onPlaySoundEffect(II)V
-PLcom/android/server/audio/AudioService$AudioHandler;->persistRingerMode(I)V
PLcom/android/server/audio/AudioService$AudioHandler;->persistVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
-PLcom/android/server/audio/AudioService$AudioHandler;->setAllVolumes(Lcom/android/server/audio/AudioService$VolumeStreamState;)V
PLcom/android/server/audio/AudioService$AudioHandler;->setDeviceVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
-PLcom/android/server/audio/AudioService$AudioHandler;->setForceUse(II)V
+PLcom/android/server/audio/AudioService$AudioHandler;->setForceUse(IILjava/lang/String;)V
PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;)V
PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;)V
PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
@@ -6453,51 +8982,38 @@ PLcom/android/server/audio/AudioService$VolumeStreamState;->-wrap0(Lcom/android/
PLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;I)V
PLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;ILcom/android/server/audio/AudioService$VolumeStreamState;)V
PLcom/android/server/audio/AudioService$VolumeStreamState;->adjustIndex(IILjava/lang/String;)Z
-PLcom/android/server/audio/AudioService$VolumeStreamState;->applyAllVolumes()V
PLcom/android/server/audio/AudioService$VolumeStreamState;->applyDeviceVolume_syncVSS(I)V
PLcom/android/server/audio/AudioService$VolumeStreamState;->checkFixedVolumeDevices()V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I
-PLcom/android/server/audio/AudioService$VolumeStreamState;->getMaxIndex()I
PLcom/android/server/audio/AudioService$VolumeStreamState;->getMinIndex()I
-PLcom/android/server/audio/AudioService$VolumeStreamState;->getSettingNameForDevice(I)Ljava/lang/String;
PLcom/android/server/audio/AudioService$VolumeStreamState;->getStreamType()I
PLcom/android/server/audio/AudioService$VolumeStreamState;->getValidIndex(I)I
PLcom/android/server/audio/AudioService$VolumeStreamState;->hasIndexForDevice(I)Z
-PLcom/android/server/audio/AudioService$VolumeStreamState;->hasValidSettingsName()Z
PLcom/android/server/audio/AudioService$VolumeStreamState;->mute(Z)V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)I
-PLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(IILjava/lang/String;)Z
PLcom/android/server/audio/AudioService;->-get0()[I
PLcom/android/server/audio/AudioService;->-get1()[I
PLcom/android/server/audio/AudioService;->-get12(Lcom/android/server/audio/AudioService;)Z
PLcom/android/server/audio/AudioService;->-get13(Lcom/android/server/audio/AudioService;)Landroid/bluetooth/BluetoothHeadset;
PLcom/android/server/audio/AudioService;->-get15(Lcom/android/server/audio/AudioService;)Ljava/lang/Boolean;
PLcom/android/server/audio/AudioService;->-get16(Lcom/android/server/audio/AudioService;)Landroid/util/ArrayMap;
-PLcom/android/server/audio/AudioService;->-get17(Lcom/android/server/audio/AudioService;)Landroid/content/ContentResolver;
PLcom/android/server/audio/AudioService;->-get2()Ljava/util/List;
-PLcom/android/server/audio/AudioService;->-get23(Lcom/android/server/audio/AudioService;)Z
-PLcom/android/server/audio/AudioService;->-get24(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/MediaFocusControl;
-PLcom/android/server/audio/AudioService;->-get26(Lcom/android/server/audio/AudioService;)Landroid/media/AudioManagerInternal$RingerModeDelegate;
-PLcom/android/server/audio/AudioService;->-get28(Lcom/android/server/audio/AudioService;)I
-PLcom/android/server/audio/AudioService;->-get29(Lcom/android/server/audio/AudioService;)Ljava/util/ArrayList;
+PLcom/android/server/audio/AudioService;->-get24(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-get25(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/MediaFocusControl;
+PLcom/android/server/audio/AudioService;->-get28(Lcom/android/server/audio/AudioService;)Landroid/media/AudioManagerInternal$RingerModeDelegate;
PLcom/android/server/audio/AudioService;->-get3(Lcom/android/server/audio/AudioService;)[[I
-PLcom/android/server/audio/AudioService;->-get31(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
-PLcom/android/server/audio/AudioService;->-get32(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
-PLcom/android/server/audio/AudioService;->-get33(Lcom/android/server/audio/AudioService;)Landroid/media/SoundPool;
-PLcom/android/server/audio/AudioService;->-get34(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolCallback;
-PLcom/android/server/audio/AudioService;->-get35(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolListenerThread;
-PLcom/android/server/audio/AudioService;->-get36(Lcom/android/server/audio/AudioService;)Landroid/os/Looper;
-PLcom/android/server/audio/AudioService;->-get37(Lcom/android/server/audio/AudioService;)[Lcom/android/server/audio/AudioService$VolumeStreamState;
-PLcom/android/server/audio/AudioService;->-get38(Lcom/android/server/audio/AudioService;)Z
-PLcom/android/server/audio/AudioService;->-get39(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-get30(Lcom/android/server/audio/AudioService;)I
+PLcom/android/server/audio/AudioService;->-get31(Lcom/android/server/audio/AudioService;)Ljava/util/ArrayList;
+PLcom/android/server/audio/AudioService;->-get33(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioService;->-get34(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioService;->-get36(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolCallback;
+PLcom/android/server/audio/AudioService;->-get37(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolListenerThread;
+PLcom/android/server/audio/AudioService;->-get38(Lcom/android/server/audio/AudioService;)Landroid/os/Looper;
PLcom/android/server/audio/AudioService;->-get4(Lcom/android/server/audio/AudioService;)Landroid/bluetooth/BluetoothA2dp;
PLcom/android/server/audio/AudioService;->-get40(Lcom/android/server/audio/AudioService;)Z
-PLcom/android/server/audio/AudioService;->-get42()I
+PLcom/android/server/audio/AudioService;->-get41(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-get42(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-get45()I
PLcom/android/server/audio/AudioService;->-get5(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
PLcom/android/server/audio/AudioService;->-get7(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
-PLcom/android/server/audio/AudioService;->-get9(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$AudioHandler;
PLcom/android/server/audio/AudioService;->-set0(Lcom/android/server/audio/AudioService;Landroid/bluetooth/BluetoothA2dp;)Landroid/bluetooth/BluetoothA2dp;
PLcom/android/server/audio/AudioService;->-set1(Lcom/android/server/audio/AudioService;[I)[I
PLcom/android/server/audio/AudioService;->-set12(Lcom/android/server/audio/AudioService;Landroid/media/SoundPool;)Landroid/media/SoundPool;
@@ -6521,7 +9037,7 @@ PLcom/android/server/audio/AudioService;->-wrap35(Lcom/android/server/audio/Audi
PLcom/android/server/audio/AudioService;->-wrap36(Lcom/android/server/audio/AudioService;Landroid/content/Intent;)V
PLcom/android/server/audio/AudioService;->-wrap38(Landroid/os/Handler;IIIILjava/lang/Object;I)V
PLcom/android/server/audio/AudioService;->-wrap4(Lcom/android/server/audio/AudioService;I)I
-PLcom/android/server/audio/AudioService;->-wrap40(Lcom/android/server/audio/AudioService;II)V
+PLcom/android/server/audio/AudioService;->-wrap40(Lcom/android/server/audio/AudioService;IILjava/lang/String;)V
PLcom/android/server/audio/AudioService;->-wrap6(Lcom/android/server/audio/AudioService;III)I
PLcom/android/server/audio/AudioService;-><init>(Landroid/content/Context;)V
PLcom/android/server/audio/AudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
@@ -6535,7 +9051,6 @@ PLcom/android/server/audio/AudioService;->broadcastVibrateSetting(I)V
PLcom/android/server/audio/AudioService;->checkAllAliasStreamVolumes()V
PLcom/android/server/audio/AudioService;->checkAllFixedVolumeDevices()V
PLcom/android/server/audio/AudioService;->checkAudioSettingsPermission(Ljava/lang/String;)Z
-PLcom/android/server/audio/AudioService;->checkForRingerModeChange(IIIZLjava/lang/String;I)I
PLcom/android/server/audio/AudioService;->checkMuteAffectedStreams()V
PLcom/android/server/audio/AudioService;->checkScoAudioState()V
PLcom/android/server/audio/AudioService;->clearAllScoClients(IZ)V
@@ -6546,19 +9061,16 @@ PLcom/android/server/audio/AudioService;->enforceSafeMediaVolume(Ljava/lang/Stri
PLcom/android/server/audio/AudioService;->enforceVolumeController(Ljava/lang/String;)V
PLcom/android/server/audio/AudioService;->ensureValidDirection(I)V
PLcom/android/server/audio/AudioService;->ensureValidRingerMode(I)V
-PLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V
PLcom/android/server/audio/AudioService;->forceVolumeControlStream(ILandroid/os/IBinder;)V
PLcom/android/server/audio/AudioService;->getActiveStreamType(I)I
PLcom/android/server/audio/AudioService;->getBluetoothHeadset()Z
PLcom/android/server/audio/AudioService;->getCurrentUserId()I
-PLcom/android/server/audio/AudioService;->getDeviceForStream(I)I
-PLcom/android/server/audio/AudioService;->getDevicesForStream(I)I
-PLcom/android/server/audio/AudioService;->getDevicesForStream(IZ)I
PLcom/android/server/audio/AudioService;->getLastAudibleStreamVolume(I)I
PLcom/android/server/audio/AudioService;->getMode()I
PLcom/android/server/audio/AudioService;->getRingerModeExternal()I
PLcom/android/server/audio/AudioService;->getRingerModeInternal()I
PLcom/android/server/audio/AudioService;->getRingtonePlayer()Landroid/media/IRingtonePlayer;
+PLcom/android/server/audio/AudioService;->getSafeUsbMediaVolumeIndex()I
PLcom/android/server/audio/AudioService;->getStreamMaxVolume(I)I
PLcom/android/server/audio/AudioService;->getStreamMinVolume(I)I
PLcom/android/server/audio/AudioService;->getStreamVolume(I)I
@@ -6567,7 +9079,6 @@ PLcom/android/server/audio/AudioService;->getVibrateSetting(I)I
PLcom/android/server/audio/AudioService;->handleConfigurationChanged(Landroid/content/Context;)V
PLcom/android/server/audio/AudioService;->initA11yMonitoring()V
PLcom/android/server/audio/AudioService;->isAfMusicActiveRecently(I)Z
-PLcom/android/server/audio/AudioService;->isAndroidNPlus(Ljava/lang/String;)Z
PLcom/android/server/audio/AudioService;->isBluetoothScoOn()Z
PLcom/android/server/audio/AudioService;->isCameraSoundForced()Z
PLcom/android/server/audio/AudioService;->isInCommunication()Z
@@ -6584,6 +9095,7 @@ PLcom/android/server/audio/AudioService;->loadTouchSoundAssets()V
PLcom/android/server/audio/AudioService;->muteRingerModeStreams()V
PLcom/android/server/audio/AudioService;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V
PLcom/android/server/audio/AudioService;->observeDevicesForStreams(I)V
+PLcom/android/server/audio/AudioService;->onAccessibilityServicesStateChanged(Landroid/view/accessibility/AccessibilityManager;)V
PLcom/android/server/audio/AudioService;->onBroadcastScoConnectionState(I)V
PLcom/android/server/audio/AudioService;->onConfigureSafeVolume(ZLjava/lang/String;)V
PLcom/android/server/audio/AudioService;->onIndicateSystemReady()V
@@ -6591,7 +9103,6 @@ PLcom/android/server/audio/AudioService;->onSystemReady()V
PLcom/android/server/audio/AudioService;->playSoundEffect(I)V
PLcom/android/server/audio/AudioService;->playSoundEffectVolume(IF)V
PLcom/android/server/audio/AudioService;->playerAttributes(ILandroid/media/AudioAttributes;)V
-PLcom/android/server/audio/AudioService;->playerEvent(II)V
PLcom/android/server/audio/AudioService;->readAndSetLowRamDevice()V
PLcom/android/server/audio/AudioService;->readAudioSettings(Z)V
PLcom/android/server/audio/AudioService;->readCameraSoundForced()Z
@@ -6601,16 +9112,15 @@ PLcom/android/server/audio/AudioService;->readUserRestrictions()V
PLcom/android/server/audio/AudioService;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
PLcom/android/server/audio/AudioService;->releasePlayer(I)V
PLcom/android/server/audio/AudioService;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I
-PLcom/android/server/audio/AudioService;->rescaleIndex(III)I
PLcom/android/server/audio/AudioService;->resetBluetoothSco()V
-PLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;)V
-PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(I)V
-PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(Landroid/content/ContentResolver;)V
-PLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V
+PLcom/android/server/audio/AudioService;->safeMediaVolumeIndex(I)I
+PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(ILjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(Landroid/content/ContentResolver;Ljava/lang/String;)V
PLcom/android/server/audio/AudioService;->sendStickyBroadcastToAll(Landroid/content/Intent;)V
PLcom/android/server/audio/AudioService;->sendVolumeUpdate(IIII)V
-PLcom/android/server/audio/AudioService;->setBluetoothScoOnInt(Z)V
-PLcom/android/server/audio/AudioService;->setForceUseInt_SyncDevices(II)V
+PLcom/android/server/audio/AudioService;->setBluetoothA2dpOn(Z)V
+PLcom/android/server/audio/AudioService;->setBluetoothScoOnInt(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->setForceUseInt_SyncDevices(IILjava/lang/String;)V
PLcom/android/server/audio/AudioService;->setMode(ILandroid/os/IBinder;Ljava/lang/String;)V
PLcom/android/server/audio/AudioService;->setModeInt(ILandroid/os/IBinder;ILjava/lang/String;)I
PLcom/android/server/audio/AudioService;->setRingerMode(ILjava/lang/String;Z)V
@@ -6620,6 +9130,7 @@ PLcom/android/server/audio/AudioService;->setRingerModeInternal(ILjava/lang/Stri
PLcom/android/server/audio/AudioService;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V
PLcom/android/server/audio/AudioService;->setStreamVolumeInt(IIIZLjava/lang/String;)V
PLcom/android/server/audio/AudioService;->setSystemAudioMute(Z)V
+PLcom/android/server/audio/AudioService;->setSystemAudioVolume(IIII)V
PLcom/android/server/audio/AudioService;->setVolumeController(Landroid/media/IVolumeController;)V
PLcom/android/server/audio/AudioService;->setVolumePolicy(Landroid/media/VolumePolicy;)V
PLcom/android/server/audio/AudioService;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
@@ -6627,17 +9138,24 @@ PLcom/android/server/audio/AudioService;->systemReady()V
PLcom/android/server/audio/AudioService;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
PLcom/android/server/audio/AudioService;->updateA11yVolumeAlias(Z)V
PLcom/android/server/audio/AudioService;->updateDefaultStreamOverrideDelay(Z)V
+PLcom/android/server/audio/AudioService;->updateDefaultVolumes()V
+PLcom/android/server/audio/AudioService;->updateFlagsForSystemAudio(I)I
PLcom/android/server/audio/AudioService;->updateMasterMono(Landroid/content/ContentResolver;)V
PLcom/android/server/audio/AudioService;->updateRingerModeAffectedStreams()Z
PLcom/android/server/audio/AudioService;->updateStreamVolumeAlias(ZLjava/lang/String;)V
PLcom/android/server/audio/AudioService;->volumeAdjustmentAllowedByDnd(II)Z
PLcom/android/server/audio/AudioService;->waitForAudioHandlerCreation()V
-PLcom/android/server/audio/AudioService;->wouldToggleZenMode(I)Z
+PLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;-><init>(IILjava/lang/String;)V
+PLcom/android/server/audio/AudioServiceEvents$PhoneStateEvent;-><init>(Ljava/lang/String;II)V
+PLcom/android/server/audio/AudioServiceEvents$VolumeEvent;-><init>(IIIILjava/lang/String;)V
PLcom/android/server/audio/FocusRequester;-><init>(Landroid/media/AudioAttributes;IILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;Ljava/lang/String;Lcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;Ljava/lang/String;ILcom/android/server/audio/MediaFocusControl;I)V
PLcom/android/server/audio/FocusRequester;->finalize()V
PLcom/android/server/audio/FocusRequester;->getClientUid()I
+PLcom/android/server/audio/FocusRequester;->getGainRequest()I
+PLcom/android/server/audio/FocusRequester;->getGrantFlags()I
PLcom/android/server/audio/FocusRequester;->handleFocusGainFromRequest(I)V
PLcom/android/server/audio/FocusRequester;->hasSameClient(Ljava/lang/String;)Z
+PLcom/android/server/audio/FocusRequester;->isLockedFocusOwner()Z
PLcom/android/server/audio/FocusRequester;->release()V
PLcom/android/server/audio/FocusRequester;->toAudioFocusInfo()Landroid/media/AudioFocusInfo;
PLcom/android/server/audio/MediaFocusControl$2;-><init>(Lcom/android/server/audio/MediaFocusControl;Z)V
@@ -6652,6 +9170,7 @@ PLcom/android/server/audio/MediaFocusControl;->abandonAudioFocus(Landroid/media/
PLcom/android/server/audio/MediaFocusControl;->canReassignAudioFocus()Z
PLcom/android/server/audio/MediaFocusControl;->discardAudioFocusOwner()V
PLcom/android/server/audio/MediaFocusControl;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I
+PLcom/android/server/audio/MediaFocusControl;->isLockedFocusOwner(Lcom/android/server/audio/FocusRequester;)Z
PLcom/android/server/audio/MediaFocusControl;->notifyExtFocusPolicyFocusRequest_syncAf(Landroid/media/AudioFocusInfo;ILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;)Z
PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusGrant_syncAf(Landroid/media/AudioFocusInfo;I)V
PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusLoss_syncAf(Landroid/media/AudioFocusInfo;Z)V
@@ -6660,27 +9179,28 @@ PLcom/android/server/audio/MediaFocusControl;->removeFocusStackEntry(Ljava/lang/
PLcom/android/server/audio/MediaFocusControl;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;II)I
PLcom/android/server/audio/MediaFocusControl;->runAudioCheckerForRingOrCallAsync(Z)V
PLcom/android/server/audio/MediaFocusControl;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;-><init>(ILandroid/media/AudioAttributes;)V
PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>()V
PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>(Lcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->checkDuck(Landroid/media/AudioPlaybackConfiguration;)V
PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V
PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->unduckUid(ILjava/util/HashMap;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;-><init>(Landroid/media/AudioPlaybackConfiguration;)V
PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;-><init>(Landroid/media/IPlaybackConfigDispatcher;Z)V
PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->init()Z
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;-><init>(II)V
PLcom/android/server/audio/PlaybackActivityMonitor;-><init>()V
PLcom/android/server/audio/PlaybackActivityMonitor;->checkConfigurationCaller(ILandroid/media/AudioPlaybackConfiguration;I)Z
-PLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange()V
PLcom/android/server/audio/PlaybackActivityMonitor;->mutePlayersForCall([I)V
PLcom/android/server/audio/PlaybackActivityMonitor;->playerAttributes(ILandroid/media/AudioAttributes;I)V
PLcom/android/server/audio/PlaybackActivityMonitor;->playerDeath(I)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(III)V
PLcom/android/server/audio/PlaybackActivityMonitor;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;Z)V
PLcom/android/server/audio/PlaybackActivityMonitor;->releasePlayer(II)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
PLcom/android/server/audio/PlaybackActivityMonitor;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V
PLcom/android/server/audio/PlaybackActivityMonitor;->unmutePlayersForCall()V
-PLcom/android/server/audio/RecordingActivityMonitor;-><init>()V
+PLcom/android/server/audio/RecordingActivityMonitor;-><init>(Landroid/content/Context;)V
PLcom/android/server/audio/RecordingActivityMonitor;->initMonitor()V
-PLcom/android/server/audio/RecordingActivityMonitor;->onRecordingConfigurationChanged(III[I)V
+PLcom/android/server/audio/RecordingActivityMonitor;->onRecordingConfigurationChanged(IIII[ILjava/lang/String;)V
PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;->$m$0()V
PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;-><init>(IILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;->run()V
@@ -6692,11 +9212,16 @@ PLcom/android/server/autofill/-$Lambda$vJuxjgWyqc7YDAVrm5huZJMbjMg;->onUserRestr
PLcom/android/server/autofill/AutofillManagerService$1;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
PLcom/android/server/autofill/AutofillManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/autofill/AutofillManagerService$2;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
+PLcom/android/server/autofill/AutofillManagerService$2;->getActiveAutofillServicePackageName()Ljava/lang/String;
+PLcom/android/server/autofill/AutofillManagerService$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/autofill/AutofillManagerService$2;->onPackageUpdateFinished(Ljava/lang/String;I)V
PLcom/android/server/autofill/AutofillManagerService$2;->onSomePackagesChanged()V
PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->addClient(Landroid/view/autofill/IAutoFillManagerClient;I)I
+PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->finishSession(II)V
+PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->getFillEventHistory()Landroid/service/autofill/FillEventHistory;
+PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->setHasCallback(IIZ)V
PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILjava/lang/String;)I
-PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V
PLcom/android/server/autofill/AutofillManagerService$LocalService;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
PLcom/android/server/autofill/AutofillManagerService$LocalService;-><init>(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/server/autofill/AutofillManagerService$LocalService;)V
PLcom/android/server/autofill/AutofillManagerService$LocalService;->onBackKeyPressed()V
@@ -6706,12 +9231,10 @@ PLcom/android/server/autofill/AutofillManagerService;->-get2(Lcom/android/server
PLcom/android/server/autofill/AutofillManagerService;->-get5(Lcom/android/server/autofill/AutofillManagerService;)Lcom/android/server/autofill/ui/AutoFillUI;
PLcom/android/server/autofill/AutofillManagerService;->-wrap2(Lcom/android/server/autofill/AutofillManagerService;I)V
PLcom/android/server/autofill/AutofillManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/autofill/AutofillManagerService;->getServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl;
PLcom/android/server/autofill/AutofillManagerService;->lambda$-com_android_server_autofill_AutofillManagerService_5890(ILandroid/os/Bundle;Landroid/os/Bundle;)V
PLcom/android/server/autofill/AutofillManagerService;->onBootPhase(I)V
PLcom/android/server/autofill/AutofillManagerService;->onStart()V
PLcom/android/server/autofill/AutofillManagerService;->onUnlockUser(I)V
-PLcom/android/server/autofill/AutofillManagerService;->peekServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl;
PLcom/android/server/autofill/AutofillManagerService;->setDebugLocked(Z)V
PLcom/android/server/autofill/AutofillManagerService;->startTrackingPackageChanges()V
PLcom/android/server/autofill/AutofillManagerService;->updateCachedServiceLocked(I)V
@@ -6719,15 +9242,20 @@ PLcom/android/server/autofill/AutofillManagerService;->updateCachedServiceLocked
PLcom/android/server/autofill/AutofillManagerServiceImpl;-><init>(Landroid/content/Context;Ljava/lang/Object;Landroid/util/LocalLog;ILcom/android/server/autofill/ui/AutoFillUI;Z)V
PLcom/android/server/autofill/AutofillManagerServiceImpl;->addClientLocked(Landroid/view/autofill/IAutoFillManagerClient;)Z
PLcom/android/server/autofill/AutofillManagerServiceImpl;->createSessionByTokenLocked(Landroid/os/IBinder;ILandroid/os/IBinder;ZLjava/lang/String;)Lcom/android/server/autofill/Session;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->destroySessionsLocked()V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->finishSessionLocked(II)V
PLcom/android/server/autofill/AutofillManagerServiceImpl;->getComponentNameFromSettings()Ljava/lang/String;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->getFillEventHistory(I)Landroid/service/autofill/FillEventHistory;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->getServiceComponentName()Landroid/content/ComponentName;
PLcom/android/server/autofill/AutofillManagerServiceImpl;->isEnabled()Z
PLcom/android/server/autofill/AutofillManagerServiceImpl;->isSetupCompletedLocked()Z
PLcom/android/server/autofill/AutofillManagerServiceImpl;->pruneAbandonedSessionsLocked()V
PLcom/android/server/autofill/AutofillManagerServiceImpl;->removeSessionLocked(I)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->resetLastResponse()V
PLcom/android/server/autofill/AutofillManagerServiceImpl;->sendStateToClients(Z)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->setHasCallback(IIZ)V
PLcom/android/server/autofill/AutofillManagerServiceImpl;->startSessionLocked(Landroid/os/IBinder;ILandroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;ZILjava/lang/String;)I
PLcom/android/server/autofill/AutofillManagerServiceImpl;->updateLocked(Z)V
-PLcom/android/server/autofill/AutofillManagerServiceImpl;->updateSessionLocked(IILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)Z
PLcom/android/server/autofill/Helper;->append(Ljava/lang/StringBuilder;Landroid/os/Bundle;)V
PLcom/android/server/autofill/Helper;->bundleToString(Landroid/os/Bundle;)Ljava/lang/String;
PLcom/android/server/autofill/RemoteFillService$MyHandler$1;-><init>(Lcom/android/server/autofill/RemoteFillService;)V
@@ -6758,8 +9286,8 @@ PLcom/android/server/autofill/RemoteFillService;->-set1(Lcom/android/server/auto
PLcom/android/server/autofill/RemoteFillService;->-set2(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;)Lcom/android/server/autofill/RemoteFillService$PendingRequest;
PLcom/android/server/autofill/RemoteFillService;->-set3(Lcom/android/server/autofill/RemoteFillService;Z)Z
PLcom/android/server/autofill/RemoteFillService;->-wrap1(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;IILandroid/service/autofill/FillResponse;)V
-PLcom/android/server/autofill/RemoteFillService;->-wrap5(Lcom/android/server/autofill/RemoteFillService;)V
-PLcom/android/server/autofill/RemoteFillService;->-wrap6(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;)V
+PLcom/android/server/autofill/RemoteFillService;->-wrap6(Lcom/android/server/autofill/RemoteFillService;)V
+PLcom/android/server/autofill/RemoteFillService;->-wrap7(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;)V
PLcom/android/server/autofill/RemoteFillService;-><init>(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;)V
PLcom/android/server/autofill/RemoteFillService;->cancelCurrentRequest()I
PLcom/android/server/autofill/RemoteFillService;->cancelScheduledUnbind()V
@@ -6786,11 +9314,12 @@ PLcom/android/server/autofill/Session;->-wrap1(Lcom/android/server/autofill/Sess
PLcom/android/server/autofill/Session;-><init>(Lcom/android/server/autofill/AutofillManagerServiceImpl;Lcom/android/server/autofill/ui/AutoFillUI;Landroid/content/Context;Lcom/android/internal/os/HandlerCaller;ILjava/lang/Object;IILandroid/os/IBinder;Landroid/os/IBinder;ZLandroid/content/ComponentName;Ljava/lang/String;)V
PLcom/android/server/autofill/Session;->cancelCurrentRequestLocked()V
PLcom/android/server/autofill/Session;->destroyLocked()Lcom/android/server/autofill/RemoteFillService;
-PLcom/android/server/autofill/Session;->fillContextWithAllowedValues(Landroid/service/autofill/FillContext;I)V
-PLcom/android/server/autofill/Session;->getIdsOfAllViewStates()[Landroid/view/autofill/AutofillId;
+PLcom/android/server/autofill/Session;->fillContextWithAllowedValuesLocked(Landroid/service/autofill/FillContext;I)V
+PLcom/android/server/autofill/Session;->getClient()Landroid/view/autofill/IAutoFillManagerClient;
+PLcom/android/server/autofill/Session;->getIdsOfAllViewStatesLocked()[Landroid/view/autofill/AutofillId;
PLcom/android/server/autofill/Session;->getUiForShowing()Lcom/android/server/autofill/ui/AutoFillUI;
-PLcom/android/server/autofill/Session;->hideAllUiIfOwnedByMe()V
PLcom/android/server/autofill/Session;->isIgnoredLocked(Landroid/view/autofill/AutofillId;)Z
+PLcom/android/server/autofill/Session;->isSaveUiPending()Z
PLcom/android/server/autofill/Session;->notifyUnavailableToClient()V
PLcom/android/server/autofill/Session;->onFillRequestSuccess(ILandroid/service/autofill/FillResponse;ILjava/lang/String;)V
PLcom/android/server/autofill/Session;->removeSelf()V
@@ -6804,45 +9333,50 @@ PLcom/android/server/autofill/ViewState;->maybeCallOnFillReady(I)V
PLcom/android/server/autofill/ViewState;->setCurrentValue(Landroid/view/autofill/AutofillValue;)V
PLcom/android/server/autofill/ViewState;->setState(I)V
PLcom/android/server/autofill/ViewState;->update(Landroid/view/autofill/AutofillValue;Landroid/graphics/Rect;I)V
+PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;->$m$0()V
+PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;->run()V
PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;->$m$0()V
PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;-><init>(BLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;->run()V
PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$0()V
PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$1()V
+PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$2()V
PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$3()V
PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->run()V
PLcom/android/server/autofill/ui/AutoFillUI;-><init>(Landroid/content/Context;)V
PLcom/android/server/autofill/ui/AutoFillUI;->clearCallback(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->destroyAll(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->destroyAllUiThread(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->destroySaveUiUiThread(ILandroid/view/autofill/IAutoFillManagerClient;)V
PLcom/android/server/autofill/ui/AutoFillUI;->filterFillUi(Ljava/lang/String;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
PLcom/android/server/autofill/ui/AutoFillUI;->hideAll(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
PLcom/android/server/autofill/ui/AutoFillUI;->hideAllUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->hideFillUi(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
PLcom/android/server/autofill/ui/AutoFillUI;->hideFillUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
PLcom/android/server/autofill/ui/AutoFillUI;->hideSaveUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
-PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_11492(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
-PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3066(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
-PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3386(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
-PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_4666(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Ljava/lang/String;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_12395(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_12645(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3226(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3546(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_4552(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_4826(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Ljava/lang/String;)V
PLcom/android/server/autofill/ui/AutoFillUI;->setCallback(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
PLcom/android/server/autofill/ui/OverlayControl;-><init>(Landroid/content/Context;)V
PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;->$m$0()V
PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;-><init>(BLjava/lang/Object;)V
PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;->run()V
PLcom/android/server/backup/BackupManagerService$1;-><init>(Lcom/android/server/backup/BackupManagerService;)V
-PLcom/android/server/backup/BackupManagerService$1;->run()V
PLcom/android/server/backup/BackupManagerService$2;-><init>(Lcom/android/server/backup/BackupManagerService;)V
PLcom/android/server/backup/BackupManagerService$2;->onTransportBound(Lcom/android/internal/backup/IBackupTransport;)Z
PLcom/android/server/backup/BackupManagerService$3;-><init>(Lcom/android/server/backup/BackupManagerService;)V
-PLcom/android/server/backup/BackupManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/backup/BackupManagerService$4;-><init>(Lcom/android/server/backup/BackupManagerService;J)V
PLcom/android/server/backup/BackupManagerService$4;->run()V
-PLcom/android/server/backup/BackupManagerService$7;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
-PLcom/android/server/backup/BackupManagerService$7;->run()V
PLcom/android/server/backup/BackupManagerService$8;-><init>(Lcom/android/server/backup/BackupManagerService;Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V
PLcom/android/server/backup/BackupManagerService$8;->onSuccess(Ljava/lang/String;)V
PLcom/android/server/backup/BackupManagerService$BackupHandler;-><init>(Lcom/android/server/backup/BackupManagerService;Landroid/os/Looper;)V
PLcom/android/server/backup/BackupManagerService$BackupHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/backup/BackupManagerService$BackupRequest;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V
PLcom/android/server/backup/BackupManagerService$FullBackupEntry;-><init>(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;J)V
PLcom/android/server/backup/BackupManagerService$FullBackupEntry;->compareTo(Lcom/android/server/backup/BackupManagerService$FullBackupEntry;)I
PLcom/android/server/backup/BackupManagerService$FullBackupEntry;->compareTo(Ljava/lang/Object;)I
@@ -6858,56 +9392,40 @@ PLcom/android/server/backup/BackupManagerService;->-get3(Lcom/android/server/bac
PLcom/android/server/backup/BackupManagerService;->-get6(Lcom/android/server/backup/BackupManagerService;)Lcom/android/server/backup/TransportManager;
PLcom/android/server/backup/BackupManagerService;->-wrap11(I)Z
PLcom/android/server/backup/BackupManagerService;->-wrap17(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V
-PLcom/android/server/backup/BackupManagerService;->-wrap18(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
PLcom/android/server/backup/BackupManagerService;->-wrap23(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->-wrap25(Lcom/android/server/backup/BackupManagerService;)V
PLcom/android/server/backup/BackupManagerService;->-wrap5(Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/backup/BackupManagerService;->-wrap9(I)Z
PLcom/android/server/backup/BackupManagerService;-><init>(Landroid/content/Context;Lcom/android/server/backup/Trampoline;)V
PLcom/android/server/backup/BackupManagerService;->addPackageParticipantsLocked([Ljava/lang/String;)V
-PLcom/android/server/backup/BackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V
-PLcom/android/server/backup/BackupManagerService;->allAgentPackages()Ljava/util/List;
PLcom/android/server/backup/BackupManagerService;->appGetsFullBackup(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/backup/BackupManagerService;->appIsDisabled(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z
-PLcom/android/server/backup/BackupManagerService;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z
PLcom/android/server/backup/BackupManagerService;->backupSettingMigrated(I)Z
-PLcom/android/server/backup/BackupManagerService;->dataChanged(Ljava/lang/String;)V
-PLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;)V
-PLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V
-PLcom/android/server/backup/BackupManagerService;->dequeueFullBackupLocked(Ljava/lang/String;)V
PLcom/android/server/backup/BackupManagerService;->enqueueFullBackup(Ljava/lang/String;J)V
-PLcom/android/server/backup/BackupManagerService;->getAvailableRestoreToken(Ljava/lang/String;)J
PLcom/android/server/backup/BackupManagerService;->getCurrentTransport()Ljava/lang/String;
PLcom/android/server/backup/BackupManagerService;->initPackageTracking()V
PLcom/android/server/backup/BackupManagerService;->isBackupEnabled()Z
-PLcom/android/server/backup/BackupManagerService;->lambda$-com_android_server_backup_BackupManagerService_56323()V
+PLcom/android/server/backup/BackupManagerService;->lambda$-com_android_server_backup_BackupManagerService_56585()V
PLcom/android/server/backup/BackupManagerService;->parseLeftoverJournals()V
PLcom/android/server/backup/BackupManagerService;->readBackupEnableState(I)Z
-PLcom/android/server/backup/BackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList;
-PLcom/android/server/backup/BackupManagerService;->restoreAtInstall(Ljava/lang/String;I)V
+PLcom/android/server/backup/BackupManagerService;->removePackageFromSetLocked(Ljava/util/HashSet;Ljava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->removePackageParticipantsLocked([Ljava/lang/String;I)V
PLcom/android/server/backup/BackupManagerService;->scheduleNextFullBackupJob(J)V
PLcom/android/server/backup/BackupManagerService;->selectBackupTransportAsync(Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V
PLcom/android/server/backup/BackupManagerService;->setBackupEnabled(Z)V
PLcom/android/server/backup/BackupManagerService;->updateStateForTransport(Ljava/lang/String;)V
PLcom/android/server/backup/BackupManagerService;->writeBackupEnableState(ZI)V
PLcom/android/server/backup/BackupManagerService;->writeFullBackupScheduleAsync()V
-PLcom/android/server/backup/BackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V
PLcom/android/server/backup/FullBackupJob;->schedule(Landroid/content/Context;J)V
PLcom/android/server/backup/KeyValueBackupJob;->cancel(Landroid/content/Context;)V
-PLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;)V
-PLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;J)V
-PLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;)Ljava/util/List;
PLcom/android/server/backup/Trampoline;-><init>(Landroid/content/Context;)V
PLcom/android/server/backup/Trampoline;->createBackupManagerService()Lcom/android/server/backup/BackupManagerServiceInterface;
PLcom/android/server/backup/Trampoline;->createService()Lcom/android/server/backup/BackupManagerServiceInterface;
-PLcom/android/server/backup/Trampoline;->dataChanged(Ljava/lang/String;)V
PLcom/android/server/backup/Trampoline;->getCurrentTransport()Ljava/lang/String;
PLcom/android/server/backup/Trampoline;->getSuppressFile()Ljava/io/File;
PLcom/android/server/backup/Trampoline;->initialize(I)V
PLcom/android/server/backup/Trampoline;->isBackupDisabled()Z
PLcom/android/server/backup/Trampoline;->isBackupEnabled()Z
-PLcom/android/server/backup/Trampoline;->isBackupServiceActive(I)Z
PLcom/android/server/backup/Trampoline;->isRefactoredServiceEnabled()Z
-PLcom/android/server/backup/Trampoline;->restoreAtInstall(Ljava/lang/String;I)V
PLcom/android/server/backup/Trampoline;->selectBackupTransportAsync(Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V
PLcom/android/server/backup/Trampoline;->setBackupEnabled(Z)V
PLcom/android/server/backup/TransportManager$RebindOnTimeoutHandler;-><init>(Lcom/android/server/backup/TransportManager;Landroid/os/Looper;)V
@@ -6919,8 +9437,12 @@ PLcom/android/server/backup/TransportManager$TransportConnection;-><init>(Lcom/a
PLcom/android/server/backup/TransportManager$TransportConnection;->addListener(Landroid/app/backup/SelectBackupTransportCallback;)V
PLcom/android/server/backup/TransportManager$TransportConnection;->bindIfUnbound()V
PLcom/android/server/backup/TransportManager$TransportConnection;->getBinder()Lcom/android/internal/backup/IBackupTransport;
+PLcom/android/server/backup/TransportManager$TransportConnection;->getRebindTimeout()J
PLcom/android/server/backup/TransportManager$TransportConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/backup/TransportManager$TransportConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/backup/TransportManager$TransportConnection;->scheduleRebindTimeout(Landroid/content/ComponentName;)V
PLcom/android/server/backup/TransportManager;->-get0(Lcom/android/server/backup/TransportManager;)Ljava/util/Map;
+PLcom/android/server/backup/TransportManager;->-get1(Lcom/android/server/backup/TransportManager;)Landroid/content/Context;
PLcom/android/server/backup/TransportManager;->-get2(Lcom/android/server/backup/TransportManager;)Landroid/os/Handler;
PLcom/android/server/backup/TransportManager;->-get3(Lcom/android/server/backup/TransportManager;)Lcom/android/server/backup/TransportManager$TransportBoundListener;
PLcom/android/server/backup/TransportManager;->-get4(Lcom/android/server/backup/TransportManager;)Ljava/lang/Object;
@@ -6928,7 +9450,6 @@ PLcom/android/server/backup/TransportManager;-><init>(Landroid/content/Context;L
PLcom/android/server/backup/TransportManager;->bindToAllInternal(Ljava/lang/String;[Ljava/lang/String;)V
PLcom/android/server/backup/TransportManager;->bindToTransport(Landroid/content/ComponentName;Landroid/content/ServiceConnection;)Z
PLcom/android/server/backup/TransportManager;->ensureTransportReady(Landroid/content/ComponentName;Landroid/app/backup/SelectBackupTransportCallback;)V
-PLcom/android/server/backup/TransportManager;->getCurrentTransportBinder()Lcom/android/internal/backup/IBackupTransport;
PLcom/android/server/backup/TransportManager;->getCurrentTransportName()Ljava/lang/String;
PLcom/android/server/backup/TransportManager;->getTransportBinder(Ljava/lang/String;)Lcom/android/internal/backup/IBackupTransport;
PLcom/android/server/backup/TransportManager;->isTransportTrusted(Landroid/content/ComponentName;)Z
@@ -6940,10 +9461,14 @@ PLcom/android/server/backup/TransportManager;->selectTransport(Ljava/lang/String
PLcom/android/server/backup/TransportManager;->tryBindTransport(Landroid/content/ComponentName;)V
PLcom/android/server/camera/CameraServiceProxy$1;-><init>(Lcom/android/server/camera/CameraServiceProxy;)V
PLcom/android/server/camera/CameraServiceProxy$2;-><init>(Lcom/android/server/camera/CameraServiceProxy;)V
-PLcom/android/server/camera/CameraServiceProxy$2;->notifyCameraState(Ljava/lang/String;I)V
+PLcom/android/server/camera/CameraServiceProxy$2;->notifyCameraState(Ljava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;-><init>(ILjava/lang/String;)V
+PLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;->markCompleted()V
PLcom/android/server/camera/CameraServiceProxy;->-wrap0(I)Ljava/lang/String;
-PLcom/android/server/camera/CameraServiceProxy;->-wrap3(Lcom/android/server/camera/CameraServiceProxy;Ljava/lang/String;I)V
+PLcom/android/server/camera/CameraServiceProxy;->-wrap1(I)Ljava/lang/String;
+PLcom/android/server/camera/CameraServiceProxy;->-wrap4(Lcom/android/server/camera/CameraServiceProxy;Ljava/lang/String;IILjava/lang/String;)V
PLcom/android/server/camera/CameraServiceProxy;-><init>(Landroid/content/Context;)V
+PLcom/android/server/camera/CameraServiceProxy;->cameraFacingToString(I)Ljava/lang/String;
PLcom/android/server/camera/CameraServiceProxy;->cameraStateToString(I)Ljava/lang/String;
PLcom/android/server/camera/CameraServiceProxy;->getEnabledUserHandles(I)Ljava/util/Set;
PLcom/android/server/camera/CameraServiceProxy;->notifyMediaserverLocked(ILjava/util/Set;)Z
@@ -6952,10 +9477,19 @@ PLcom/android/server/camera/CameraServiceProxy;->onStart()V
PLcom/android/server/camera/CameraServiceProxy;->onStartUser(I)V
PLcom/android/server/camera/CameraServiceProxy;->switchUserLocked(I)V
PLcom/android/server/camera/CameraServiceProxy;->toArray(Ljava/util/Collection;)[I
-PLcom/android/server/camera/CameraServiceProxy;->updateActivityCount(Ljava/lang/String;I)V
+PLcom/android/server/camera/CameraServiceProxy;->updateActivityCount(Ljava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/camera/CameraStatsJobService;->schedule(Landroid/content/Context;)V
PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;)V
PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;Lcom/android/server/clipboard/ClipboardService$ClipboardImpl;)V
+PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V
+PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/clipboard/ClipboardService$ListenerInfo;-><init>(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;)V
+PLcom/android/server/clipboard/ClipboardService$PerUserClipboard;-><init>(Lcom/android/server/clipboard/ClipboardService;I)V
+PLcom/android/server/clipboard/ClipboardService;->-wrap0(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;I)Z
+PLcom/android/server/clipboard/ClipboardService;->-wrap1(Lcom/android/server/clipboard/ClipboardService;)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;
PLcom/android/server/clipboard/ClipboardService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/clipboard/ClipboardService;->getClipboard()Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;
+PLcom/android/server/clipboard/ClipboardService;->getClipboard(I)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;
PLcom/android/server/clipboard/ClipboardService;->onStart()V
PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;->$m$1(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;-><init>(B)V
@@ -6963,18 +9497,9 @@ PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;->apply(Ljav
PLcom/android/server/companion/CompanionDeviceManagerService$1;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
PLcom/android/server/companion/CompanionDeviceManagerService$1;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
-PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCallerIsSystemOr(Ljava/lang/String;I)V
-PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkUsesFeature(Ljava/lang/String;I)V
-PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/companion/CompanionDeviceManagerService;->-wrap3()Z
-PLcom/android/server/companion/CompanionDeviceManagerService;->-wrap4()I
-PLcom/android/server/companion/CompanionDeviceManagerService;->-wrap6(Lcom/android/server/companion/CompanionDeviceManagerService;ILjava/lang/String;)Ljava/util/ArrayList;
PLcom/android/server/companion/CompanionDeviceManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/companion/CompanionDeviceManagerService;->getStorageFileForUser(I)Landroid/util/AtomicFile;
-PLcom/android/server/companion/CompanionDeviceManagerService;->isCallerSystem()Z
-PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$-com_android_server_companion_CompanionDeviceManagerService_22134(Ljava/lang/Integer;)Landroid/util/AtomicFile;
+PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$-com_android_server_companion_CompanionDeviceManagerService_22200(Ljava/lang/Integer;)Landroid/util/AtomicFile;
PLcom/android/server/companion/CompanionDeviceManagerService;->onStart()V
-PLcom/android/server/companion/CompanionDeviceManagerService;->readAllAssociations(ILjava/lang/String;)Ljava/util/ArrayList;
PLcom/android/server/companion/CompanionDeviceManagerService;->registerPackageMonitor()V
PLcom/android/server/connectivity/-$Lambda$MsbVMSDQhSjxBVLOF10aov6ySH4;->$m$0(Ljava/lang/Object;)I
PLcom/android/server/connectivity/-$Lambda$MsbVMSDQhSjxBVLOF10aov6ySH4;-><init>()V
@@ -7002,6 +9527,7 @@ PLcom/android/server/connectivity/IpConnectivityMetrics;->makeRateLimitingBucket
PLcom/android/server/connectivity/IpConnectivityMetrics;->onBootPhase(I)V
PLcom/android/server/connectivity/IpConnectivityMetrics;->onStart()V
PLcom/android/server/connectivity/KeepaliveTracker;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/connectivity/KeepaliveTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/connectivity/KeepaliveTracker;->handleCheckKeepalivesStillValid(Lcom/android/server/connectivity/NetworkAgentInfo;)V
PLcom/android/server/connectivity/LingerMonitor;-><init>(Landroid/content/Context;Lcom/android/server/connectivity/NetworkNotificationManager;IJ)V
PLcom/android/server/connectivity/LingerMonitor;->makeTransportToNameMap()Ljava/util/HashMap;
@@ -7010,41 +9536,24 @@ PLcom/android/server/connectivity/MockableSystemProperties;->get(Ljava/lang/Stri
PLcom/android/server/connectivity/MockableSystemProperties;->getBoolean(Ljava/lang/String;Z)Z
PLcom/android/server/connectivity/MockableSystemProperties;->getInt(Ljava/lang/String;I)I
PLcom/android/server/connectivity/MockableSystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/connectivity/Nat464Xlat;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/os/Handler;Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/connectivity/Nat464Xlat;->fixupLinkProperties(Landroid/net/LinkProperties;)V
-PLcom/android/server/connectivity/Nat464Xlat;->isStarted()Z
PLcom/android/server/connectivity/Nat464Xlat;->requiresClat(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
-PLcom/android/server/connectivity/Nat464Xlat;->start()V
-PLcom/android/server/connectivity/Nat464Xlat;->stop()V
PLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/net/ConnectivityManager;)V
PLcom/android/server/connectivity/NetdEventListenerService;->getTransports(I)J
PLcom/android/server/connectivity/NetdEventListenerService;->makeConnectStats(I)Landroid/net/metrics/ConnectStats;
PLcom/android/server/connectivity/NetdEventListenerService;->makeDnsEvent(I)Landroid/net/metrics/DnsEvent;
-PLcom/android/server/connectivity/NetdEventListenerService;->maybeVerboseLog(Ljava/lang/String;[Ljava/lang/Object;)V
-PLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V
-PLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V
PLcom/android/server/connectivity/NetworkAgentInfo;->-getandroid-net-NetworkRequest$TypeSwitchesValues()[I
PLcom/android/server/connectivity/NetworkAgentInfo;-><init>(Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;Landroid/net/Network;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/content/Context;Landroid/os/Handler;Landroid/net/NetworkMisc;Landroid/net/NetworkRequest;Lcom/android/server/ConnectivityService;)V
PLcom/android/server/connectivity/NetworkAgentInfo;->addRequest(Landroid/net/NetworkRequest;)Z
-PLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore()I
-PLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore(Z)I
+PLcom/android/server/connectivity/NetworkAgentInfo;->dumpLingerTimers(Ljava/io/PrintWriter;)V
PLcom/android/server/connectivity/NetworkAgentInfo;->ignoreWifiUnvalidationPenalty()Z
-PLcom/android/server/connectivity/NetworkAgentInfo;->isBackgroundNetwork()Z
-PLcom/android/server/connectivity/NetworkAgentInfo;->isLingering()Z
-PLcom/android/server/connectivity/NetworkAgentInfo;->isSatisfyingRequest(I)Z
-PLcom/android/server/connectivity/NetworkAgentInfo;->isVPN()Z
+PLcom/android/server/connectivity/NetworkAgentInfo;->maybeStopClat()V
PLcom/android/server/connectivity/NetworkAgentInfo;->name()Ljava/lang/String;
-PLcom/android/server/connectivity/NetworkAgentInfo;->numForegroundNetworkRequests()I
-PLcom/android/server/connectivity/NetworkAgentInfo;->numNetworkRequests()I
-PLcom/android/server/connectivity/NetworkAgentInfo;->numRequestNetworkRequests()I
+PLcom/android/server/connectivity/NetworkAgentInfo;->numBackgroundNetworkRequests()I
PLcom/android/server/connectivity/NetworkAgentInfo;->removeRequest(I)V
-PLcom/android/server/connectivity/NetworkAgentInfo;->requestAt(I)Landroid/net/NetworkRequest;
-PLcom/android/server/connectivity/NetworkAgentInfo;->satisfies(Landroid/net/NetworkRequest;)Z
-PLcom/android/server/connectivity/NetworkAgentInfo;->setCurrentScore(I)V
PLcom/android/server/connectivity/NetworkAgentInfo;->toString()Ljava/lang/String;
PLcom/android/server/connectivity/NetworkAgentInfo;->unlingerRequest(Landroid/net/NetworkRequest;)Z
-PLcom/android/server/connectivity/NetworkAgentInfo;->updateLingerTimer()V
+PLcom/android/server/connectivity/NetworkAgentInfo;->updateClat(Landroid/os/INetworkManagementService;)V
PLcom/android/server/connectivity/NetworkAgentInfo;->updateRequestCounts(ZLandroid/net/NetworkRequest;)V
PLcom/android/server/connectivity/NetworkMonitor$1ProbeThread;-><init>(Lcom/android/server/connectivity/NetworkMonitor;ZLandroid/net/ProxyInfo;Ljava/net/URL;Ljava/net/URL;Ljava/util/concurrent/CountDownLatch;)V
PLcom/android/server/connectivity/NetworkMonitor$1ProbeThread;->result()Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult;
@@ -7067,16 +9576,19 @@ PLcom/android/server/connectivity/NetworkMonitor$EvaluationResult;-><init>(Ljava
PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;-><init>(Lcom/android/server/connectivity/NetworkMonitor;)V
PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;-><init>(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;)V
PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;->exit()V
+PLcom/android/server/connectivity/NetworkMonitor$OneAddressPerFamilyNetwork;-><init>(Landroid/net/Network;)V
+PLcom/android/server/connectivity/NetworkMonitor$OneAddressPerFamilyNetwork;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;
PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;-><init>(Lcom/android/server/connectivity/NetworkMonitor;)V
PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;-><init>(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$ValidatedState;)V
PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;->enter()V
PLcom/android/server/connectivity/NetworkMonitor$ValidationStage;-><init>(Ljava/lang/String;IZ)V
-PLcom/android/server/connectivity/NetworkMonitor;->-get11(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/server/connectivity/NetworkAgentInfo;
-PLcom/android/server/connectivity/NetworkMonitor;->-get12(Lcom/android/server/connectivity/NetworkMonitor;)I
+PLcom/android/server/connectivity/NetworkMonitor;->-get10(Lcom/android/server/connectivity/NetworkMonitor;)I
+PLcom/android/server/connectivity/NetworkMonitor;->-get12(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/server/connectivity/NetworkAgentInfo;
PLcom/android/server/connectivity/NetworkMonitor;->-get13(Lcom/android/server/connectivity/NetworkMonitor;)I
-PLcom/android/server/connectivity/NetworkMonitor;->-get14(Lcom/android/server/connectivity/NetworkMonitor;)Z
-PLcom/android/server/connectivity/NetworkMonitor;->-get15(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/internal/util/State;
-PLcom/android/server/connectivity/NetworkMonitor;->-get16(Lcom/android/server/connectivity/NetworkMonitor;)I
+PLcom/android/server/connectivity/NetworkMonitor;->-get14(Lcom/android/server/connectivity/NetworkMonitor;)I
+PLcom/android/server/connectivity/NetworkMonitor;->-get15(Lcom/android/server/connectivity/NetworkMonitor;)Z
+PLcom/android/server/connectivity/NetworkMonitor;->-get16(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/internal/util/State;
+PLcom/android/server/connectivity/NetworkMonitor;->-get17(Lcom/android/server/connectivity/NetworkMonitor;)I
PLcom/android/server/connectivity/NetworkMonitor;->-get2(Lcom/android/server/connectivity/NetworkMonitor;)Landroid/os/Handler;
PLcom/android/server/connectivity/NetworkMonitor;->-get4(Lcom/android/server/connectivity/NetworkMonitor;)Landroid/net/NetworkRequest;
PLcom/android/server/connectivity/NetworkMonitor;->-get6(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/internal/util/State;
@@ -7117,17 +9629,14 @@ PLcom/android/server/connectivity/PacManager$1;-><init>(Lcom/android/server/conn
PLcom/android/server/connectivity/PacManager$PacRefreshIntentReceiver;-><init>(Lcom/android/server/connectivity/PacManager;)V
PLcom/android/server/connectivity/PacManager;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
PLcom/android/server/connectivity/PermissionMonitor$1;-><init>(Lcom/android/server/connectivity/PermissionMonitor;)V
-PLcom/android/server/connectivity/PermissionMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/connectivity/PermissionMonitor;->-wrap0(Lcom/android/server/connectivity/PermissionMonitor;Ljava/lang/String;I)V
+PLcom/android/server/connectivity/PermissionMonitor;->-wrap1(Lcom/android/server/connectivity/PermissionMonitor;I)V
PLcom/android/server/connectivity/PermissionMonitor;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;)V
-PLcom/android/server/connectivity/PermissionMonitor;->hasNetworkPermission(Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/connectivity/PermissionMonitor;->hasRestrictedNetworkPermission(Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/connectivity/PermissionMonitor;->highestPermissionForUid(Ljava/lang/Boolean;Ljava/lang/String;)Ljava/lang/Boolean;
PLcom/android/server/connectivity/PermissionMonitor;->log(Ljava/lang/String;)V
PLcom/android/server/connectivity/PermissionMonitor;->onAppAdded(Ljava/lang/String;I)V
-PLcom/android/server/connectivity/PermissionMonitor;->startMonitoring()V
-PLcom/android/server/connectivity/PermissionMonitor;->toIntArray(Ljava/util/List;)[I
-PLcom/android/server/connectivity/PermissionMonitor;->update(Ljava/util/Set;Ljava/util/Map;Z)V
+PLcom/android/server/connectivity/PermissionMonitor;->onAppRemoved(I)V
PLcom/android/server/connectivity/Tethering$3;-><init>(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;)V
PLcom/android/server/connectivity/Tethering$3;->updateInterfaceState(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V
PLcom/android/server/connectivity/Tethering$3;->updateLinkProperties(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V
@@ -7139,18 +9648,23 @@ PLcom/android/server/connectivity/Tethering$StateReceiver;->onReceive(Landroid/c
PLcom/android/server/connectivity/Tethering$TetherMasterSM$ErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState;->processMessage(Landroid/os/Message;)Z
+PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
+PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->excludeDownstreamInterface(Ljava/lang/String;)V
+PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->sendOffloadExemptPrefixes()V
+PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->sendOffloadExemptPrefixes(Ljava/util/Set;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetDnsForwardersErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingDisabledErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingEnabledErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM$StartTetheringErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM$StopTetheringErrorState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
-PLcom/android/server/connectivity/Tethering$TetherMasterSM$TetherMasterUtilState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM$TetherModeAliveState;-><init>(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V
+PLcom/android/server/connectivity/Tethering$TetherMasterSM;->-get1(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)Ljava/util/ArrayList;
PLcom/android/server/connectivity/Tethering$TetherMasterSM;->-wrap1(Lcom/android/server/connectivity/Tethering$TetherMasterSM;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM;-><init>(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Landroid/os/Looper;)V
PLcom/android/server/connectivity/Tethering$TetherMasterSM;->handleInterfaceServingStateInactive(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
PLcom/android/server/connectivity/Tethering$TetherState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
PLcom/android/server/connectivity/Tethering;->-get10(Lcom/android/server/connectivity/Tethering;)Lcom/android/internal/util/StateMachine;
+PLcom/android/server/connectivity/Tethering;->-get11(Lcom/android/server/connectivity/Tethering;)Lcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;
PLcom/android/server/connectivity/Tethering;->-get3(Lcom/android/server/connectivity/Tethering;)Ljava/util/HashSet;
PLcom/android/server/connectivity/Tethering;->-get4(Lcom/android/server/connectivity/Tethering;)Landroid/net/util/SharedLog;
PLcom/android/server/connectivity/Tethering;->-get6(Lcom/android/server/connectivity/Tethering;)Lcom/android/server/connectivity/tethering/OffloadController;
@@ -7158,12 +9672,14 @@ PLcom/android/server/connectivity/Tethering;->-get7(Lcom/android/server/connecti
PLcom/android/server/connectivity/Tethering;->-get8(Lcom/android/server/connectivity/Tethering;)Z
PLcom/android/server/connectivity/Tethering;->-set1(Lcom/android/server/connectivity/Tethering;Z)Z
PLcom/android/server/connectivity/Tethering;->-set2(Lcom/android/server/connectivity/Tethering;Z)Z
-PLcom/android/server/connectivity/Tethering;->-wrap11(Lcom/android/server/connectivity/Tethering;)V
-PLcom/android/server/connectivity/Tethering;->-wrap5(Lcom/android/server/connectivity/Tethering;Lcom/android/internal/util/State;I)V
-PLcom/android/server/connectivity/Tethering;->-wrap6(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V
-PLcom/android/server/connectivity/Tethering;->-wrap7(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V
+PLcom/android/server/connectivity/Tethering;->-wrap13(Lcom/android/server/connectivity/Tethering;)V
+PLcom/android/server/connectivity/Tethering;->-wrap6(Lcom/android/server/connectivity/Tethering;Lcom/android/internal/util/State;I)V
+PLcom/android/server/connectivity/Tethering;->-wrap8(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V
+PLcom/android/server/connectivity/Tethering;->-wrap9(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V
PLcom/android/server/connectivity/Tethering;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/os/Looper;Lcom/android/server/connectivity/MockableSystemProperties;Lcom/android/server/connectivity/tethering/TetheringDependencies;)V
+PLcom/android/server/connectivity/Tethering;->argsContain([Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/connectivity/Tethering;->clearTetheredNotification()V
+PLcom/android/server/connectivity/Tethering;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/connectivity/Tethering;->getConnectivityManager()Landroid/net/ConnectivityManager;
PLcom/android/server/connectivity/Tethering;->hasTetherableConfiguration()Z
PLcom/android/server/connectivity/Tethering;->ifaceNameToType(Ljava/lang/String;)I
@@ -7171,14 +9687,16 @@ PLcom/android/server/connectivity/Tethering;->interfaceAdded(Ljava/lang/String;)
PLcom/android/server/connectivity/Tethering;->interfaceLinkStateChanged(Ljava/lang/String;Z)V
PLcom/android/server/connectivity/Tethering;->interfaceRemoved(Ljava/lang/String;)V
PLcom/android/server/connectivity/Tethering;->interfaceStatusChanged(Ljava/lang/String;Z)V
+PLcom/android/server/connectivity/Tethering;->logMessage(Lcom/android/internal/util/State;I)V
PLcom/android/server/connectivity/Tethering;->makeControlCallback(Ljava/lang/String;)Lcom/android/server/connectivity/tethering/IControlsTethering;
-PLcom/android/server/connectivity/Tethering;->maybeLogMessage(Lcom/android/internal/util/State;I)V
PLcom/android/server/connectivity/Tethering;->maybeTrackNewInterfaceLocked(Ljava/lang/String;)V
+PLcom/android/server/connectivity/Tethering;->maybeTrackNewInterfaceLocked(Ljava/lang/String;I)V
PLcom/android/server/connectivity/Tethering;->notifyInterfaceStateChange(Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V
PLcom/android/server/connectivity/Tethering;->notifyLinkPropertiesChanged(Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V
PLcom/android/server/connectivity/Tethering;->sendTetherStateChangedBroadcast()V
PLcom/android/server/connectivity/Tethering;->stopTrackingInterfaceLocked(Ljava/lang/String;)V
PLcom/android/server/connectivity/Tethering;->updateConfiguration()V
+PLcom/android/server/connectivity/Tethering;->upstreamWanted()Z
PLcom/android/server/connectivity/Vpn$1;-><init>(Lcom/android/server/connectivity/Vpn;)V
PLcom/android/server/connectivity/Vpn$2;-><init>(Lcom/android/server/connectivity/Vpn;)V
PLcom/android/server/connectivity/Vpn$SystemServices;-><init>(Landroid/content/Context;)V
@@ -7193,10 +9711,8 @@ PLcom/android/server/connectivity/Vpn;->getAppUid(Ljava/lang/String;I)I
PLcom/android/server/connectivity/Vpn;->getUnderlyingNetworks()[Landroid/net/Network;
PLcom/android/server/connectivity/Vpn;->getVpnConfig()Lcom/android/internal/net/VpnConfig;
PLcom/android/server/connectivity/Vpn;->getVpnInfo()Lcom/android/internal/net/VpnInfo;
-PLcom/android/server/connectivity/Vpn;->isBlockingUid(I)Z
PLcom/android/server/connectivity/Vpn;->isCurrentPreparedPackage(Ljava/lang/String;)Z
PLcom/android/server/connectivity/Vpn;->isNullOrLegacyVpn(Ljava/lang/String;)Z
-PLcom/android/server/connectivity/Vpn;->isRunningLocked()Z
PLcom/android/server/connectivity/Vpn;->loadAlwaysOnPackage()V
PLcom/android/server/connectivity/Vpn;->maybeRegisterPackageChangeReceiverLocked(Ljava/lang/String;)V
PLcom/android/server/connectivity/Vpn;->setAllowOnlyVpnForUids(ZLjava/util/Collection;)Z
@@ -7206,16 +9722,33 @@ PLcom/android/server/connectivity/Vpn;->setVpnForcedWithExemptionsLocked(ZLjava/
PLcom/android/server/connectivity/Vpn;->startAlwaysOnVpn()Z
PLcom/android/server/connectivity/Vpn;->unregisterPackageChangeReceiverLocked()V
PLcom/android/server/connectivity/Vpn;->updateAlwaysOnNotification(Landroid/net/NetworkInfo$DetailedState;)V
+PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;->$m$0()V
+PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;->run()V
PLcom/android/server/connectivity/tethering/IControlsTethering;-><init>()V
+PLcom/android/server/connectivity/tethering/IControlsTethering;->getStateString(I)Ljava/lang/String;
PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;-><init>(Ljava/util/ArrayList;Landroid/net/util/SharedLog;)V
PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->findDownstream(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)Lcom/android/server/connectivity/tethering/IPv6TetheringCoordinator$Downstream;
PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->generateUniqueLocalPrefix()[B
PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->removeActiveDownstream(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->stopIPv6TetheringOn(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
-PLcom/android/server/connectivity/tethering/OffloadController;-><init>(Landroid/os/Handler;Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;Landroid/content/ContentResolver;Landroid/net/util/SharedLog;)V
+PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;-><init>(Lcom/android/server/connectivity/tethering/OffloadController;)V
+PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;-><init>(Lcom/android/server/connectivity/tethering/OffloadController;Lcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;)V
+PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->lambda$-com_android_server_connectivity_tethering_OffloadController$OffloadTetheringStatsProvider_9732()V
+PLcom/android/server/connectivity/tethering/OffloadController;->-get0(Lcom/android/server/connectivity/tethering/OffloadController;)Ljava/util/concurrent/ConcurrentHashMap;
+PLcom/android/server/connectivity/tethering/OffloadController;->-get1(Lcom/android/server/connectivity/tethering/OffloadController;)Landroid/os/Handler;
+PLcom/android/server/connectivity/tethering/OffloadController;->-wrap3(Lcom/android/server/connectivity/tethering/OffloadController;)V
+PLcom/android/server/connectivity/tethering/OffloadController;-><init>(Landroid/os/Handler;Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;Landroid/content/ContentResolver;Landroid/os/INetworkManagementService;Landroid/net/util/SharedLog;)V
+PLcom/android/server/connectivity/tethering/OffloadController;->currentUpstreamInterface()Ljava/lang/String;
+PLcom/android/server/connectivity/tethering/OffloadController;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/connectivity/tethering/OffloadController;->isOffloadDisabled()Z
+PLcom/android/server/connectivity/tethering/OffloadController;->maybeUpdateStats(Ljava/lang/String;)V
PLcom/android/server/connectivity/tethering/OffloadController;->removeDownstreamInterface(Ljava/lang/String;)V
+PLcom/android/server/connectivity/tethering/OffloadController;->setLocalPrefixes(Ljava/util/Set;)V
PLcom/android/server/connectivity/tethering/OffloadController;->started()Z
+PLcom/android/server/connectivity/tethering/OffloadController;->updateStatsForCurrentUpstream()V
PLcom/android/server/connectivity/tethering/OffloadHardwareInterface;-><init>(Landroid/os/Handler;Landroid/net/util/SharedLog;)V
+PLcom/android/server/connectivity/tethering/OffloadHardwareInterface;->getDefaultTetherOffloadDisabled()I
PLcom/android/server/connectivity/tethering/SimChangeListener;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)V
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$BaseServingState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$InitialState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
@@ -7225,18 +9758,23 @@ PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$LocalHot
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$TetheredState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$UnavailableState;-><init>(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap2(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Lcom/android/internal/util/State;I)V
-PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap3(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;I)V
-PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap5(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V
+PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap4(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;I)V
+PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap8(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;-><init>(Ljava/lang/String;Landroid/os/Looper;ILandroid/net/util/SharedLog;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Lcom/android/server/connectivity/tethering/IControlsTethering;)V
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->interfaceName()Ljava/lang/String;
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->interfaceType()I
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->lastError()I
-PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->maybeLogMessage(Lcom/android/internal/util/State;I)V
+PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->logMessage(Lcom/android/internal/util/State;I)V
+PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->resetLinkProperties()V
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->sendInterfaceState(I)V
+PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->sendLinkProperties()V
PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->updateUpstreamIPv6LinkProperties(Landroid/net/LinkProperties;)V
PLcom/android/server/connectivity/tethering/TetheringConfiguration;-><init>(Landroid/content/Context;Landroid/net/util/SharedLog;)V
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->checkDunRequired(Landroid/content/Context;)I
+PLcom/android/server/connectivity/tethering/TetheringConfiguration;->containsOneOf(Ljava/util/ArrayList;[Ljava/lang/Integer;)Z
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->copy([Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dumpStringArray(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;)V
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dunCheckString(I)Ljava/lang/String;
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->getDhcpRanges(Landroid/content/Context;)[Ljava/lang/String;
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->getUpstreamIfaceTypes(Landroid/content/Context;I)Ljava/util/Collection;
@@ -7246,57 +9784,49 @@ PLcom/android/server/connectivity/tethering/TetheringConfiguration;->isWifi(Ljav
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->makeString([Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->matchesDownstreamRegexs(Ljava/lang/String;[Ljava/lang/String;)Z
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->preferredUpstreamNames(Ljava/util/Collection;)[Ljava/lang/String;
+PLcom/android/server/connectivity/tethering/TetheringConfiguration;->prependIfNotPresent(Ljava/util/ArrayList;I)V
PLcom/android/server/connectivity/tethering/TetheringConfiguration;->toString()Ljava/lang/String;
PLcom/android/server/connectivity/tethering/TetheringDependencies;-><init>()V
PLcom/android/server/connectivity/tethering/TetheringDependencies;->getOffloadHardwareInterface(Landroid/os/Handler;Landroid/net/util/SharedLog;)Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;
-PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/util/StateMachine;ILandroid/net/util/SharedLog;)V
+PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Landroid/net/util/SharedLog;I)V
+PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->getLocalPrefixes()Ljava/util/Set;
PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->updateMobileRequiresDun(Z)V
-PLcom/android/server/content/-$Lambda$doNli3wDRrwDz12cAoe6lOOQskA;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/content/-$Lambda$doNli3wDRrwDz12cAoe6lOOQskA$2;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/content/-$Lambda$doNli3wDRrwDz12cAoe6lOOQskA;-><init>(B)V
PLcom/android/server/content/ContentService$1;-><init>(Lcom/android/server/content/ContentService;)V
-PLcom/android/server/content/ContentService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/content/ContentService$3;-><init>(Lcom/android/server/content/ContentService;)V
PLcom/android/server/content/ContentService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/content/ContentService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/content/ContentService$Lifecycle;->onStart()V
-PLcom/android/server/content/ContentService$ObserverCall;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZI)V
-PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->-get0(Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;)I
-PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V
-PLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V
-PLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V
+PLcom/android/server/content/ContentService$Lifecycle;->onStartUser(I)V
+PLcom/android/server/content/ContentService$Lifecycle;->onUnlockUser(I)V
PLcom/android/server/content/ContentService;->-get0(Lcom/android/server/content/ContentService;)Landroid/util/SparseArray;
PLcom/android/server/content/ContentService;->-wrap0(Lcom/android/server/content/ContentService;ILjava/lang/String;Landroid/net/Uri;)V
PLcom/android/server/content/ContentService;-><init>(Landroid/content/Context;Z)V
PLcom/android/server/content/ContentService;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
PLcom/android/server/content/ContentService;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V
PLcom/android/server/content/ContentService;->clampPeriod(J)J
-PLcom/android/server/content/ContentService;->enforceCrossUserPermission(ILjava/lang/String;)V
-PLcom/android/server/content/ContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I
-PLcom/android/server/content/ContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I
-PLcom/android/server/content/ContentService;->getMasterSyncAutomatically()Z
-PLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z
-PLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;)Ljava/lang/String;
-PLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
-PLcom/android/server/content/ContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z
-PLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z
-PLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager;
-PLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I
-PLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V
-PLcom/android/server/content/ContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z
-PLcom/android/server/content/ContentService;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z
+PLcom/android/server/content/ContentService;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType;
+PLcom/android/server/content/ContentService;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType;
PLcom/android/server/content/ContentService;->normalizeSyncable(I)I
-PLcom/android/server/content/ContentService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/content/ContentService;->onStartUser(I)V
+PLcom/android/server/content/ContentService;->onUnlockUser(I)V
PLcom/android/server/content/ContentService;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/content/ContentService;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V
PLcom/android/server/content/ContentService;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V
PLcom/android/server/content/ContentService;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V
PLcom/android/server/content/ContentService;->syncAsUser(Landroid/content/SyncRequest;I)V
PLcom/android/server/content/ContentService;->systemReady()V
-PLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V
PLcom/android/server/content/SyncJobService;-><init>()V
-PLcom/android/server/content/SyncJobService;->callJobFinished(IZ)V
+PLcom/android/server/content/SyncJobService;->callJobFinished(IZLjava/lang/String;)V
PLcom/android/server/content/SyncJobService;->onStartCommand(Landroid/content/Intent;II)I
-PLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/content/SyncJobService;->onStopJob(Landroid/app/job/JobParameters;)Z
PLcom/android/server/content/SyncJobService;->sendMessage(Landroid/os/Message;)V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;-><init>()V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->enabled()Z
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->purgeOldLogs()V
+PLcom/android/server/content/SyncLogger;-><init>()V
+PLcom/android/server/content/SyncLogger;->getInstance()Lcom/android/server/content/SyncLogger;
PLcom/android/server/content/SyncManager$10;-><init>(Lcom/android/server/content/SyncManager;)V
PLcom/android/server/content/SyncManager$11;-><init>(Lcom/android/server/content/SyncManager;)V
PLcom/android/server/content/SyncManager$13;-><init>(Lcom/android/server/content/SyncManager;Landroid/content/Intent;)V
@@ -7311,11 +9841,9 @@ PLcom/android/server/content/SyncManager$5;-><init>(Lcom/android/server/content/
PLcom/android/server/content/SyncManager$6;-><init>(Lcom/android/server/content/SyncManager;)V
PLcom/android/server/content/SyncManager$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/content/SyncManager$7;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$7;->run()V
PLcom/android/server/content/SyncManager$8;-><init>(Lcom/android/server/content/SyncManager;)V
PLcom/android/server/content/SyncManager$9;-><init>(Lcom/android/server/content/SyncManager;)V
PLcom/android/server/content/SyncManager$ActiveSyncContext;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;JI)V
-PLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z
PLcom/android/server/content/SyncManager$ActiveSyncContext;->close()V
PLcom/android/server/content/SyncManager$ActiveSyncContext;->onFinished(Landroid/content/SyncResult;)V
PLcom/android/server/content/SyncManager$ActiveSyncContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
@@ -7326,27 +9854,19 @@ PLcom/android/server/content/SyncManager$SyncHandler;->-wrap0(Lcom/android/serve
PLcom/android/server/content/SyncManager$SyncHandler;-><init>(Lcom/android/server/content/SyncManager;Landroid/os/Looper;)V
PLcom/android/server/content/SyncManager$SyncHandler;->checkIfDeviceReady()V
PLcom/android/server/content/SyncManager$SyncHandler;->closeActiveSyncContext(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I
-PLcom/android/server/content/SyncManager$SyncHandler;->deferSyncH(Lcom/android/server/content/SyncOperation;J)V
-PLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z
+PLcom/android/server/content/SyncManager$SyncHandler;->deferActiveSyncH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->deferSyncH(Lcom/android/server/content/SyncOperation;JLjava/lang/String;)V
PLcom/android/server/content/SyncManager$SyncHandler;->findActiveSyncContextH(I)Lcom/android/server/content/SyncManager$ActiveSyncContext;
PLcom/android/server/content/SyncManager$SyncHandler;->getSyncWakeLock(Lcom/android/server/content/SyncOperation;)Landroid/os/PowerManager$WakeLock;
-PLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V
PLcom/android/server/content/SyncManager$SyncHandler;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;)J
PLcom/android/server/content/SyncManager$SyncHandler;->maybeUpdateSyncPeriodH(Lcom/android/server/content/SyncOperation;JJ)V
PLcom/android/server/content/SyncManager$SyncHandler;->onBootCompleted()V
-PLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
PLcom/android/server/content/SyncManager$SyncHandler;->stopSyncEvent(JLcom/android/server/content/SyncOperation;Ljava/lang/String;IIJ)V
-PLcom/android/server/content/SyncManager$SyncHandler;->tryEnqueueMessageUntilReadyToRun(Landroid/os/Message;)Z
PLcom/android/server/content/SyncManager$SyncHandler;->updateOrAddPeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
PLcom/android/server/content/SyncManager$SyncHandler;->updateRunningAccountsH(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
PLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;)V
PLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$SyncTimeTracker;)V
-PLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V
PLcom/android/server/content/SyncManager$UpdatePeriodicSyncMessagePayload;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
PLcom/android/server/content/SyncManager;->-get1(Lcom/android/server/content/SyncManager;)Lcom/android/internal/app/IBatteryStats;
PLcom/android/server/content/SyncManager;->-get10(Lcom/android/server/content/SyncManager;)Z
@@ -7354,12 +9874,12 @@ PLcom/android/server/content/SyncManager;->-get11(Lcom/android/server/content/Sy
PLcom/android/server/content/SyncManager;->-get12(Lcom/android/server/content/SyncManager;)Z
PLcom/android/server/content/SyncManager;->-get13(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncManager$SyncHandler;
PLcom/android/server/content/SyncManager;->-get14(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncJobService;
-PLcom/android/server/content/SyncManager;->-get15(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager$WakeLock;
PLcom/android/server/content/SyncManager;->-get16(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncStorageEngine;
PLcom/android/server/content/SyncManager;->-get2(Lcom/android/server/content/SyncManager;)Z
PLcom/android/server/content/SyncManager;->-get3(Lcom/android/server/content/SyncManager;)Landroid/content/Context;
PLcom/android/server/content/SyncManager;->-get4(Lcom/android/server/content/SyncManager;)Z
-PLcom/android/server/content/SyncManager;->-get6(Lcom/android/server/content/SyncManager;)Z
+PLcom/android/server/content/SyncManager;->-get5(Lcom/android/server/content/SyncManager;)Z
+PLcom/android/server/content/SyncManager;->-get6(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncLogger;
PLcom/android/server/content/SyncManager;->-get7(Lcom/android/server/content/SyncManager;)Landroid/app/NotificationManager;
PLcom/android/server/content/SyncManager;->-get9(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager;
PLcom/android/server/content/SyncManager;->-set0(Lcom/android/server/content/SyncManager;Z)Z
@@ -7367,61 +9887,54 @@ PLcom/android/server/content/SyncManager;->-set1(Lcom/android/server/content/Syn
PLcom/android/server/content/SyncManager;->-set2(Lcom/android/server/content/SyncManager;Z)Z
PLcom/android/server/content/SyncManager;->-set4(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;)[Landroid/accounts/AccountAndUser;
PLcom/android/server/content/SyncManager;->-set6(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncJobService;)Lcom/android/server/content/SyncJobService;
-PLcom/android/server/content/SyncManager;->-wrap0(Lcom/android/server/content/SyncManager;)Landroid/app/job/JobScheduler;
-PLcom/android/server/content/SyncManager;->-wrap10(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager;->-wrap11(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
-PLcom/android/server/content/SyncManager;->-wrap17(Lcom/android/server/content/SyncManager;I)V
-PLcom/android/server/content/SyncManager;->-wrap18(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
-PLcom/android/server/content/SyncManager;->-wrap2(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z
-PLcom/android/server/content/SyncManager;->-wrap23(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;J)V
-PLcom/android/server/content/SyncManager;->-wrap24(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V
-PLcom/android/server/content/SyncManager;->-wrap25(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
-PLcom/android/server/content/SyncManager;->-wrap26(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
-PLcom/android/server/content/SyncManager;->-wrap28(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager;->-wrap5(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z
-PLcom/android/server/content/SyncManager;->-wrap6(Lcom/android/server/content/SyncManager;)Z
-PLcom/android/server/content/SyncManager;->-wrap7(Lcom/android/server/content/SyncManager;Landroid/accounts/Account;ILjava/lang/String;)I
+PLcom/android/server/content/SyncManager;->-wrap1(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z
+PLcom/android/server/content/SyncManager;->-wrap10(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->-wrap11(Lcom/android/server/content/SyncManager;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->-wrap12(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->-wrap13(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager;->-wrap18(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager;->-wrap19(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+PLcom/android/server/content/SyncManager;->-wrap2(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+PLcom/android/server/content/SyncManager;->-wrap24(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;J)V
+PLcom/android/server/content/SyncManager;->-wrap25(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V
+PLcom/android/server/content/SyncManager;->-wrap26(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncManager;->-wrap27(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
+PLcom/android/server/content/SyncManager;->-wrap29(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager;->-wrap4(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z
+PLcom/android/server/content/SyncManager;->-wrap6(Lcom/android/server/content/SyncManager;Landroid/accounts/Account;ILjava/lang/String;)I
PLcom/android/server/content/SyncManager;->-wrap8(Lcom/android/server/content/SyncManager;)Ljava/util/List;
PLcom/android/server/content/SyncManager;-><init>(Landroid/content/Context;Z)V
-PLcom/android/server/content/SyncManager;->canAccessAccount(Landroid/accounts/Account;Ljava/lang/String;I)Z
+PLcom/android/server/content/SyncManager;->cancelJob(Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
PLcom/android/server/content/SyncManager;->cleanupJobs()V
-PLcom/android/server/content/SyncManager;->clearAllBackoffs()V
-PLcom/android/server/content/SyncManager;->clearBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncManager;->clearAllBackoffs(Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->clearBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
PLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
-PLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;Z)I
PLcom/android/server/content/SyncManager;->containsAccountAndUser([Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z
-PLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;
+PLcom/android/server/content/SyncManager;->doDatabaseCleanup()V
PLcom/android/server/content/SyncManager;->getConnectivityManager()Landroid/net/ConnectivityManager;
-PLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
PLcom/android/server/content/SyncManager;->getJobScheduler()Landroid/app/job/JobScheduler;
-PLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
-PLcom/android/server/content/SyncManager;->getSyncStorageEngine()Lcom/android/server/content/SyncStorageEngine;
+PLcom/android/server/content/SyncManager;->getJobStats()Ljava/lang/String;
PLcom/android/server/content/SyncManager;->getTotalBytesTransferredByUid(I)J
PLcom/android/server/content/SyncManager;->getUnusedJobIdH()I
+PLcom/android/server/content/SyncManager;->isAdapterDelayed(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
PLcom/android/server/content/SyncManager;->isDeviceProvisioned()Z
-PLcom/android/server/content/SyncManager;->isJobIdInUseLockedH(ILjava/util/List;)Z
PLcom/android/server/content/SyncManager;->isSyncStillActiveH(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z
+PLcom/android/server/content/SyncManager;->onStartUser(I)V
+PLcom/android/server/content/SyncManager;->onUnlockUser(I)V
PLcom/android/server/content/SyncManager;->onUserUnlocked(I)V
PLcom/android/server/content/SyncManager;->postMonitorSyncProgressMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
PLcom/android/server/content/SyncManager;->postScheduleSyncMessage(Lcom/android/server/content/SyncOperation;J)V
-PLcom/android/server/content/SyncManager;->readDataConnectionState()Z
-PLcom/android/server/content/SyncManager;->removePeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;)V
-PLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
-PLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;)V
+PLcom/android/server/content/SyncManager;->removePeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
PLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;I)V
-PLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V
PLcom/android/server/content/SyncManager;->sendSyncFinishedOrCanceledMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V
-PLcom/android/server/content/SyncManager;->setAuthorityPendingState(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
PLcom/android/server/content/SyncManager;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
PLcom/android/server/content/SyncManager;->syncExtrasEquals(Landroid/os/Bundle;Landroid/os/Bundle;Z)Z
PLcom/android/server/content/SyncManager;->updateOrAddPeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
PLcom/android/server/content/SyncManager;->updateRunningAccounts(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
-PLcom/android/server/content/SyncManager;->verifyJobScheduler()V
PLcom/android/server/content/SyncManager;->whiteListExistingSyncAdaptersIfNeeded()V
PLcom/android/server/content/SyncOperation;-><init>(Landroid/accounts/Account;IILjava/lang/String;IILjava/lang/String;Landroid/os/Bundle;Z)V
PLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;Z)V
-PLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJ)V
-PLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V
+PLcom/android/server/content/SyncOperation;->extrasToString(Landroid/os/Bundle;)Ljava/lang/String;
PLcom/android/server/content/SyncOperation;->findPriority()I
PLcom/android/server/content/SyncOperation;->ignoreBackoff()Z
PLcom/android/server/content/SyncOperation;->isConflict(Lcom/android/server/content/SyncOperation;)Z
@@ -7431,8 +9944,6 @@ PLcom/android/server/content/SyncOperation;->isIgnoreSettings()Z
PLcom/android/server/content/SyncOperation;->isInitialization()Z
PLcom/android/server/content/SyncOperation;->isNotAllowedOnMetered()Z
PLcom/android/server/content/SyncOperation;->toEventLog(I)[Ljava/lang/Object;
-PLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle;
-PLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String;
PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;-><init>(Landroid/content/Context;)V
PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->isAccountValid(Landroid/accounts/Account;I)Z
PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->isAuthorityValid(Ljava/lang/String;I)Z
@@ -7440,8 +9951,6 @@ PLcom/android/server/content/SyncStorageEngine$AccountInfo;-><init>(Landroid/acc
PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;I)V
PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;->defaultInitialisation()V
PLcom/android/server/content/SyncStorageEngine$DayStats;-><init>(I)V
-PLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V
-PLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
PLcom/android/server/content/SyncStorageEngine$SyncHistoryItem;-><init>()V
PLcom/android/server/content/SyncStorageEngine;->-get0()Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;
PLcom/android/server/content/SyncStorageEngine;-><init>(Landroid/content/Context;Ljava/io/File;)V
@@ -7450,35 +9959,25 @@ PLcom/android/server/content/SyncStorageEngine;->addStatusChangeListener(ILandro
PLcom/android/server/content/SyncStorageEngine;->calculateDefaultFlexTime(J)J
PLcom/android/server/content/SyncStorageEngine;->clearAllBackoffsLocked()V
PLcom/android/server/content/SyncStorageEngine;->createAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+PLcom/android/server/content/SyncStorageEngine;->doDatabaseCleanup([Landroid/accounts/Account;I)V
PLcom/android/server/content/SyncStorageEngine;->getAuthority(I)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
-PLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
-PLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair;
PLcom/android/server/content/SyncStorageEngine;->getCurrentDayLocked()I
-PLcom/android/server/content/SyncStorageEngine;->getCurrentSyncs(I)Ljava/util/List;
-PLcom/android/server/content/SyncStorageEngine;->getCurrentSyncsLocked(I)Ljava/util/List;
PLcom/android/server/content/SyncStorageEngine;->getDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;)J
-PLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
-PLcom/android/server/content/SyncStorageEngine;->getMasterSyncAutomatically(I)Z
-PLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
PLcom/android/server/content/SyncStorageEngine;->getOrCreateSyncStatusLocked(I)Landroid/content/SyncStatusInfo;
PLcom/android/server/content/SyncStorageEngine;->getSingleton()Lcom/android/server/content/SyncStorageEngine;
-PLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;)Z
+PLcom/android/server/content/SyncStorageEngine;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/content/SyncStorageEngine;->init(Landroid/content/Context;)V
PLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J
-PLcom/android/server/content/SyncStorageEngine;->isSyncActive(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
-PLcom/android/server/content/SyncStorageEngine;->isSyncPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
PLcom/android/server/content/SyncStorageEngine;->markPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;Z)V
PLcom/android/server/content/SyncStorageEngine;->maybeDeleteLegacyPendingInfoLocked(Ljava/io/File;)V
PLcom/android/server/content/SyncStorageEngine;->maybeMigrateSettingsForRenamedAuthorities()Z
-PLcom/android/server/content/SyncStorageEngine;->parseAuthority(Lorg/xmlpull/v1/XmlPullParser;ILcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
PLcom/android/server/content/SyncStorageEngine;->parseListenForTickles(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/content/SyncStorageEngine;->readAccountInfoLocked()V
PLcom/android/server/content/SyncStorageEngine;->readAndDeleteLegacyAccountInfoLocked()V
PLcom/android/server/content/SyncStorageEngine;->readStatisticsLocked()V
PLcom/android/server/content/SyncStorageEngine;->readStatusLocked()V
PLcom/android/server/content/SyncStorageEngine;->removeActiveSync(Landroid/content/SyncInfo;I)V
+PLcom/android/server/content/SyncStorageEngine;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V
PLcom/android/server/content/SyncStorageEngine;->reportActiveChange()V
-PLcom/android/server/content/SyncStorageEngine;->reportChange(I)V
PLcom/android/server/content/SyncStorageEngine;->restoreAllPeriodicSyncs()Z
PLcom/android/server/content/SyncStorageEngine;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
PLcom/android/server/content/SyncStorageEngine;->setIsSyncable(Landroid/accounts/Account;ILjava/lang/String;I)V
@@ -7488,15 +9987,17 @@ PLcom/android/server/content/SyncStorageEngine;->setPeriodicSyncAddedListener(Lc
PLcom/android/server/content/SyncStorageEngine;->setSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;Z)V
PLcom/android/server/content/SyncStorageEngine;->setSyncableStateForEndPoint(Lcom/android/server/content/SyncStorageEngine$EndPoint;I)V
PLcom/android/server/content/SyncStorageEngine;->shouldGrantSyncAdaptersAccountAccess()Z
-PLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJ)V
-PLcom/android/server/content/SyncStorageEngine;->writeAccountInfoLocked()V
PLcom/android/server/content/SyncStorageEngine;->writeStatisticsLocked()V
-PLcom/android/server/content/SyncStorageEngine;->writeStatusLocked()V
+PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;->$m$0()V
+PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;->run()V
PLcom/android/server/devicepolicy/CertificateMonitor$1;-><init>(Lcom/android/server/devicepolicy/CertificateMonitor;)V
PLcom/android/server/devicepolicy/CertificateMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/devicepolicy/CertificateMonitor;->-wrap0(Lcom/android/server/devicepolicy/CertificateMonitor;Landroid/os/UserHandle;)V
PLcom/android/server/devicepolicy/CertificateMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Landroid/os/Handler;)V
PLcom/android/server/devicepolicy/CertificateMonitor;->getInstalledCaCertificates(Landroid/os/UserHandle;)Ljava/util/List;
+PLcom/android/server/devicepolicy/CertificateMonitor;->lambda$-com_android_server_devicepolicy_CertificateMonitor_5174(I)V
+PLcom/android/server/devicepolicy/CertificateMonitor;->onCertificateApprovalsChanged(I)V
PLcom/android/server/devicepolicy/CertificateMonitor;->updateInstalledCertificates(Landroid/os/UserHandle;)V
PLcom/android/server/devicepolicy/DeviceAdminServiceController;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyConstants;)V
PLcom/android/server/devicepolicy/DevicePolicyConstants;-><init>(Ljava/lang/String;)V
@@ -7507,18 +10008,17 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService$3;-><init>(Lcom/and
PLcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$4;I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;->run()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;IZ)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$8;->run()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;-><init>(Landroid/app/admin/DeviceAdminInfo;Z)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUid()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUserHandle()Landroid/os/UserHandle;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->hasParentActiveAdmin()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->hasUserRestrictions()Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writePackageListToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;-><init>(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;-><init>(Landroid/content/Context;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getAlarmManager()Landroid/app/AlarmManager;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getDevicePolicyFilePathForSystemUser()Ljava/lang/String;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIActivityManager()Landroid/app/IActivityManager;
@@ -7540,7 +10040,7 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settings
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetString(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsSecureGetIntForUser(Ljava/lang/String;II)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->storageManagerIsFileBasedEncryptionEnabled()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStart()V
@@ -7548,46 +10048,40 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStart
PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUnlockUser(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->addOnCrossProfileWidgetProvidersChangeListener(Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveAdminWithPolicy(II)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->register()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap18(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap3(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap7(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap8(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->cleanUpOldUsers()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceDeviceOwnerOrManageUsers()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceFullCrossUsersPermission(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceManageUsers()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceSystemUserOrPermissionIfCrossUser(ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceNotManagedProfile(ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceUserUnlocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceUserUnlocked(IZ)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureCallerPackage(Ljava/lang/String;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureDeviceOwnerUserStarted()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->findAdmin(Landroid/content/ComponentName;IZ)Landroid/app/admin/DeviceAdminInfo;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->findOwnerComponentIfNecessaryLocked()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAcceptedCaCertificates(Landroid/os/UserHandle;)Ljava/util/Set;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminWithPolicyForUidLocked(Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(IZ)Ljava/util/List;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;IZ)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraRestrictionScopeLocked(IZ)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getEncryptionStatus()I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeepUninstalledPackagesLocked()Ljava/util/List;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOwnerComponent(I)Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordExpirationLocked(Landroid/content/ComponentName;IZ)J
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwner(I)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordQuality(Landroid/content/ComponentName;IZ)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getScreenCaptureDisabled(Landroid/content/ComponentName;I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getStorageEncryptionStatus(Ljava/lang/String;I)I
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePackagesChanged(Ljava/lang/String;I)V
@@ -7595,15 +10089,13 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePasswordExp
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleStartUser(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleUnlockUser(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasDeviceOwner()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActiveAdminWithPolicyForUserLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;II)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActivePasswordSufficientForUserLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;IZ)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminActive(Landroid/content/ComponentName;I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallerWithSystemUid()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwner(Landroid/content/ComponentName;I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isLockTaskPermitted(Ljava/lang/String;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabledInternalLocked()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Landroid/content/ComponentName;I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadOwners()V
@@ -7612,11 +10104,18 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeJournaledFile
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultDeviceOwnerUserRestrictionsLocked()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultProfileOwnerUserRestrictions()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateUserRestrictionsIfNecessaryLocked()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->notifyPendingSystemUpdate(Landroid/app/admin/SystemUpdateInfo;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onInstalledCertificatesChanged(Landroid/os/UserHandle;Ljava/util/Collection;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onLockSettingsReady()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushUserRestrictions(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeCaApprovalsIfNeeded(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportPasswordChanged(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->saveSettingsLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandForLockscreenPoliciesLocked(Ljava/lang/String;II)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(Ljava/lang/String;IILandroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandToSelfAndProfilesLocked(Ljava/lang/String;IILandroid/os/Bundle;)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminEnabledBroadcastLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendChangedNotification(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDeviceOwnerSystemPropertyLocked()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setExpirationAlarmCheckLocked(Landroid/content/Context;IZ)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->startOwnerService(ILjava/lang/String;)V
@@ -7624,9 +10123,12 @@ PLcom/android/server/devicepolicy/DevicePolicyManagerService;->systemReady(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateDeviceOwnerLocked()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateLockTaskPackagesLocked(Ljava/util/List;I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateMaximumTimeToLockLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordExpirationsLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordValidityCheckpointLocked(I)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateScreenCaptureDisabledInWindowManager(IZ)V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateUserSetupCompleteAndPaired()V
PLcom/android/server/devicepolicy/DevicePolicyManagerService;->validatePasswordOwnerLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->validateQualityConstant(I)V
PLcom/android/server/devicepolicy/Owners$DeviceOwnerReadWriter;-><init>(Lcom/android/server/devicepolicy/Owners;)V
PLcom/android/server/devicepolicy/Owners$FileReadWriter;-><init>(Ljava/io/File;)V
PLcom/android/server/devicepolicy/Owners$FileReadWriter;->readFromFileLocked()V
@@ -7637,43 +10139,28 @@ PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerFileWithTestOverride()L
PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I
PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserRestrictionsNeedsMigration()Z
PLcom/android/server/devicepolicy/Owners;->getLegacyConfigFileWithTestOverride()Ljava/io/File;
-PLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName;
PLcom/android/server/devicepolicy/Owners;->getProfileOwnerFileWithTestOverride(I)Ljava/io/File;
PLcom/android/server/devicepolicy/Owners;->getProfileOwnerKeys()Ljava/util/Set;
PLcom/android/server/devicepolicy/Owners;->getProfileOwnerUserRestrictionsNeedsMigration(I)Z
PLcom/android/server/devicepolicy/Owners;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
-PLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z
PLcom/android/server/devicepolicy/Owners;->hasProfileOwner(I)Z
PLcom/android/server/devicepolicy/Owners;->isDeviceOwnerUserId(I)Z
PLcom/android/server/devicepolicy/Owners;->load()V
PLcom/android/server/devicepolicy/Owners;->pushToPackageManagerLocked()V
PLcom/android/server/devicepolicy/Owners;->readLegacyOwnerFileLocked(Ljava/io/File;)Z
-PLcom/android/server/devicepolicy/Owners;->saveSystemUpdateInfo(Landroid/app/admin/SystemUpdateInfo;)Z
PLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
-PLcom/android/server/display/-$Lambda$pe87L53A2dvYIZSUUR6Usyk2Zwo;-><init>()V
PLcom/android/server/display/AutomaticBrightnessController$1;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V
PLcom/android/server/display/AutomaticBrightnessController$1;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;-><init>(JI)V
-PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V
-PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V
+PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->clear()V
PLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;-><init>(Lcom/android/server/display/AutomaticBrightnessController;Landroid/os/Looper;)V
-PLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/display/AutomaticBrightnessController;->-get0(Lcom/android/server/display/AutomaticBrightnessController;)Z
-PLcom/android/server/display/AutomaticBrightnessController;->-wrap0(Lcom/android/server/display/AutomaticBrightnessController;)V
-PLcom/android/server/display/AutomaticBrightnessController;->-wrap1(Lcom/android/server/display/AutomaticBrightnessController;JF)V
-PLcom/android/server/display/AutomaticBrightnessController;->-wrap2(Lcom/android/server/display/AutomaticBrightnessController;)V
PLcom/android/server/display/AutomaticBrightnessController;-><init>(Lcom/android/server/display/AutomaticBrightnessController$Callbacks;Landroid/os/Looper;Landroid/hardware/SensorManager;Landroid/util/Spline;IIIFIIJJZIFLcom/android/server/display/HysteresisLevels;)V
PLcom/android/server/display/AutomaticBrightnessController;->adjustLightSensorRate(I)V
-PLcom/android/server/display/AutomaticBrightnessController;->applyLightSensorMeasurement(JF)V
PLcom/android/server/display/AutomaticBrightnessController;->clampScreenBrightness(I)I
-PLcom/android/server/display/AutomaticBrightnessController;->collectBrightnessAdjustmentSample()V
-PLcom/android/server/display/AutomaticBrightnessController;->configure(ZFZZ)V
PLcom/android/server/display/AutomaticBrightnessController;->getAutomaticScreenBrightness()I
-PLcom/android/server/display/AutomaticBrightnessController;->prepareBrightnessAdjustmentSample()V
PLcom/android/server/display/AutomaticBrightnessController;->setAmbientLux(F)V
PLcom/android/server/display/AutomaticBrightnessController;->setLightSensorEnabled(Z)Z
PLcom/android/server/display/AutomaticBrightnessController;->setScreenAutoBrightnessAdjustment(F)Z
-PLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux()V
PLcom/android/server/display/AutomaticBrightnessController;->updateAutoBrightness(Z)V
PLcom/android/server/display/ColorFade;-><init>(I)V
PLcom/android/server/display/ColorFade;->createNativeFloatBuffer(I)Ljava/nio/FloatBuffer;
@@ -7683,25 +10170,16 @@ PLcom/android/server/display/DisplayDevice;->performTraversalInTransactionLocked
PLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V
PLcom/android/server/display/DisplayDevice;->setLayerStackInTransactionLocked(I)V
PLcom/android/server/display/DisplayDevice;->setProjectionInTransactionLocked(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds()[I
PLcom/android/server/display/DisplayManagerService$BinderService;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
-PLcom/android/server/display/DisplayManagerService$CallbackRecord;->binderDied()V
PLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)V
-PLcom/android/server/display/DisplayManagerService$Injector;->getVirtualDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)Lcom/android/server/display/VirtualDisplayAdapter;
PLcom/android/server/display/DisplayManagerService$LocalService$1;-><init>(Lcom/android/server/display/DisplayManagerService$LocalService;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)V
-PLcom/android/server/display/DisplayManagerService$LocalService$1;->requestDisplayState(II)V
PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
PLcom/android/server/display/DisplayManagerService$LocalService;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V
PLcom/android/server/display/DisplayManagerService$LocalService;->initPowerManagement(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;)V
PLcom/android/server/display/DisplayManagerService$LocalService;->isProximitySensorAvailable()Z
-PLcom/android/server/display/DisplayManagerService$LocalService;->performTraversalInTransactionFromWindowManager()V
-PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V
-PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V
-PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIZ)V
PLcom/android/server/display/DisplayManagerService;->-get0(Lcom/android/server/display/DisplayManagerService;)Landroid/content/Context;
PLcom/android/server/display/DisplayManagerService;->-get1(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport;
PLcom/android/server/display/DisplayManagerService;->-get10(Lcom/android/server/display/DisplayManagerService;)Landroid/view/WindowManagerInternal;
-PLcom/android/server/display/DisplayManagerService;->-get2(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayPowerController;
PLcom/android/server/display/DisplayManagerService;->-get3(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport;
PLcom/android/server/display/DisplayManagerService;->-get4(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/input/InputManagerInternal;
PLcom/android/server/display/DisplayManagerService;->-get6(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport;
@@ -7709,33 +10187,18 @@ PLcom/android/server/display/DisplayManagerService;->-get7(Lcom/android/server/d
PLcom/android/server/display/DisplayManagerService;->-get8(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
PLcom/android/server/display/DisplayManagerService;->-get9(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
PLcom/android/server/display/DisplayManagerService;->-set0(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayPowerController;)Lcom/android/server/display/DisplayPowerController;
-PLcom/android/server/display/DisplayManagerService;->-wrap0(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus;
-PLcom/android/server/display/DisplayManagerService;->-wrap11(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
-PLcom/android/server/display/DisplayManagerService;->-wrap15(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
-PLcom/android/server/display/DisplayManagerService;->-wrap17(Lcom/android/server/display/DisplayManagerService;)V
-PLcom/android/server/display/DisplayManagerService;->-wrap24(Lcom/android/server/display/DisplayManagerService;II)V
-PLcom/android/server/display/DisplayManagerService;->-wrap28(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V
-PLcom/android/server/display/DisplayManagerService;->-wrap29(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
-PLcom/android/server/display/DisplayManagerService;->-wrap31(Lcom/android/server/display/DisplayManagerService;IZFIZ)V
-PLcom/android/server/display/DisplayManagerService;->-wrap4(Lcom/android/server/display/DisplayManagerService;I)[I
-PLcom/android/server/display/DisplayManagerService;->applyGlobalDisplayStateLocked(Ljava/util/List;)V
+PLcom/android/server/display/DisplayManagerService;->-wrap1(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus;
+PLcom/android/server/display/DisplayManagerService;->-wrap12(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
+PLcom/android/server/display/DisplayManagerService;->-wrap18(Lcom/android/server/display/DisplayManagerService;)V
PLcom/android/server/display/DisplayManagerService;->clearViewportsLocked()V
PLcom/android/server/display/DisplayManagerService;->configureDisplayInTransactionLocked(Lcom/android/server/display/DisplayDevice;)V
PLcom/android/server/display/DisplayManagerService;->findLogicalDisplayForDeviceLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;
-PLcom/android/server/display/DisplayManagerService;->getDisplayIdsInternal(I)[I
PLcom/android/server/display/DisplayManagerService;->getNonOverrideDisplayInfoInternal(ILandroid/view/DisplayInfo;)V
PLcom/android/server/display/DisplayManagerService;->getWifiDisplayStatusInternal()Landroid/hardware/display/WifiDisplayStatus;
-PLcom/android/server/display/DisplayManagerService;->onCallbackDied(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
-PLcom/android/server/display/DisplayManagerService;->performTraversalInTransactionFromWindowManagerInternal()V
PLcom/android/server/display/DisplayManagerService;->performTraversalInTransactionLocked()V
PLcom/android/server/display/DisplayManagerService;->registerAdditionalDisplayAdapters()V
PLcom/android/server/display/DisplayManagerService;->registerOverlayDisplayAdapterLocked()V
-PLcom/android/server/display/DisplayManagerService;->registerVirtualDisplayAdapterLocked()V
PLcom/android/server/display/DisplayManagerService;->registerWifiDisplayAdapterLocked()V
-PLcom/android/server/display/DisplayManagerService;->requestGlobalDisplayStateInternal(II)V
-PLcom/android/server/display/DisplayManagerService;->setDisplayAccessUIDsInternal(Landroid/util/SparseArray;)V
-PLcom/android/server/display/DisplayManagerService;->setDisplayInfoOverrideFromWindowManagerInternal(ILandroid/view/DisplayInfo;)V
-PLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIZ)V
PLcom/android/server/display/DisplayManagerService;->setViewportLocked(Landroid/hardware/display/DisplayViewport;Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V
PLcom/android/server/display/DisplayManagerService;->setupSchedulerPolicies()V
PLcom/android/server/display/DisplayManagerService;->shouldRegisterNonEssentialDisplayAdaptersLocked()Z
@@ -7753,13 +10216,10 @@ PLcom/android/server/display/DisplayPowerController$5;-><init>(Lcom/android/serv
PLcom/android/server/display/DisplayPowerController$6;-><init>(Lcom/android/server/display/DisplayPowerController;)V
PLcom/android/server/display/DisplayPowerController$7;-><init>(Lcom/android/server/display/DisplayPowerController;)V
PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;-><init>(Lcom/android/server/display/DisplayPowerController;Landroid/os/Looper;)V
-PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/display/DisplayPowerController;->-get0(Lcom/android/server/display/DisplayPowerController;)Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;
PLcom/android/server/display/DisplayPowerController;->-wrap3(Lcom/android/server/display/DisplayPowerController;)V
PLcom/android/server/display/DisplayPowerController;->-wrap6(Lcom/android/server/display/DisplayPowerController;)V
PLcom/android/server/display/DisplayPowerController;-><init>(Landroid/content/Context;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayBlanker;)V
-PLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(II)V
-PLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IZ)V
PLcom/android/server/display/DisplayPowerController;->clampAbsoluteBrightness(I)I
PLcom/android/server/display/DisplayPowerController;->clampScreenBrightness(I)I
PLcom/android/server/display/DisplayPowerController;->createAutoBrightnessSpline([I[I)Landroid/util/Spline;
@@ -7768,47 +10228,24 @@ PLcom/android/server/display/DisplayPowerController;->isProximitySensorAvailable
PLcom/android/server/display/DisplayPowerController;->normalizeAbsoluteBrightness(I)F
PLcom/android/server/display/DisplayPowerController;->sendOnStateChangedWithWakelock()V
PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerState()V
-PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V
PLcom/android/server/display/DisplayPowerController;->setProximitySensorEnabled(Z)V
+PLcom/android/server/display/DisplayPowerController;->setReportedScreenState(I)V
PLcom/android/server/display/DisplayPowerController;->setScreenState(I)Z
PLcom/android/server/display/DisplayPowerController;->unblockScreenOn()V
PLcom/android/server/display/DisplayPowerController;->updateBrightness()V
-PLcom/android/server/display/DisplayPowerController;->updatePowerState()V
PLcom/android/server/display/DisplayPowerState$1;-><init>(Ljava/lang/String;)V
PLcom/android/server/display/DisplayPowerState$2;-><init>(Ljava/lang/String;)V
-PLcom/android/server/display/DisplayPowerState$2;->setValue(Lcom/android/server/display/DisplayPowerState;I)V
-PLcom/android/server/display/DisplayPowerState$2;->setValue(Ljava/lang/Object;I)V
PLcom/android/server/display/DisplayPowerState$3;-><init>(Lcom/android/server/display/DisplayPowerState;)V
-PLcom/android/server/display/DisplayPowerState$3;->run()V
PLcom/android/server/display/DisplayPowerState$4;-><init>(Lcom/android/server/display/DisplayPowerState;)V
PLcom/android/server/display/DisplayPowerState$PhotonicModulator;-><init>(Lcom/android/server/display/DisplayPowerState;)V
-PLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V
-PLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(II)Z
-PLcom/android/server/display/DisplayPowerState;->-get0()Z
-PLcom/android/server/display/DisplayPowerState;->-get1(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayBlanker;
-PLcom/android/server/display/DisplayPowerState;->-get3(Lcom/android/server/display/DisplayPowerState;)F
-PLcom/android/server/display/DisplayPowerState;->-get5(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayPowerState$PhotonicModulator;
-PLcom/android/server/display/DisplayPowerState;->-get6(Lcom/android/server/display/DisplayPowerState;)I
-PLcom/android/server/display/DisplayPowerState;->-get7(Lcom/android/server/display/DisplayPowerState;)I
-PLcom/android/server/display/DisplayPowerState;->-set2(Lcom/android/server/display/DisplayPowerState;Z)Z
-PLcom/android/server/display/DisplayPowerState;->-set3(Lcom/android/server/display/DisplayPowerState;Z)Z
-PLcom/android/server/display/DisplayPowerState;->-wrap0(Lcom/android/server/display/DisplayPowerState;)V
-PLcom/android/server/display/DisplayPowerState;->-wrap1(Lcom/android/server/display/DisplayPowerState;)V
PLcom/android/server/display/DisplayPowerState;-><init>(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;)V
-PLcom/android/server/display/DisplayPowerState;->dismissColorFade()V
PLcom/android/server/display/DisplayPowerState;->getColorFadeLevel()F
PLcom/android/server/display/DisplayPowerState;->getScreenBrightness()I
-PLcom/android/server/display/DisplayPowerState;->getScreenState()I
-PLcom/android/server/display/DisplayPowerState;->invokeCleanListenerIfNeeded()V
-PLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V
-PLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V
PLcom/android/server/display/DisplayPowerState;->setColorFadeLevel(F)V
-PLcom/android/server/display/DisplayPowerState;->setScreenBrightness(I)V
PLcom/android/server/display/DisplayPowerState;->waitUntilClean(Ljava/lang/Runnable;)Z
PLcom/android/server/display/DisplayTransformManager;->applyColorMatrix([F)V
PLcom/android/server/display/DisplayTransformManager;->computeColorMatrixLocked()[F
PLcom/android/server/display/DisplayTransformManager;->getColorMatrix(I)[F
-PLcom/android/server/display/DisplayTransformManager;->setColorMatrix(I[F)V
PLcom/android/server/display/DisplayTransformManager;->setDaltonizerMode(I)V
PLcom/android/server/display/HysteresisLevels;-><init>([I[I[I)V
PLcom/android/server/display/HysteresisLevels;->getBrighteningThreshold(F)F
@@ -7821,19 +10258,14 @@ PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestMod
PLcom/android/server/display/LogicalDisplay;->configureDisplayInTransactionLocked(Lcom/android/server/display/DisplayDevice;Z)V
PLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I
PLcom/android/server/display/LogicalDisplay;->getNonOverrideDisplayInfoLocked(Landroid/view/DisplayInfo;)V
-PLcom/android/server/display/LogicalDisplay;->getRequestedModeIdLocked()I
-PLcom/android/server/display/LogicalDisplay;->hasContentLocked()Z
-PLcom/android/server/display/LogicalDisplay;->setDisplayInfoOverrideFromWindowManagerLocked(Landroid/view/DisplayInfo;)Z
PLcom/android/server/display/LogicalDisplay;->setHasContentLocked(Z)V
PLcom/android/server/display/NightDisplayService$1;-><init>(Lcom/android/server/display/NightDisplayService;)V
PLcom/android/server/display/NightDisplayService$3;-><init>(Lcom/android/server/display/NightDisplayService;Lcom/android/server/display/DisplayTransformManager;)V
-PLcom/android/server/display/NightDisplayService$3;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
PLcom/android/server/display/NightDisplayService$4;-><init>(Lcom/android/server/display/NightDisplayService;Lcom/android/server/display/DisplayTransformManager;[F)V
PLcom/android/server/display/NightDisplayService$4;->onAnimationCancel(Landroid/animation/Animator;)V
PLcom/android/server/display/NightDisplayService$4;->onAnimationEnd(Landroid/animation/Animator;)V
PLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;-><init>()V
PLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;-><init>(Lcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;)V
-PLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/display/NightDisplayService;->-set0(Lcom/android/server/display/NightDisplayService;Landroid/animation/ValueAnimator;)Landroid/animation/ValueAnimator;
PLcom/android/server/display/NightDisplayService;-><init>(Landroid/content/Context;)V
PLcom/android/server/display/NightDisplayService;->applyTint(Z)V
@@ -7855,29 +10287,11 @@ PLcom/android/server/display/OverlayDisplayAdapter;->registerLocked()V
PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevices()V
PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevicesLocked()V
PLcom/android/server/display/RampAnimator$1;-><init>(Lcom/android/server/display/RampAnimator;)V
-PLcom/android/server/display/RampAnimator$1;->run()V
-PLcom/android/server/display/RampAnimator;->-get0(Lcom/android/server/display/RampAnimator;)F
-PLcom/android/server/display/RampAnimator;->-get1(Lcom/android/server/display/RampAnimator;)Landroid/view/Choreographer;
-PLcom/android/server/display/RampAnimator;->-get2(Lcom/android/server/display/RampAnimator;)I
-PLcom/android/server/display/RampAnimator;->-get3(Lcom/android/server/display/RampAnimator;)J
PLcom/android/server/display/RampAnimator;->-get4(Lcom/android/server/display/RampAnimator;)Lcom/android/server/display/RampAnimator$Listener;
-PLcom/android/server/display/RampAnimator;->-get5(Lcom/android/server/display/RampAnimator;)Ljava/lang/Object;
-PLcom/android/server/display/RampAnimator;->-get6(Lcom/android/server/display/RampAnimator;)Landroid/util/IntProperty;
-PLcom/android/server/display/RampAnimator;->-get7(Lcom/android/server/display/RampAnimator;)I
-PLcom/android/server/display/RampAnimator;->-get8(Lcom/android/server/display/RampAnimator;)I
-PLcom/android/server/display/RampAnimator;->-set0(Lcom/android/server/display/RampAnimator;F)F
PLcom/android/server/display/RampAnimator;->-set1(Lcom/android/server/display/RampAnimator;Z)Z
-PLcom/android/server/display/RampAnimator;->-set2(Lcom/android/server/display/RampAnimator;I)I
-PLcom/android/server/display/RampAnimator;->-set3(Lcom/android/server/display/RampAnimator;J)J
-PLcom/android/server/display/RampAnimator;->-wrap0(Lcom/android/server/display/RampAnimator;)V
PLcom/android/server/display/RampAnimator;-><init>(Ljava/lang/Object;Landroid/util/IntProperty;)V
-PLcom/android/server/display/RampAnimator;->animateTo(II)Z
PLcom/android/server/display/RampAnimator;->isAnimating()Z
-PLcom/android/server/display/RampAnimator;->postAnimationCallback()V
PLcom/android/server/display/RampAnimator;->setListener(Lcom/android/server/display/RampAnimator$Listener;)V
-PLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V
-PLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;)V
-PLcom/android/server/display/VirtualDisplayAdapter;->registerLocked()V
PLcom/android/server/dreams/DreamController$1;-><init>(Lcom/android/server/dreams/DreamController;)V
PLcom/android/server/dreams/DreamController$2;-><init>(Lcom/android/server/dreams/DreamController;)V
PLcom/android/server/dreams/DreamController;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/dreams/DreamController$Listener;)V
@@ -7893,7 +10307,6 @@ PLcom/android/server/dreams/DreamManagerService$BinderService;->isDreaming()Z
PLcom/android/server/dreams/DreamManagerService$DreamHandler;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Looper;)V
PLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
PLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$LocalService;)V
-PLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z
PLcom/android/server/dreams/DreamManagerService;->-get5(Lcom/android/server/dreams/DreamManagerService;)Ljava/lang/Object;
PLcom/android/server/dreams/DreamManagerService;->-wrap15(Lcom/android/server/dreams/DreamManagerService;Z)V
PLcom/android/server/dreams/DreamManagerService;->-wrap17(Lcom/android/server/dreams/DreamManagerService;)V
@@ -7913,22 +10326,30 @@ PLcom/android/server/dreams/DreamManagerService;->validateDream(Landroid/content
PLcom/android/server/dreams/DreamManagerService;->writePulseGestureEnabled()V
PLcom/android/server/emergency/EmergencyAffordanceService$1;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
PLcom/android/server/emergency/EmergencyAffordanceService$2;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/emergency/EmergencyAffordanceService$3;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
PLcom/android/server/emergency/EmergencyAffordanceService$3;->onSubscriptionsChanged()V
PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;Landroid/os/Looper;)V
PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/emergency/EmergencyAffordanceService;->-get0(Lcom/android/server/emergency/EmergencyAffordanceService;)Lcom/android/server/emergency/EmergencyAffordanceService$MyHandler;
+PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap0(Lcom/android/server/emergency/EmergencyAffordanceService;)Z
PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap1(Lcom/android/server/emergency/EmergencyAffordanceService;)Z
PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap3(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap4(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap5(Lcom/android/server/emergency/EmergencyAffordanceService;)V
PLcom/android/server/emergency/EmergencyAffordanceService;-><init>(Landroid/content/Context;)V
PLcom/android/server/emergency/EmergencyAffordanceService;->handleInitializeState()V
PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateCellInfo()Z
PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateSimSubscriptionInfo()Z
+PLcom/android/server/emergency/EmergencyAffordanceService;->mccRequiresEmergencyAffordance(I)Z
PLcom/android/server/emergency/EmergencyAffordanceService;->onBootPhase(I)V
PLcom/android/server/emergency/EmergencyAffordanceService;->onStart()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->requestCellScan()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->setNetworkNeedsEmergencyAffordance(Z)V
PLcom/android/server/emergency/EmergencyAffordanceService;->setSimNeedsEmergencyAffordance(Z)V
PLcom/android/server/emergency/EmergencyAffordanceService;->simNeededAffordanceBefore()Z
PLcom/android/server/emergency/EmergencyAffordanceService;->startScanning()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->stopScanning()V
PLcom/android/server/emergency/EmergencyAffordanceService;->updateEmergencyAffordanceNeeded()V
PLcom/android/server/fingerprint/-$Lambda$NsdFXKe2P39OH-qCAY_zqOMIIsg;->$m$0()V
PLcom/android/server/fingerprint/-$Lambda$NsdFXKe2P39OH-qCAY_zqOMIIsg;-><init>(Ljava/lang/Object;)V
@@ -7964,6 +10385,7 @@ PLcom/android/server/fingerprint/FingerprintService;->getEnrolledFingerprints(I)
PLcom/android/server/fingerprint/FingerprintService;->getFingerprintDaemon()Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
PLcom/android/server/fingerprint/FingerprintService;->getUserOrWorkProfileId(Ljava/lang/String;I)I
PLcom/android/server/fingerprint/FingerprintService;->hasEnrolledFingerprints(I)Z
+PLcom/android/server/fingerprint/FingerprintService;->isCurrentUserOrProfile(I)Z
PLcom/android/server/fingerprint/FingerprintService;->isKeyguard(Ljava/lang/String;)Z
PLcom/android/server/fingerprint/FingerprintService;->isWorkProfile(I)Z
PLcom/android/server/fingerprint/FingerprintService;->listenForUserSwitches()V
@@ -7980,8 +10402,6 @@ PLcom/android/server/fingerprint/FingerprintsUserState;->getCopy(Ljava/util/Arra
PLcom/android/server/fingerprint/FingerprintsUserState;->getFileForUser(I)Ljava/io/File;
PLcom/android/server/fingerprint/FingerprintsUserState;->getFingerprints()Ljava/util/List;
PLcom/android/server/fingerprint/FingerprintsUserState;->readStateSyncLocked()V
-PLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V
-PLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
PLcom/android/server/firewall/IntentFirewall;->checkStartActivity(Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
PLcom/android/server/input/InputApplicationHandle;-><init>(Ljava/lang/Object;)V
PLcom/android/server/input/InputApplicationHandle;->finalize()V
@@ -7994,12 +10414,11 @@ PLcom/android/server/input/InputManagerService$2;-><init>(Lcom/android/server/in
PLcom/android/server/input/InputManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/input/InputManagerService$3;-><init>(Lcom/android/server/input/InputManagerService;)V
PLcom/android/server/input/InputManagerService$5;-><init>(Lcom/android/server/input/InputManagerService;Ljava/util/HashSet;)V
-PLcom/android/server/input/InputManagerService$5;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;-><init>(Lcom/android/server/input/InputManagerService;ILandroid/hardware/input/IInputDevicesChangedListener;)V
PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->binderDied()V
+PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->notifyInputDevicesChanged([I)V
PLcom/android/server/input/InputManagerService$InputManagerHandler;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/Looper;)V
PLcom/android/server/input/InputManagerService$InputManagerHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/input/InputManagerService$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;)V
PLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService$LocalService;)V
PLcom/android/server/input/InputManagerService$LocalService;->onInputMethodSubtypeChanged(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V
@@ -8015,44 +10434,29 @@ PLcom/android/server/input/InputManagerService;->-wrap5(Lcom/android/server/inpu
PLcom/android/server/input/InputManagerService;->-wrap9(Lcom/android/server/input/InputManagerService;I)V
PLcom/android/server/input/InputManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/input/InputManagerService;->checkInjectEventsPermission(II)Z
-PLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V
PLcom/android/server/input/InputManagerService;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
-PLcom/android/server/input/InputManagerService;->getCurrentKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getDeviceAlias(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getDoubleTapTimeout()I
-PLcom/android/server/input/InputManagerService;->getExcludedDeviceNames()[Ljava/lang/String;
PLcom/android/server/input/InputManagerService;->getHoverTapSlop()I
PLcom/android/server/input/InputManagerService;->getHoverTapTimeout()I
-PLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/InputDevice;
-PLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I
PLcom/android/server/input/InputManagerService;->getInputDevices()[Landroid/view/InputDevice;
PLcom/android/server/input/InputManagerService;->getKeyCodeState(III)I
PLcom/android/server/input/InputManagerService;->getKeyRepeatDelay()I
PLcom/android/server/input/InputManagerService;->getKeyRepeatTimeout()I
-PLcom/android/server/input/InputManagerService;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String;
-PLcom/android/server/input/InputManagerService;->getLayoutDescriptor(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String;
-PLcom/android/server/input/InputManagerService;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;
PLcom/android/server/input/InputManagerService;->getLongPressTimeout()I
PLcom/android/server/input/InputManagerService;->getPointerSpeedSetting()I
PLcom/android/server/input/InputManagerService;->getScanCodeState(III)I
PLcom/android/server/input/InputManagerService;->getShowTouchesSetting(I)I
-PLcom/android/server/input/InputManagerService;->getSwitchState(III)I
PLcom/android/server/input/InputManagerService;->getTouchCalibrationForInputDevice(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;
PLcom/android/server/input/InputManagerService;->getVirtualKeyQuietTimeMillis()I
PLcom/android/server/input/InputManagerService;->handleSwitchInputMethodSubtype(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V
PLcom/android/server/input/InputManagerService;->handleSwitchKeyboardLayout(Landroid/hardware/input/InputDeviceIdentifier;Lcom/android/internal/inputmethod/InputMethodSubtypeHandle;)V
PLcom/android/server/input/InputManagerService;->hasKeys(II[I[Z)Z
-PLcom/android/server/input/InputManagerService;->injectInputEvent(Landroid/view/InputEvent;I)Z
-PLcom/android/server/input/InputManagerService;->injectInputEventInternal(Landroid/view/InputEvent;II)Z
-PLcom/android/server/input/InputManagerService;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J
-PLcom/android/server/input/InputManagerService;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
-PLcom/android/server/input/InputManagerService;->monitor()V
PLcom/android/server/input/InputManagerService;->monitorInput(Ljava/lang/String;)Landroid/view/InputChannel;
PLcom/android/server/input/InputManagerService;->notifyConfigurationChanged(J)V
PLcom/android/server/input/InputManagerService;->notifyInputDevicesChanged([Landroid/view/InputDevice;)V
PLcom/android/server/input/InputManagerService;->onInputDevicesChangedListenerDied(I)V
PLcom/android/server/input/InputManagerService;->registerAccessibilityLargePointerSettingObserver()V
-PLcom/android/server/input/InputManagerService;->registerInputChannel(Landroid/view/InputChannel;Lcom/android/server/input/InputWindowHandle;)V
PLcom/android/server/input/InputManagerService;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V
PLcom/android/server/input/InputManagerService;->registerPointerSpeedSettingObserver()V
PLcom/android/server/input/InputManagerService;->registerShowTouchesSettingObserver()V
@@ -8063,217 +10467,134 @@ PLcom/android/server/input/InputManagerService;->setDisplayViewportsInternal(Lan
PLcom/android/server/input/InputManagerService;->setFocusedApplication(Lcom/android/server/input/InputApplicationHandle;)V
PLcom/android/server/input/InputManagerService;->setInputDispatchMode(ZZ)V
PLcom/android/server/input/InputManagerService;->setPointerSpeedUnchecked(I)V
-PLcom/android/server/input/InputManagerService;->setSystemUiVisibility(I)V
PLcom/android/server/input/InputManagerService;->setWindowManagerCallbacks(Lcom/android/server/input/InputManagerService$WindowManagerCallbacks;)V
PLcom/android/server/input/InputManagerService;->setWiredAccessoryCallbacks(Lcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;)V
PLcom/android/server/input/InputManagerService;->start()V
PLcom/android/server/input/InputManagerService;->systemRunning()V
PLcom/android/server/input/InputManagerService;->unregisterInputChannel(Landroid/view/InputChannel;)V
PLcom/android/server/input/InputManagerService;->updateAccessibilityLargePointerFromSettings()V
-PLcom/android/server/input/InputManagerService;->updateKeyboardLayouts()V
PLcom/android/server/input/InputManagerService;->updatePointerSpeedFromSettings()V
PLcom/android/server/input/InputManagerService;->updateShowTouchesFromSettings()V
-PLcom/android/server/input/InputManagerService;->visitAllKeyboardLayouts(Lcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V
-PLcom/android/server/input/InputWindowHandle;-><init>(Lcom/android/server/input/InputApplicationHandle;Ljava/lang/Object;Landroid/view/IWindow;I)V
-PLcom/android/server/input/InputWindowHandle;->finalize()V
PLcom/android/server/input/PersistentDataStore;-><init>()V
PLcom/android/server/input/PersistentDataStore;->clearState()V
-PLcom/android/server/input/PersistentDataStore;->getCurrentKeyboardLayout(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/input/PersistentDataStore;->getInputDeviceState(Ljava/lang/String;Z)Lcom/android/server/input/PersistentDataStore$InputDeviceState;
PLcom/android/server/input/PersistentDataStore;->getTouchCalibration(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;
PLcom/android/server/input/PersistentDataStore;->load()V
-PLcom/android/server/input/PersistentDataStore;->loadIfNeeded()V
PLcom/android/server/input/PersistentDataStore;->removeUninstalledKeyboardLayouts(Ljava/util/Set;)Z
PLcom/android/server/input/PersistentDataStore;->saveIfNeeded()V
PLcom/android/server/input/PersistentDataStore;->switchKeyboardLayout(Ljava/lang/String;Lcom/android/internal/inputmethod/InputMethodSubtypeHandle;)Z
+PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8$1;-><init>(Ljava/lang/Object;)V
PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;->$m$0(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;-><init>()V
PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/job/GrantedUriPermissions;->checkGrantFlags(I)Z
PLcom/android/server/job/JobPackageTracker$DataSet;-><init>()V
-PLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;J)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->decActiveTop(ILjava/lang/String;J)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
-PLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
-PLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J
+PLcom/android/server/job/JobPackageTracker$DataSet;->decActiveTop(ILjava/lang/String;JI)V
+PLcom/android/server/job/JobPackageTracker$DataSet;->finish(Lcom/android/server/job/JobPackageTracker$DataSet;J)V
PLcom/android/server/job/JobPackageTracker$DataSet;->incActive(ILjava/lang/String;J)V
PLcom/android/server/job/JobPackageTracker$DataSet;->incActiveTop(ILjava/lang/String;J)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->incPending(ILjava/lang/String;J)V
PLcom/android/server/job/JobPackageTracker$PackageEntry;-><init>()V
PLcom/android/server/job/JobPackageTracker$PackageEntry;->getActiveTime(J)J
PLcom/android/server/job/JobPackageTracker$PackageEntry;->getPendingTime(J)J
PLcom/android/server/job/JobPackageTracker;-><init>()V
-PLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;)V
-PLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F
-PLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/JobPackageTracker;->noteConcurrency(II)V
-PLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/JobPackageTracker;->noteNonpending(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V
+PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;-><init>()V
+PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;-><init>(Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;)V
+PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;->toString()Ljava/lang/String;
PLcom/android/server/job/JobSchedulerService$1;-><init>(Lcom/android/server/job/JobSchedulerService;)V
PLcom/android/server/job/JobSchedulerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/job/JobSchedulerService$2;-><init>(Lcom/android/server/job/JobSchedulerService;)V
PLcom/android/server/job/JobSchedulerService$2;->onUidGone(IZ)V
PLcom/android/server/job/JobSchedulerService$2;->onUidIdle(IZ)V
-PLcom/android/server/job/JobSchedulerService$2;->onUidStateChanged(IIJ)V
PLcom/android/server/job/JobSchedulerService$3;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$4;-><init>(Lcom/android/server/job/JobSchedulerService;)V
PLcom/android/server/job/JobSchedulerService$Constants;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/os/Handler;)V
PLcom/android/server/job/JobSchedulerService$Constants;->start(Landroid/content/ContentResolver;)V
PLcom/android/server/job/JobSchedulerService$Constants;->updateConstants()V
PLcom/android/server/job/JobSchedulerService$JobHandler;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/os/Looper;)V
-PLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;-><init>(Lcom/android/server/job/JobSchedulerService;)V
PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->canPersistJobs(II)Z
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(I)V
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancelAll()V
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(ILandroid/app/job/JobInfo;)V
PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getAllPendingJobs()Ljava/util/List;
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(I)Landroid/app/job/JobInfo;
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Landroid/app/job/JobInfo;)I
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
PLcom/android/server/job/JobSchedulerService$LocalService$1;-><init>(Lcom/android/server/job/JobSchedulerService$LocalService;Ljava/util/List;)V
-PLcom/android/server/job/JobSchedulerService$LocalService$1;->process(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/JobSchedulerService$LocalService;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService$LocalService;->getSystemScheduledPendingJobs()Ljava/util/List;
+PLcom/android/server/job/JobSchedulerService$LocalService;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;-><init>(Lcom/android/server/job/JobSchedulerService;)V
PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcess()V
PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->reset()V
PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;-><init>(Lcom/android/server/job/JobSchedulerService;)V
PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->postProcess()V
-PLcom/android/server/job/JobSchedulerService;->-wrap0(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)Z
PLcom/android/server/job/JobSchedulerService;->-wrap2(Lcom/android/server/job/JobSchedulerService;Landroid/content/Intent;)Ljava/lang/String;
PLcom/android/server/job/JobSchedulerService;->-wrap4(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService;->-wrap5(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/JobSchedulerService;->-wrap6(Lcom/android/server/job/JobSchedulerService;)V
PLcom/android/server/job/JobSchedulerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/job/JobSchedulerService;->addOrderedItem(Ljava/util/ArrayList;Ljava/lang/Object;Ljava/util/Comparator;)V
-PLcom/android/server/job/JobSchedulerService;->adjustJobPriority(ILcom/android/server/job/controllers/JobStatus;)I
-PLcom/android/server/job/JobSchedulerService;->cancelJob(II)V
-PLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Ljava/lang/String;)V
PLcom/android/server/job/JobSchedulerService;->cancelJobsForNonExistentUsers()V
-PLcom/android/server/job/JobSchedulerService;->cancelJobsForUid(ILjava/lang/String;)V
-PLcom/android/server/job/JobSchedulerService;->evaluateJobPriorityLocked(Lcom/android/server/job/controllers/JobStatus;)I
-PLcom/android/server/job/JobSchedulerService;->findJobContextIdFromMap(Lcom/android/server/job/controllers/JobStatus;[Lcom/android/server/job/controllers/JobStatus;)I
+PLcom/android/server/job/JobSchedulerService;->cancelJobsForPackageAndUid(Ljava/lang/String;I)V
PLcom/android/server/job/JobSchedulerService;->getJobStore()Lcom/android/server/job/JobStore;
PLcom/android/server/job/JobSchedulerService;->getLock()Ljava/lang/Object;
PLcom/android/server/job/JobSchedulerService;->getPackageName(Landroid/content/Intent;)Ljava/lang/String;
-PLcom/android/server/job/JobSchedulerService;->getPendingJob(II)Landroid/app/job/JobInfo;
-PLcom/android/server/job/JobSchedulerService;->getPendingJobs(I)Ljava/util/List;
-PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;
PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;
-PLcom/android/server/job/JobSchedulerService;->lambda$-com_android_server_job_JobSchedulerService_21790(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)I
+PLcom/android/server/job/JobSchedulerService;->lambda$-com_android_server_job_JobSchedulerService_21827(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)I
PLcom/android/server/job/JobSchedulerService;->maybeQueueReadyJobsForExecutionLocked()V
-PLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V
-PLcom/android/server/job/JobSchedulerService;->noteJobsNonpending(Ljava/util/List;)V
PLcom/android/server/job/JobSchedulerService;->noteJobsPending(Ljava/util/List;)V
PLcom/android/server/job/JobSchedulerService;->onBootPhase(I)V
PLcom/android/server/job/JobSchedulerService;->onControllerStateChanged()V
-PLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V
PLcom/android/server/job/JobSchedulerService;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/JobSchedulerService;->onStart()V
PLcom/android/server/job/JobSchedulerService;->onStartUser(I)V
PLcom/android/server/job/JobSchedulerService;->onUnlockUser(I)V
-PLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V
-PLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;)I
-PLcom/android/server/job/JobSchedulerService;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)Z
-PLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z
-PLcom/android/server/job/JobSchedulerService;->updateUidState(II)V
-PLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V
-PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V
PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStopMessage(IZ)V
-PLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V
+PLcom/android/server/job/JobServiceContext$JobCallback;->completeWork(II)Z
+PLcom/android/server/job/JobServiceContext$JobCallback;->dequeueWork(I)Landroid/app/job/JobWorkItem;
PLcom/android/server/job/JobServiceContext$JobServiceHandler;-><init>(Lcom/android/server/job/JobServiceContext;Landroid/os/Looper;)V
PLcom/android/server/job/JobServiceContext;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobCompletedListener;Landroid/os/Looper;)V
PLcom/android/server/job/JobServiceContext;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Landroid/os/Looper;)V
-PLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V
+PLcom/android/server/job/JobServiceContext;->assertCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)V
PLcom/android/server/job/JobServiceContext;->cancelExecutingJobLocked(ILjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->clearPreferredUid()V
-PLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->doAcknowledgeStartMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
PLcom/android/server/job/JobServiceContext;->doAcknowledgeStopMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
-PLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V
PLcom/android/server/job/JobServiceContext;->doCancelLocked(ILjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
-PLcom/android/server/job/JobServiceContext;->doServiceBoundLocked()V
-PLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobServiceContext;->getPreferredUid()I
PLcom/android/server/job/JobServiceContext;->handleCancelLocked(Ljava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V
-PLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V
-PLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/job/JobServiceContext;->removeOpTimeOutLocked()V
-PLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V
PLcom/android/server/job/JobServiceContext;->sendStopMessageLocked(Ljava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->verifyCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z
+PLcom/android/server/job/JobStore$1$1;-><init>(Lcom/android/server/job/JobStore$1;Ljava/util/List;)V
+PLcom/android/server/job/JobStore$1;-><init>(Lcom/android/server/job/JobStore;)V
PLcom/android/server/job/JobStore$JobSet;-><init>()V
-PLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I
-PLcom/android/server/job/JobStore$JobSet;->forEachJob(ILcom/android/server/job/JobStore$JobStatusFunctor;)V
-PLcom/android/server/job/JobStore$JobSet;->get(II)Lcom/android/server/job/controllers/JobStatus;
-PLcom/android/server/job/JobStore$JobSet;->getJobsByUid(I)Ljava/util/List;
-PLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
PLcom/android/server/job/JobStore$JobSet;->removeJobsOfNonUsers([I)V
-PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;-><init>(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$JobSet;)V
-PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildBuilderFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/job/JobInfo$Builder;
-PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V
+PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;-><init>(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$JobSet;Z)V
PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->maybeBuildBackoffPolicyFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(Ljava/io/FileInputStream;)Ljava/util/List;
-PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V
-PLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable$1;-><init>(Lcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;Ljava/util/List;)V
-PLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;-><init>(Lcom/android/server/job/JobStore;)V
-PLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;-><init>(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;)V
-PLcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable;->run()V
PLcom/android/server/job/JobStore;->-get0(Lcom/android/server/job/JobStore;)Landroid/util/AtomicFile;
PLcom/android/server/job/JobStore;->-set0(Lcom/android/server/job/JobStore;I)I
+PLcom/android/server/job/JobStore;->-wrap0(Landroid/util/Pair;J)Landroid/util/Pair;
PLcom/android/server/job/JobStore;-><init>(Landroid/content/Context;Ljava/lang/Object;Ljava/io/File;)V
-PLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobStore;->containsJob(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobStore;->countJobsForUid(I)I
PLcom/android/server/job/JobStore;->forEachJob(ILcom/android/server/job/JobStore$JobStatusFunctor;)V
-PLcom/android/server/job/JobStore;->forEachJob(Lcom/android/server/job/JobStore$JobStatusFunctor;)V
-PLcom/android/server/job/JobStore;->getJobByUidAndJobId(II)Lcom/android/server/job/controllers/JobStatus;
PLcom/android/server/job/JobStore;->getJobsByUid(I)Ljava/util/List;
+PLcom/android/server/job/JobStore;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
PLcom/android/server/job/JobStore;->initAndGet(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/JobStore;
-PLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V
-PLcom/android/server/job/JobStore;->readJobMapFromDisk(Lcom/android/server/job/JobStore$JobSet;)V
-PLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z
+PLcom/android/server/job/JobStore;->jobTimesInflatedValid()Z
+PLcom/android/server/job/JobStore;->readJobMapFromDisk(Lcom/android/server/job/JobStore$JobSet;Z)V
PLcom/android/server/job/JobStore;->removeJobsOfNonUsers([I)V
PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;-><init>(Lcom/android/server/job/controllers/AppIdleController;)V
PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;-><init>(Lcom/android/server/job/controllers/AppIdleController;Lcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;)V
-PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V
PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->onParoleStateChanged(Z)V
PLcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc;-><init>(Lcom/android/server/job/controllers/AppIdleController;)V
-PLcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc;->process(Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc;-><init>(ILjava/lang/String;Z)V
PLcom/android/server/job/controllers/AppIdleController;->-get0(Lcom/android/server/job/controllers/AppIdleController;)Lcom/android/server/job/JobSchedulerService;
PLcom/android/server/job/controllers/AppIdleController;->-get1(Lcom/android/server/job/controllers/AppIdleController;)Landroid/app/usage/UsageStatsManagerInternal;
PLcom/android/server/job/controllers/AppIdleController;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/content/Context;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/AppIdleController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/AppIdleController;
-PLcom/android/server/job/controllers/AppIdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/AppIdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
PLcom/android/server/job/controllers/AppIdleController;->setAppIdleParoleOn(Z)V
PLcom/android/server/job/controllers/BatteryController$ChargingTracker;-><init>(Lcom/android/server/job/controllers/BatteryController;)V
PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->isBatteryNotLow()Z
PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->isOnStablePower()Z
+PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->onReceiveInternal(Landroid/content/Intent;)V
PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->startTracking()V
+PLcom/android/server/job/controllers/BatteryController;->-wrap0(Lcom/android/server/job/controllers/BatteryController;)V
PLcom/android/server/job/controllers/BatteryController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/BatteryController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/BatteryController;
-PLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
PLcom/android/server/job/controllers/ConnectivityController$1;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
PLcom/android/server/job/controllers/ConnectivityController$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
PLcom/android/server/job/controllers/ConnectivityController$2;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
PLcom/android/server/job/controllers/ConnectivityController$2;->onMeteredIfacesChanged([Ljava/lang/String;)V
PLcom/android/server/job/controllers/ConnectivityController$2;->onUidRulesChanged(II)V
-PLcom/android/server/job/controllers/ConnectivityController;->-wrap0(Lcom/android/server/job/controllers/ConnectivityController;ILandroid/net/NetworkCapabilities;)V
+PLcom/android/server/job/controllers/ConnectivityController;->-wrap0(Lcom/android/server/job/controllers/ConnectivityController;I)V
PLcom/android/server/job/controllers/ConnectivityController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/ConnectivityController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/ConnectivityController;
-PLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
PLcom/android/server/job/controllers/ContentObserverController$JobInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->detachLocked()V
PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->scheduleLocked()V
@@ -8285,86 +10606,52 @@ PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;-
PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;->run()V
PLcom/android/server/job/controllers/ContentObserverController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/ContentObserverController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/ContentObserverController;
-PLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-PLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/ContentObserverController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController$1;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController$2;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/content/Context;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/DeviceIdleJobsController;
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/IdleController$IdlenessTracker;-><init>(Lcom/android/server/job/controllers/IdleController;)V
PLcom/android/server/job/controllers/IdleController$IdlenessTracker;->isIdle()Z
PLcom/android/server/job/controllers/IdleController$IdlenessTracker;->startTracking()V
PLcom/android/server/job/controllers/IdleController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/IdleController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/IdleController;
PLcom/android/server/job/controllers/IdleController;->initIdleStateTracking()V
-PLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-PLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;JJ)V
-PLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJI)V
-PLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z
-PLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;)Lcom/android/server/job/controllers/JobStatus;
-PLcom/android/server/job/controllers/JobStatus;->getBatteryName()Ljava/lang/String;
+PLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;JJJJLandroid/util/Pair;)V
+PLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJIJJ)V
+PLcom/android/server/job/controllers/JobStatus;->clearPersistedUtcTimes()V
+PLcom/android/server/job/controllers/JobStatus;->completeWorkLocked(Landroid/app/IActivityManager;I)Z
PLcom/android/server/job/controllers/JobStatus;->getTag()Ljava/lang/String;
PLcom/android/server/job/controllers/JobStatus;->getTriggerContentMaxDelay()J
PLcom/android/server/job/controllers/JobStatus;->getTriggerContentUpdateDelay()J
-PLcom/android/server/job/controllers/JobStatus;->getUserId()I
-PLcom/android/server/job/controllers/JobStatus;->hasConnectivityConstraint()Z
-PLcom/android/server/job/controllers/JobStatus;->hasContentTriggerConstraint()Z
PLcom/android/server/job/controllers/JobStatus;->hasExecutingWorkLocked()Z
-PLcom/android/server/job/controllers/JobStatus;->hasPowerConstraint()Z
-PLcom/android/server/job/controllers/JobStatus;->hasStorageNotLowConstraint()Z
PLcom/android/server/job/controllers/JobStatus;->hasWorkLocked()Z
PLcom/android/server/job/controllers/JobStatus;->isPreparedLocked()Z
-PLcom/android/server/job/controllers/JobStatus;->matches(II)Z
-PLcom/android/server/job/controllers/JobStatus;->prepareLocked(Landroid/app/IActivityManager;)V
-PLcom/android/server/job/controllers/JobStatus;->setAppNotIdleConstraintSatisfied(Z)Z
PLcom/android/server/job/controllers/JobStatus;->setBatteryNotLowConstraintSatisfied(Z)Z
PLcom/android/server/job/controllers/JobStatus;->setChargingConstraintSatisfied(Z)Z
-PLcom/android/server/job/controllers/JobStatus;->setConnectivityConstraintSatisfied(Z)Z
PLcom/android/server/job/controllers/JobStatus;->setContentTriggerConstraintSatisfied(Z)Z
PLcom/android/server/job/controllers/JobStatus;->setDeadlineConstraintSatisfied(Z)Z
-PLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(ZZ)Z
PLcom/android/server/job/controllers/JobStatus;->setIdleConstraintSatisfied(Z)Z
-PLcom/android/server/job/controllers/JobStatus;->setMeteredConstraintSatisfied(Z)Z
-PLcom/android/server/job/controllers/JobStatus;->setNotRoamingConstraintSatisfied(Z)Z
-PLcom/android/server/job/controllers/JobStatus;->setTimingDelayConstraintSatisfied(Z)Z
-PLcom/android/server/job/controllers/JobStatus;->setTrackingController(I)V
-PLcom/android/server/job/controllers/JobStatus;->setUnmeteredConstraintSatisfied(Z)Z
-PLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Landroid/app/IActivityManager;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/JobStatus;->ungrantWorkList(Landroid/app/IActivityManager;Ljava/util/ArrayList;)V
-PLcom/android/server/job/controllers/JobStatus;->unprepareLocked(Landroid/app/IActivityManager;)V
+PLcom/android/server/job/controllers/JobStatus;->ungrantWorkItem(Landroid/app/IActivityManager;Landroid/app/job/JobWorkItem;)V
PLcom/android/server/job/controllers/StateController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V
-PLcom/android/server/job/controllers/StateController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/StateController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
PLcom/android/server/job/controllers/StorageController$StorageTracker;-><init>(Lcom/android/server/job/controllers/StorageController;)V
PLcom/android/server/job/controllers/StorageController$StorageTracker;->startTracking()V
PLcom/android/server/job/controllers/StorageController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/StorageController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/StorageController;
-PLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
PLcom/android/server/job/controllers/TimeController$1;-><init>(Lcom/android/server/job/controllers/TimeController;)V
+PLcom/android/server/job/controllers/TimeController$1;->onAlarm()V
PLcom/android/server/job/controllers/TimeController$2;-><init>(Lcom/android/server/job/controllers/TimeController;)V
PLcom/android/server/job/controllers/TimeController$2;->onAlarm()V
+PLcom/android/server/job/controllers/TimeController;->-wrap0(Lcom/android/server/job/controllers/TimeController;)V
PLcom/android/server/job/controllers/TimeController;->-wrap1(Lcom/android/server/job/controllers/TimeController;)V
PLcom/android/server/job/controllers/TimeController;-><init>(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V
PLcom/android/server/job/controllers/TimeController;->canStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V
PLcom/android/server/job/controllers/TimeController;->ensureAlarmServiceLocked()V
-PLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
PLcom/android/server/job/controllers/TimeController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/TimeController;
-PLcom/android/server/job/controllers/TimeController;->maybeAdjustAlarmTime(J)J
-PLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
PLcom/android/server/job/controllers/TimeController;->maybeUpdateAlarmsLocked(JJI)V
PLcom/android/server/job/controllers/TimeController;->setDeadlineExpiredAlarmLocked(JI)V
-PLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JI)V
-PLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;JI)V
-PLcom/android/server/lights/LightsService$LightImpl;->setColor(I)V
PLcom/android/server/lights/LightsService$LightImpl;->turnOff()V
PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$0(I)Z
PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$1(I)Z
@@ -8380,10 +10667,14 @@ PLcom/android/server/location/ActivityRecognitionProxy;-><init>(Landroid/content
PLcom/android/server/location/ActivityRecognitionProxy;->bindProvider()V
PLcom/android/server/location/ActivityRecognitionProxy;->createAndBind(Landroid/content/Context;Landroid/os/Handler;ZLandroid/hardware/location/ActivityRecognitionHardware;III)Lcom/android/server/location/ActivityRecognitionProxy;
PLcom/android/server/location/ComprehensiveCountryDetector$1;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V
+PLcom/android/server/location/ComprehensiveCountryDetector$1;->onCountryDetected(Landroid/location/Country;)V
PLcom/android/server/location/ComprehensiveCountryDetector$2;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;Landroid/location/Country;Landroid/location/Country;ZZ)V
PLcom/android/server/location/ComprehensiveCountryDetector$2;->run()V
PLcom/android/server/location/ComprehensiveCountryDetector$3;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V
PLcom/android/server/location/ComprehensiveCountryDetector$4;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V
+PLcom/android/server/location/ComprehensiveCountryDetector;->-set1(Lcom/android/server/location/ComprehensiveCountryDetector;Landroid/location/Country;)Landroid/location/Country;
+PLcom/android/server/location/ComprehensiveCountryDetector;->-wrap0(Lcom/android/server/location/ComprehensiveCountryDetector;ZZ)Landroid/location/Country;
+PLcom/android/server/location/ComprehensiveCountryDetector;->-wrap2(Lcom/android/server/location/ComprehensiveCountryDetector;)V
PLcom/android/server/location/ComprehensiveCountryDetector;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/ComprehensiveCountryDetector;->addPhoneStateListener()V
PLcom/android/server/location/ComprehensiveCountryDetector;->addToLogs(Landroid/location/Country;)V
@@ -8398,26 +10689,30 @@ PLcom/android/server/location/ComprehensiveCountryDetector;->getSimBasedCountry(
PLcom/android/server/location/ComprehensiveCountryDetector;->isAirplaneModeOff()Z
PLcom/android/server/location/ComprehensiveCountryDetector;->isGeoCoderImplemented()Z
PLcom/android/server/location/ComprehensiveCountryDetector;->isNetworkCountryCodeAvailable()Z
+PLcom/android/server/location/ComprehensiveCountryDetector;->notifyIfCountryChanged(Landroid/location/Country;Landroid/location/Country;)V
PLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetection(Landroid/location/Country;Landroid/location/Country;ZZ)V
PLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetectionAsync(Landroid/location/Country;Landroid/location/Country;ZZ)V
PLcom/android/server/location/ComprehensiveCountryDetector;->scheduleLocationRefresh()V
PLcom/android/server/location/ComprehensiveCountryDetector;->setCountryListener(Landroid/location/CountryListener;)V
PLcom/android/server/location/ComprehensiveCountryDetector;->startLocationBasedDetector(Landroid/location/CountryListener;)V
+PLcom/android/server/location/ComprehensiveCountryDetector;->stopLocationBasedDetector()V
PLcom/android/server/location/ContextHubService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/location/ContextHubService;->addAppInstance(IIJI)I
PLcom/android/server/location/ContextHubService;->checkPermissions()V
-PLcom/android/server/location/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I
PLcom/android/server/location/ContextHubService;->getContextHubHandles()[I
PLcom/android/server/location/ContextHubService;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo;
-PLcom/android/server/location/ContextHubService;->onMessageReceipt([I[B)I
+PLcom/android/server/location/ContextHubService;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo;
PLcom/android/server/location/ContextHubService;->registerCallback(Landroid/hardware/location/IContextHubCallback;)I
PLcom/android/server/location/ContextHubService;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I
PLcom/android/server/location/CountryDetectorBase;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/CountryDetectorBase;->notifyListener(Landroid/location/Country;)V
PLcom/android/server/location/CountryDetectorBase;->setCountryListener(Landroid/location/CountryListener;)V
PLcom/android/server/location/FlpHardwareProvider;->isSupported()Z
PLcom/android/server/location/GeocoderProxy;-><init>(Landroid/content/Context;IIILandroid/os/Handler;)V
PLcom/android/server/location/GeocoderProxy;->bind()Z
PLcom/android/server/location/GeocoderProxy;->createAndBind(Landroid/content/Context;IIILandroid/os/Handler;)Lcom/android/server/location/GeocoderProxy;
+PLcom/android/server/location/GeocoderProxy;->getConnectedPackageName()Ljava/lang/String;
+PLcom/android/server/location/GeocoderProxy;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
+PLcom/android/server/location/GeocoderProxy;->getService()Landroid/location/IGeocodeProvider;
PLcom/android/server/location/GeofenceManager$1;-><init>(Lcom/android/server/location/GeofenceManager;Landroid/os/Handler;)V
PLcom/android/server/location/GeofenceManager$GeofenceHandler;-><init>(Lcom/android/server/location/GeofenceManager;)V
PLcom/android/server/location/GeofenceManager;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationBlacklist;)V
@@ -8450,9 +10745,9 @@ PLcom/android/server/location/GnssLocationProvider$11;->isAvailableInPlatform()Z
PLcom/android/server/location/GnssLocationProvider$11;->isGpsEnabled()Z
PLcom/android/server/location/GnssLocationProvider$12;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
PLcom/android/server/location/GnssLocationProvider$12;->run()V
-PLcom/android/server/location/GnssLocationProvider$14;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
-PLcom/android/server/location/GnssLocationProvider$15;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
PLcom/android/server/location/GnssLocationProvider$16;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+PLcom/android/server/location/GnssLocationProvider$17;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+PLcom/android/server/location/GnssLocationProvider$18;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
PLcom/android/server/location/GnssLocationProvider$1;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
PLcom/android/server/location/GnssLocationProvider$1;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
PLcom/android/server/location/GnssLocationProvider$1;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
@@ -8467,11 +10762,11 @@ PLcom/android/server/location/GnssLocationProvider$6;-><init>(Lcom/android/serve
PLcom/android/server/location/GnssLocationProvider$6;->isHardwareGeofenceSupported()Z
PLcom/android/server/location/GnssLocationProvider$7;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
PLcom/android/server/location/GnssLocationProvider$8;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
-PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_24960(I)Z
-PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25037(I)Z
-PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25109(I)Z
-PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25183(I)Z
-PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25279(I)Z
+PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25217(I)Z
+PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25294(I)Z
+PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25366(I)Z
+PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25440(I)Z
+PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25536(I)Z
PLcom/android/server/location/GnssLocationProvider$9;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Handler;)V
PLcom/android/server/location/GnssLocationProvider$9;->isAvailableInPlatform()Z
PLcom/android/server/location/GnssLocationProvider$9;->isGpsEnabled()Z
@@ -8480,24 +10775,24 @@ PLcom/android/server/location/GnssLocationProvider$BackOff;->reset()V
PLcom/android/server/location/GnssLocationProvider$GpsRequest;-><init>(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;-><init>(Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/GnssLocationProvider$NetworkLocationListener;)V
+PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;->onLocationChanged(Landroid/location/Location;)V
PLcom/android/server/location/GnssLocationProvider$ProviderHandler;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Looper;)V
PLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleInitialize()V
-PLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/location/GnssLocationProvider;->-get0()Z
PLcom/android/server/location/GnssLocationProvider;->-get1(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/BroadcastReceiver;
-PLcom/android/server/location/GnssLocationProvider;->-get11(Lcom/android/server/location/GnssLocationProvider;)Landroid/net/ConnectivityManager$NetworkCallback;
-PLcom/android/server/location/GnssLocationProvider;->-get12(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssLocationProvider$BackOff;
-PLcom/android/server/location/GnssLocationProvider;->-get13(Lcom/android/server/location/GnssLocationProvider;)Landroid/util/NtpTrustedTime;
-PLcom/android/server/location/GnssLocationProvider;->-get14(Lcom/android/server/location/GnssLocationProvider;)Z
-PLcom/android/server/location/GnssLocationProvider;->-get15(Lcom/android/server/location/GnssLocationProvider;)Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;
-PLcom/android/server/location/GnssLocationProvider;->-get16(Lcom/android/server/location/GnssLocationProvider;)Ljava/util/Properties;
-PLcom/android/server/location/GnssLocationProvider;->-get17(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/location/GnssLocationProvider;->-get10(Lcom/android/server/location/GnssLocationProvider;)I
+PLcom/android/server/location/GnssLocationProvider;->-get11(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssStatusListenerHelper;
+PLcom/android/server/location/GnssLocationProvider;->-get13(Lcom/android/server/location/GnssLocationProvider;)Landroid/net/ConnectivityManager$NetworkCallback;
+PLcom/android/server/location/GnssLocationProvider;->-get14(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssLocationProvider$BackOff;
+PLcom/android/server/location/GnssLocationProvider;->-get15(Lcom/android/server/location/GnssLocationProvider;)Landroid/util/NtpTrustedTime;
+PLcom/android/server/location/GnssLocationProvider;->-get16(Lcom/android/server/location/GnssLocationProvider;)Z
+PLcom/android/server/location/GnssLocationProvider;->-get17(Lcom/android/server/location/GnssLocationProvider;)Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;
+PLcom/android/server/location/GnssLocationProvider;->-get18(Lcom/android/server/location/GnssLocationProvider;)Ljava/util/Properties;
+PLcom/android/server/location/GnssLocationProvider;->-get19(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/PowerManager$WakeLock;
PLcom/android/server/location/GnssLocationProvider;->-get2(Lcom/android/server/location/GnssLocationProvider;)Landroid/net/ConnectivityManager;
PLcom/android/server/location/GnssLocationProvider;->-get3(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/Context;
PLcom/android/server/location/GnssLocationProvider;->-get4(Lcom/android/server/location/GnssLocationProvider;)I
-PLcom/android/server/location/GnssLocationProvider;->-get7(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/Handler;
-PLcom/android/server/location/GnssLocationProvider;->-get8(Lcom/android/server/location/GnssLocationProvider;)I
-PLcom/android/server/location/GnssLocationProvider;->-get9(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssStatusListenerHelper;
+PLcom/android/server/location/GnssLocationProvider;->-get9(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/Handler;
PLcom/android/server/location/GnssLocationProvider;->-set1(Lcom/android/server/location/GnssLocationProvider;I)I
PLcom/android/server/location/GnssLocationProvider;->-wrap1()Z
PLcom/android/server/location/GnssLocationProvider;->-wrap11(I)Z
@@ -8511,6 +10806,7 @@ PLcom/android/server/location/GnssLocationProvider;->-wrap25(Lcom/android/server
PLcom/android/server/location/GnssLocationProvider;->-wrap26(Lcom/android/server/location/GnssLocationProvider;)V
PLcom/android/server/location/GnssLocationProvider;->-wrap29(Lcom/android/server/location/GnssLocationProvider;Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
PLcom/android/server/location/GnssLocationProvider;->-wrap3()Z
+PLcom/android/server/location/GnssLocationProvider;->-wrap30(Lcom/android/server/location/GnssLocationProvider;Landroid/location/Location;)V
PLcom/android/server/location/GnssLocationProvider;->-wrap31(Lcom/android/server/location/GnssLocationProvider;Landroid/net/Network;)V
PLcom/android/server/location/GnssLocationProvider;->-wrap34(Lcom/android/server/location/GnssLocationProvider;JJI)V
PLcom/android/server/location/GnssLocationProvider;->-wrap38(Lcom/android/server/location/GnssLocationProvider;Landroid/content/Context;Ljava/util/Properties;)V
@@ -8548,21 +10844,17 @@ PLcom/android/server/location/GnssLocationProvider;->loadPropertiesFromFile(Ljav
PLcom/android/server/location/GnssLocationProvider;->loadPropertiesFromResource(Landroid/content/Context;Ljava/util/Properties;)V
PLcom/android/server/location/GnssLocationProvider;->messageIdAsString(I)Ljava/lang/String;
PLcom/android/server/location/GnssLocationProvider;->reloadGpsProperties(Landroid/content/Context;Ljava/util/Properties;)V
-PLcom/android/server/location/GnssLocationProvider;->reportNmea(J)V
PLcom/android/server/location/GnssLocationProvider;->reportStatus(I)V
-PLcom/android/server/location/GnssLocationProvider;->reportSvStatus()V
PLcom/android/server/location/GnssLocationProvider;->requestUtcTime()V
-PLcom/android/server/location/GnssLocationProvider;->sendMessage(IILjava/lang/Object;)V
PLcom/android/server/location/GnssLocationProvider;->setEngineCapabilities(I)V
PLcom/android/server/location/GnssLocationProvider;->setGnssYearOfHardware(I)V
+PLcom/android/server/location/GnssLocationProvider;->setLocationExtras(Landroid/os/Bundle;)V
PLcom/android/server/location/GnssLocationProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
PLcom/android/server/location/GnssLocationProvider;->setSuplHostPort(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/location/GnssLocationProvider;->startNavigating(Z)V
PLcom/android/server/location/GnssLocationProvider;->stopNavigating()V
PLcom/android/server/location/GnssLocationProvider;->subscriptionOrSimChanged(Landroid/content/Context;)V
PLcom/android/server/location/GnssLocationProvider;->updateClientUids(Landroid/os/WorkSource;)V
-PLcom/android/server/location/GnssLocationProvider;->updateRequirements()V
-PLcom/android/server/location/GnssLocationProvider;->updateStatus(IIII)V
PLcom/android/server/location/GnssLocationProvider;->xtraDownloadRequest()V
PLcom/android/server/location/GnssMeasurementsProvider;-><init>(Landroid/os/Handler;)V
PLcom/android/server/location/GnssMeasurementsProvider;->onCapabilitiesUpdated(Z)V
@@ -8578,38 +10870,45 @@ PLcom/android/server/location/GnssStatusListenerHelper$1;->execute(Landroid/os/I
PLcom/android/server/location/GnssStatusListenerHelper$2;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;)V
PLcom/android/server/location/GnssStatusListenerHelper$2;->execute(Landroid/location/IGnssStatusListener;)V
PLcom/android/server/location/GnssStatusListenerHelper$2;->execute(Landroid/os/IInterface;)V
-PLcom/android/server/location/GnssStatusListenerHelper$4;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;I[I[F[F[F[F)V
-PLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/location/IGnssStatusListener;)V
-PLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/os/IInterface;)V
-PLcom/android/server/location/GnssStatusListenerHelper$5;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;JLjava/lang/String;)V
-PLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/location/IGnssStatusListener;)V
-PLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/os/IInterface;)V
PLcom/android/server/location/GnssStatusListenerHelper;-><init>(Landroid/os/Handler;)V
PLcom/android/server/location/GnssStatusListenerHelper;->getHandlerOperation(I)Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;
-PLcom/android/server/location/GnssStatusListenerHelper;->onNmeaReceived(JLjava/lang/String;)V
PLcom/android/server/location/GnssStatusListenerHelper;->onStatusChanged(Z)V
-PLcom/android/server/location/GnssStatusListenerHelper;->onSvStatusChanged(I[I[F[F[F[F)V
PLcom/android/server/location/GnssStatusListenerHelper;->registerWithService()Z
+PLcom/android/server/location/GnssStatusListenerHelper;->unregisterFromService()V
PLcom/android/server/location/LocationBasedCountryDetector$1;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;)V
PLcom/android/server/location/LocationBasedCountryDetector$2;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;)V
+PLcom/android/server/location/LocationBasedCountryDetector$2;->run()V
+PLcom/android/server/location/LocationBasedCountryDetector$3;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;Landroid/location/Location;)V
+PLcom/android/server/location/LocationBasedCountryDetector$3;->run()V
+PLcom/android/server/location/LocationBasedCountryDetector;->-wrap0(Lcom/android/server/location/LocationBasedCountryDetector;Landroid/location/Location;)V
PLcom/android/server/location/LocationBasedCountryDetector;-><init>(Landroid/content/Context;)V
PLcom/android/server/location/LocationBasedCountryDetector;->detectCountry()Landroid/location/Country;
+PLcom/android/server/location/LocationBasedCountryDetector;->getCountryFromLocation(Landroid/location/Location;)Ljava/lang/String;
PLcom/android/server/location/LocationBasedCountryDetector;->getEnabledProviders()Ljava/util/List;
+PLcom/android/server/location/LocationBasedCountryDetector;->getLastKnownLocation()Landroid/location/Location;
PLcom/android/server/location/LocationBasedCountryDetector;->getQueryLocationTimeout()J
PLcom/android/server/location/LocationBasedCountryDetector;->isAcceptableProvider(Ljava/lang/String;)Z
+PLcom/android/server/location/LocationBasedCountryDetector;->queryCountryCode(Landroid/location/Location;)V
PLcom/android/server/location/LocationBasedCountryDetector;->registerListener(Ljava/lang/String;Landroid/location/LocationListener;)V
+PLcom/android/server/location/LocationBasedCountryDetector;->stop()V
+PLcom/android/server/location/LocationBasedCountryDetector;->unregisterListener(Landroid/location/LocationListener;)V
PLcom/android/server/location/LocationBlacklist;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
PLcom/android/server/location/LocationBlacklist;->getStringArrayLocked(Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/location/LocationBlacklist;->inWhitelist(Ljava/lang/String;)Z
PLcom/android/server/location/LocationBlacklist;->init()V
-PLcom/android/server/location/LocationBlacklist;->isBlacklisted(Ljava/lang/String;)Z
PLcom/android/server/location/LocationBlacklist;->reloadBlacklist()V
PLcom/android/server/location/LocationBlacklist;->reloadBlacklistLocked()V
PLcom/android/server/location/LocationFudger$1;-><init>(Lcom/android/server/location/LocationFudger;Landroid/os/Handler;)V
PLcom/android/server/location/LocationFudger;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/location/LocationFudger;->addCoarseLocationExtraLocked(Landroid/location/Location;)Landroid/location/Location;
+PLcom/android/server/location/LocationFudger;->createCoarseLocked(Landroid/location/Location;)Landroid/location/Location;
PLcom/android/server/location/LocationFudger;->loadCoarseAccuracy()F
+PLcom/android/server/location/LocationFudger;->metersToDegreesLatitude(D)D
+PLcom/android/server/location/LocationFudger;->metersToDegreesLongitude(DD)D
PLcom/android/server/location/LocationFudger;->nextOffsetLocked()D
PLcom/android/server/location/LocationFudger;->setAccuracyInMetersLocked(F)V
+PLcom/android/server/location/LocationFudger;->updateRandomOffsetLocked()V
+PLcom/android/server/location/LocationFudger;->wrapLatitude(D)D
+PLcom/android/server/location/LocationFudger;->wrapLongitude(D)D
PLcom/android/server/location/LocationProviderProxy$1;-><init>(Lcom/android/server/location/LocationProviderProxy;)V
PLcom/android/server/location/LocationProviderProxy$1;->run()V
PLcom/android/server/location/LocationProviderProxy;->-get0()Z
@@ -8623,9 +10922,13 @@ PLcom/android/server/location/LocationProviderProxy;-><init>(Landroid/content/Co
PLcom/android/server/location/LocationProviderProxy;->bind()Z
PLcom/android/server/location/LocationProviderProxy;->createAndBind(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Handler;)Lcom/android/server/location/LocationProviderProxy;
PLcom/android/server/location/LocationProviderProxy;->enable()V
-PLcom/android/server/location/LocationProviderProxy;->getName()Ljava/lang/String;
+PLcom/android/server/location/LocationProviderProxy;->getConnectedPackageName()Ljava/lang/String;
+PLcom/android/server/location/LocationProviderProxy;->getProperties()Lcom/android/internal/location/ProviderProperties;
PLcom/android/server/location/LocationProviderProxy;->getService()Lcom/android/internal/location/ILocationProvider;
+PLcom/android/server/location/LocationProviderProxy;->getStatus(Landroid/os/Bundle;)I
+PLcom/android/server/location/LocationProviderProxy;->getStatusUpdateTime()J
PLcom/android/server/location/LocationProviderProxy;->isEnabled()Z
+PLcom/android/server/location/LocationProviderProxy;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->equals(Ljava/lang/Object;)Z
PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->hashCode()I
@@ -8641,23 +10944,35 @@ PLcom/android/server/location/LocationRequestStatistics;->stopRequesting(Ljava/l
PLcom/android/server/location/PassiveProvider;-><init>(Landroid/location/ILocationManager;)V
PLcom/android/server/location/PassiveProvider;->getName()Ljava/lang/String;
PLcom/android/server/location/PassiveProvider;->getProperties()Lcom/android/internal/location/ProviderProperties;
+PLcom/android/server/location/PassiveProvider;->getStatus(Landroid/os/Bundle;)I
+PLcom/android/server/location/PassiveProvider;->getStatusUpdateTime()J
PLcom/android/server/location/PassiveProvider;->isEnabled()Z
PLcom/android/server/location/PassiveProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
-PLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;-><init>(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
-PLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;->run()V
+PLcom/android/server/location/PassiveProvider;->updateLocation(Landroid/location/Location;)V
+PLcom/android/server/location/RemoteListenerHelper$1;-><init>(Lcom/android/server/location/RemoteListenerHelper;)V
+PLcom/android/server/location/RemoteListenerHelper$1;->run()V
+PLcom/android/server/location/RemoteListenerHelper$2;-><init>(Lcom/android/server/location/RemoteListenerHelper;)V
+PLcom/android/server/location/RemoteListenerHelper$2;->run()V
PLcom/android/server/location/RemoteListenerHelper$LinkedListener;-><init>(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;)V
-PLcom/android/server/location/RemoteListenerHelper$LinkedListener;->getUnderlyingListener()Landroid/os/IInterface;
+PLcom/android/server/location/RemoteListenerHelper$LinkedListener;->binderDied()V
+PLcom/android/server/location/RemoteListenerHelper;->-get1(Lcom/android/server/location/RemoteListenerHelper;)Z
+PLcom/android/server/location/RemoteListenerHelper;->-get3(Lcom/android/server/location/RemoteListenerHelper;)Ljava/lang/String;
+PLcom/android/server/location/RemoteListenerHelper;->-set0(Lcom/android/server/location/RemoteListenerHelper;Z)Z
PLcom/android/server/location/RemoteListenerHelper;-><init>(Landroid/os/Handler;Ljava/lang/String;)V
PLcom/android/server/location/RemoteListenerHelper;->addListener(Landroid/os/IInterface;)Z
PLcom/android/server/location/RemoteListenerHelper;->calculateCurrentResultUnsafe()I
-PLcom/android/server/location/RemoteListenerHelper;->foreach(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
-PLcom/android/server/location/RemoteListenerHelper;->foreachUnsafe(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
-PLcom/android/server/location/RemoteListenerHelper;->post(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
PLcom/android/server/location/RemoteListenerHelper;->removeListener(Landroid/os/IInterface;)V
PLcom/android/server/location/RemoteListenerHelper;->setSupported(Z)V
-PLcom/android/server/location/RemoteListenerHelper;->tryRegister()Z
-PLcom/android/server/location/RemoteListenerHelper;->tryUpdateRegistrationWithService()Z
+PLcom/android/server/location/RemoteListenerHelper;->tryRegister()V
+PLcom/android/server/location/RemoteListenerHelper;->tryUnregister()V
+PLcom/android/server/location/RemoteListenerHelper;->tryUpdateRegistrationWithService()V
PLcom/android/server/location/RemoteListenerHelper;->updateResult()V
+PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;->$m$0()V
+PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;-><init>(ILjava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;->run()V
+PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;->$m$0()V
+PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;->run()V
PLcom/android/server/locksettings/LockSettingsService$1;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
PLcom/android/server/locksettings/LockSettingsService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/locksettings/LockSettingsService$2;-><init>(Lcom/android/server/locksettings/LockSettingsService;I)V
@@ -8665,6 +10980,7 @@ PLcom/android/server/locksettings/LockSettingsService$2;->run()V
PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->isProvisioned()Z
PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->onSystemReady()V
+PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->updateRegistration()V
PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;)V
PLcom/android/server/locksettings/LockSettingsService$Injector$1;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;Lcom/android/server/locksettings/LockSettingsStorage;)V
@@ -8682,6 +10998,7 @@ PLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuthTr
PLcom/android/server/locksettings/LockSettingsService$Injector;->getSyntheticPasswordManager(Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/SyntheticPasswordManager;
PLcom/android/server/locksettings/LockSettingsService$Injector;->getUserManager()Landroid/os/UserManager;
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStart()V
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStartUser(I)V
PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUnlockUser(I)V
@@ -8692,48 +11009,68 @@ PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTrac
PLcom/android/server/locksettings/LockSettingsService;->-get0(Lcom/android/server/locksettings/LockSettingsService;)Landroid/content/Context;
PLcom/android/server/locksettings/LockSettingsService;->-get1(Lcom/android/server/locksettings/LockSettingsService;)Landroid/os/UserManager;
PLcom/android/server/locksettings/LockSettingsService;->-wrap0(Lcom/android/server/locksettings/LockSettingsService;I)Z
-PLcom/android/server/locksettings/LockSettingsService;->-wrap1(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V
+PLcom/android/server/locksettings/LockSettingsService;->-wrap1(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService;->-wrap2(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V
+PLcom/android/server/locksettings/LockSettingsService;->-wrap3(Lcom/android/server/locksettings/LockSettingsService;)V
PLcom/android/server/locksettings/LockSettingsService;-><init>(Landroid/content/Context;)V
PLcom/android/server/locksettings/LockSettingsService;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;)V
+PLcom/android/server/locksettings/LockSettingsService;->addUserKeyAuth(I[B[B)V
PLcom/android/server/locksettings/LockSettingsService;->checkPasswordReadPermission(I)V
-PLcom/android/server/locksettings/LockSettingsService;->checkReadPermission(Ljava/lang/String;I)V
PLcom/android/server/locksettings/LockSettingsService;->checkVoldPassword(I)Z
PLcom/android/server/locksettings/LockSettingsService;->checkWritePermission(I)V
+PLcom/android/server/locksettings/LockSettingsService;->clearUserKeyProtection(I)V
+PLcom/android/server/locksettings/LockSettingsService;->enforceShell()V
+PLcom/android/server/locksettings/LockSettingsService;->ensureProfileKeystoreUnlocked(I)V
+PLcom/android/server/locksettings/LockSettingsService;->fixateNewestUserKeyAuth(I)V
PLcom/android/server/locksettings/LockSettingsService;->getBoolean(Ljava/lang/String;ZI)Z
PLcom/android/server/locksettings/LockSettingsService;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService;
-PLcom/android/server/locksettings/LockSettingsService;->getLong(Ljava/lang/String;JI)J
PLcom/android/server/locksettings/LockSettingsService;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/locksettings/LockSettingsService;->getStringUnchecked(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
PLcom/android/server/locksettings/LockSettingsService;->getSyntheticPasswordHandleLocked(I)J
PLcom/android/server/locksettings/LockSettingsService;->hideEncryptionNotification(Landroid/os/UserHandle;)V
+PLcom/android/server/locksettings/LockSettingsService;->isCallerShell()Z
PLcom/android/server/locksettings/LockSettingsService;->isSyntheticPasswordBasedCredentialLocked(I)Z
PLcom/android/server/locksettings/LockSettingsService;->isUserSecure(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->lambda$-com_android_server_locksettings_LockSettingsService_80479(Landroid/app/admin/PasswordMetrics;I)V
+PLcom/android/server/locksettings/LockSettingsService;->lambda$-com_android_server_locksettings_LockSettingsService_81027(I)V
PLcom/android/server/locksettings/LockSettingsService;->maybeShowEncryptionNotificationForUser(I)V
PLcom/android/server/locksettings/LockSettingsService;->migrateOldData()V
+PLcom/android/server/locksettings/LockSettingsService;->migrateOldDataAfterSystemReady()V
+PLcom/android/server/locksettings/LockSettingsService;->notifyActivePasswordMetricsAvailable(Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsService;->notifyPasswordChanged(I)V
+PLcom/android/server/locksettings/LockSettingsService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
PLcom/android/server/locksettings/LockSettingsService;->onStartUser(I)V
PLcom/android/server/locksettings/LockSettingsService;->onUnlockUser(I)V
PLcom/android/server/locksettings/LockSettingsService;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
+PLcom/android/server/locksettings/LockSettingsService;->removeKeystoreProfileKey(I)V
+PLcom/android/server/locksettings/LockSettingsService;->setBoolean(Ljava/lang/String;ZI)V
+PLcom/android/server/locksettings/LockSettingsService;->setKeystorePassword(Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsService;->setLockCredential(Ljava/lang/String;ILjava/lang/String;II)V
+PLcom/android/server/locksettings/LockSettingsService;->setLockCredentialInternal(Ljava/lang/String;ILjava/lang/String;II)V
+PLcom/android/server/locksettings/LockSettingsService;->setLong(Ljava/lang/String;JI)V
+PLcom/android/server/locksettings/LockSettingsService;->setSeparateProfileChallengeEnabled(IZLjava/lang/String;)V
+PLcom/android/server/locksettings/LockSettingsService;->setStringUnchecked(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/locksettings/LockSettingsService;->synchronizeUnifiedWorkChallengeForProfiles(ILjava/util/Map;)V
PLcom/android/server/locksettings/LockSettingsService;->systemReady()V
PLcom/android/server/locksettings/LockSettingsService;->userPresent(I)V
+PLcom/android/server/locksettings/LockSettingsShellCommand;-><init>(Landroid/content/Context;Lcom/android/internal/widget/LockPatternUtils;)V
+PLcom/android/server/locksettings/LockSettingsShellCommand;->checkCredential()Z
+PLcom/android/server/locksettings/LockSettingsShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/locksettings/LockSettingsShellCommand;->parseArgs()V
+PLcom/android/server/locksettings/LockSettingsShellCommand;->runClear()V
PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>()V
PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;)V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I
-PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->set(ILjava/lang/String;I)Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->-wrap0(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)I
PLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>()V
PLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)V
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->getVersion()I
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasFile(Ljava/lang/String;)Z
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasKeyValue(Ljava/lang/String;I)Z
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->isFetched(I)Z
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object;
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekFile(Ljava/lang/String;)[B
-PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->put(ILjava/lang/String;Ljava/lang/Object;I)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFile(Ljava/lang/String;[B)V
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFileIfUnchanged(Ljava/lang/String;[BI)V
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putIfUnchanged(ILjava/lang/String;Ljava/lang/Object;II)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValue(Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValueIfUnchanged(Ljava/lang/String;Ljava/lang/Object;II)V
PLcom/android/server/locksettings/LockSettingsStorage$Cache;->setFetched(I)V
PLcom/android/server/locksettings/LockSettingsStorage$CredentialHash;-><init>([BII)V
@@ -8743,7 +11080,9 @@ PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;-><init>(La
PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;->setCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V
PLcom/android/server/locksettings/LockSettingsStorage;->-get0()Ljava/lang/Object;
PLcom/android/server/locksettings/LockSettingsStorage;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->deleteFile(Ljava/lang/String;)V
PLcom/android/server/locksettings/LockSettingsStorage;->getBaseZeroLockPatternFilename(I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage;->getChildProfileLockFile(I)Ljava/lang/String;
PLcom/android/server/locksettings/LockSettingsStorage;->getLegacyLockPasswordFilename(I)Ljava/lang/String;
PLcom/android/server/locksettings/LockSettingsStorage;->getLegacyLockPatternFilename(I)Ljava/lang/String;
PLcom/android/server/locksettings/LockSettingsStorage;->getLockCredentialFilePathForUser(ILjava/lang/String;)Ljava/lang/String;
@@ -8756,10 +11095,14 @@ PLcom/android/server/locksettings/LockSettingsStorage;->hasPattern(I)Z
PLcom/android/server/locksettings/LockSettingsStorage;->prefetchUser(I)V
PLcom/android/server/locksettings/LockSettingsStorage;->readCredentialHash(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;
PLcom/android/server/locksettings/LockSettingsStorage;->readFile(Ljava/lang/String;)[B
-PLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
PLcom/android/server/locksettings/LockSettingsStorage;->readPasswordHashIfExists(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;
PLcom/android/server/locksettings/LockSettingsStorage;->readPatternHashIfExists(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;
+PLcom/android/server/locksettings/LockSettingsStorage;->removeChildProfileLock(I)V
PLcom/android/server/locksettings/LockSettingsStorage;->setDatabaseOnCreateCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeCredentialHash(Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeFile(Ljava/lang/String;[B)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/locksettings/LockSettingsStrongAuth$1;-><init>(Lcom/android/server/locksettings/LockSettingsStrongAuth;)V
PLcom/android/server/locksettings/LockSettingsStrongAuth$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/locksettings/LockSettingsStrongAuth;->-wrap0(Lcom/android/server/locksettings/LockSettingsStrongAuth;Landroid/app/trust/IStrongAuthTracker;)V
@@ -8772,12 +11115,17 @@ PLcom/android/server/locksettings/LockSettingsStrongAuth;->notifyStrongAuthTrack
PLcom/android/server/locksettings/LockSettingsStrongAuth;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
PLcom/android/server/locksettings/LockSettingsStrongAuth;->reportUnlock(I)V
PLcom/android/server/locksettings/LockSettingsStrongAuth;->requireStrongAuth(II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->systemReady()V
PLcom/android/server/locksettings/SyntheticPasswordManager;-><init>(Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/UserManager;)V
PLcom/android/server/locksettings/SyntheticPasswordManager;->getWeaverService()Landroid/hardware/weaver/V1_0/IWeaver;
PLcom/android/server/locksettings/SyntheticPasswordManager;->initWeaverService()V
-PLcom/android/server/media/AudioPlaybackMonitor;-><init>(Landroid/content/Context;Landroid/media/IAudioService;Lcom/android/server/media/AudioPlaybackMonitor$OnAudioPlaybackStartedListener;)V
-PLcom/android/server/media/AudioPlaybackMonitor;->dispatchPlaybackConfigChange(Ljava/util/List;)V
+PLcom/android/server/media/AudioPlaybackMonitor;-><init>(Landroid/content/Context;Landroid/media/IAudioService;)V
+PLcom/android/server/media/AudioPlaybackMonitor;->cleanUpAudioPlaybackUids(I)V
+PLcom/android/server/media/AudioPlaybackMonitor;->getInstance(Landroid/content/Context;Landroid/media/IAudioService;)Lcom/android/server/media/AudioPlaybackMonitor;
PLcom/android/server/media/AudioPlaybackMonitor;->getSortedAudioPlaybackClientUids()Landroid/util/IntArray;
+PLcom/android/server/media/AudioPlaybackMonitor;->isPlaybackActive(I)Z
+PLcom/android/server/media/AudioPlaybackMonitor;->registerOnAudioPlaybackStartedListener(Lcom/android/server/media/AudioPlaybackMonitor$OnAudioPlaybackStartedListener;)V
+PLcom/android/server/media/AudioPlaybackMonitor;->registerOnAudioPlayerActiveStateChangedListener(Lcom/android/server/media/AudioPlaybackMonitor$OnAudioPlayerActiveStateChangedListener;)V
PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;-><init>(Lcom/android/server/media/MediaResourceMonitorService;)V
PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->getPackageNamesFromPid(I)[Ljava/lang/String;
PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->notifyResourceGranted(II)V
@@ -8785,8 +11133,12 @@ PLcom/android/server/media/MediaResourceMonitorService;->-get0()Z
PLcom/android/server/media/MediaResourceMonitorService;-><init>(Landroid/content/Context;)V
PLcom/android/server/media/MediaResourceMonitorService;->onStart()V
PLcom/android/server/media/MediaRouterService$1;-><init>(Lcom/android/server/media/MediaRouterService;)V
-PLcom/android/server/media/MediaRouterService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/media/MediaRouterService$ClientRecord;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;Landroid/media/IMediaRouterClient;ILjava/lang/String;Z)V
+PLcom/android/server/media/MediaRouterService$1;->onAudioPlayerActiveStateChanged(IZ)V
+PLcom/android/server/media/MediaRouterService$2;-><init>(Lcom/android/server/media/MediaRouterService;)V
+PLcom/android/server/media/MediaRouterService$2;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
+PLcom/android/server/media/MediaRouterService$3;-><init>(Lcom/android/server/media/MediaRouterService;)V
+PLcom/android/server/media/MediaRouterService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/MediaRouterService$ClientRecord;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;Landroid/media/IMediaRouterClient;IILjava/lang/String;Z)V
PLcom/android/server/media/MediaRouterService$ClientRecord;->binderDied()V
PLcom/android/server/media/MediaRouterService$ClientRecord;->dispose()V
PLcom/android/server/media/MediaRouterService$ClientRecord;->getState()Landroid/media/MediaRouterClientState;
@@ -8801,8 +11153,10 @@ PLcom/android/server/media/MediaRouterService$UserHandler;->start()V
PLcom/android/server/media/MediaRouterService$UserHandler;->updateClientState()V
PLcom/android/server/media/MediaRouterService$UserHandler;->updateDiscoveryRequest()V
PLcom/android/server/media/MediaRouterService$UserRecord;-><init>(Lcom/android/server/media/MediaRouterService;I)V
-PLcom/android/server/media/MediaRouterService;->-get0(Lcom/android/server/media/MediaRouterService;)Landroid/content/Context;
-PLcom/android/server/media/MediaRouterService;->-get1(Lcom/android/server/media/MediaRouterService;)Ljava/lang/Object;
+PLcom/android/server/media/MediaRouterService;->-get0(Lcom/android/server/media/MediaRouterService;)Lcom/android/server/media/AudioPlaybackMonitor;
+PLcom/android/server/media/MediaRouterService;->-get1(Lcom/android/server/media/MediaRouterService;)Landroid/content/Context;
+PLcom/android/server/media/MediaRouterService;->-get2(Lcom/android/server/media/MediaRouterService;)Ljava/lang/Object;
+PLcom/android/server/media/MediaRouterService;->-set0(Lcom/android/server/media/MediaRouterService;Z)Z
PLcom/android/server/media/MediaRouterService;-><init>(Landroid/content/Context;)V
PLcom/android/server/media/MediaRouterService;->clientDied(Lcom/android/server/media/MediaRouterService$ClientRecord;)V
PLcom/android/server/media/MediaRouterService;->disposeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;Z)V
@@ -8811,9 +11165,13 @@ PLcom/android/server/media/MediaRouterService;->getState(Landroid/media/IMediaRo
PLcom/android/server/media/MediaRouterService;->getStateLocked(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
PLcom/android/server/media/MediaRouterService;->initializeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;)V
PLcom/android/server/media/MediaRouterService;->initializeUserLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V
+PLcom/android/server/media/MediaRouterService;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z
+PLcom/android/server/media/MediaRouterService;->isPlaybackActiveLocked(Landroid/media/IMediaRouterClient;)Z
PLcom/android/server/media/MediaRouterService;->monitor()V
PLcom/android/server/media/MediaRouterService;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V
-PLcom/android/server/media/MediaRouterService;->registerClientLocked(Landroid/media/IMediaRouterClient;ILjava/lang/String;IZ)V
+PLcom/android/server/media/MediaRouterService;->registerClientLocked(Landroid/media/IMediaRouterClient;IILjava/lang/String;IZ)V
+PLcom/android/server/media/MediaRouterService;->restoreBluetoothA2dp()V
+PLcom/android/server/media/MediaRouterService;->restoreRoute(I)V
PLcom/android/server/media/MediaRouterService;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V
PLcom/android/server/media/MediaRouterService;->setDiscoveryRequestLocked(Landroid/media/IMediaRouterClient;IZ)V
PLcom/android/server/media/MediaRouterService;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
@@ -8827,7 +11185,6 @@ PLcom/android/server/media/MediaSessionRecord$ControllerStub;-><init>(Lcom/andro
PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getMetadata()Landroid/media/MediaMetadata;
PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPackageName()Ljava/lang/String;
PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPlaybackState()Landroid/media/session/PlaybackState;
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getQueue()Landroid/content/pm/ParceledListSlice;
PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getVolumeAttributes()Landroid/media/session/ParcelableVolumeInfo;
PLcom/android/server/media/MediaSessionRecord$ControllerStub;->registerCallbackListener(Landroid/media/session/ISessionControllerCallback;)V
PLcom/android/server/media/MediaSessionRecord$ControllerStub;->unregisterCallbackListener(Landroid/media/session/ISessionControllerCallback;)V
@@ -8844,14 +11201,12 @@ PLcom/android/server/media/MediaSessionRecord$SessionStub;-><init>(Lcom/android/
PLcom/android/server/media/MediaSessionRecord$SessionStub;->destroy()V
PLcom/android/server/media/MediaSessionRecord$SessionStub;->getController()Landroid/media/session/ISessionController;
PLcom/android/server/media/MediaSessionRecord$SessionStub;->setActive(Z)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setExtras(Landroid/os/Bundle;)V
PLcom/android/server/media/MediaSessionRecord$SessionStub;->setFlags(I)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setLaunchPendingIntent(Landroid/app/PendingIntent;)V
PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMetadata(Landroid/media/MediaMetadata;)V
PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackState(Landroid/media/session/PlaybackState;)V
PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setQueue(Landroid/content/pm/ParceledListSlice;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setQueueTitle(Ljava/lang/CharSequence;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setRatingType(I)V
PLcom/android/server/media/MediaSessionRecord;->-get0()Z
PLcom/android/server/media/MediaSessionRecord;->-get1(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/AudioAttributes;
PLcom/android/server/media/MediaSessionRecord;->-get11(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$MessageHandler;
@@ -8859,7 +11214,6 @@ PLcom/android/server/media/MediaSessionRecord;->-get13(Lcom/android/server/media
PLcom/android/server/media/MediaSessionRecord;->-get15(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/MediaMetadata;
PLcom/android/server/media/MediaSessionRecord;->-get17(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/String;
PLcom/android/server/media/MediaSessionRecord;->-get18(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState;
-PLcom/android/server/media/MediaSessionRecord;->-get19(Lcom/android/server/media/MediaSessionRecord;)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/media/MediaSessionRecord;->-get2(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/AudioManager;
PLcom/android/server/media/MediaSessionRecord;->-get22(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionService;
PLcom/android/server/media/MediaSessionRecord;->-get26(Lcom/android/server/media/MediaSessionRecord;)I
@@ -8868,42 +11222,41 @@ PLcom/android/server/media/MediaSessionRecord;->-get6(Lcom/android/server/media/
PLcom/android/server/media/MediaSessionRecord;->-get8(Lcom/android/server/media/MediaSessionRecord;)Z
PLcom/android/server/media/MediaSessionRecord;->-set0(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)Landroid/media/AudioAttributes;
PLcom/android/server/media/MediaSessionRecord;->-set10(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/PlaybackState;)Landroid/media/session/PlaybackState;
-PLcom/android/server/media/MediaSessionRecord;->-set11(Lcom/android/server/media/MediaSessionRecord;Landroid/content/pm/ParceledListSlice;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/media/MediaSessionRecord;->-set12(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-PLcom/android/server/media/MediaSessionRecord;->-set13(Lcom/android/server/media/MediaSessionRecord;I)I
PLcom/android/server/media/MediaSessionRecord;->-set15(Lcom/android/server/media/MediaSessionRecord;I)I
-PLcom/android/server/media/MediaSessionRecord;->-set2(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Bundle;)Landroid/os/Bundle;
PLcom/android/server/media/MediaSessionRecord;->-set3(Lcom/android/server/media/MediaSessionRecord;J)J
PLcom/android/server/media/MediaSessionRecord;->-set4(Lcom/android/server/media/MediaSessionRecord;Z)Z
+PLcom/android/server/media/MediaSessionRecord;->-set5(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent;
PLcom/android/server/media/MediaSessionRecord;->-set7(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionRecord;->-set8(Lcom/android/server/media/MediaSessionRecord;Landroid/media/MediaMetadata;)Landroid/media/MediaMetadata;
PLcom/android/server/media/MediaSessionRecord;->-wrap0(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState;
PLcom/android/server/media/MediaSessionRecord;->-wrap1(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;)I
PLcom/android/server/media/MediaSessionRecord;->-wrap2(Lcom/android/server/media/MediaSessionRecord;I)Ljava/lang/String;
-PLcom/android/server/media/MediaSessionRecord;->-wrap4(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->-wrap5(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionRecord;->-wrap6(Lcom/android/server/media/MediaSessionRecord;)V
-PLcom/android/server/media/MediaSessionRecord;->-wrap7(Lcom/android/server/media/MediaSessionRecord;)V
-PLcom/android/server/media/MediaSessionRecord;->-wrap8(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionRecord;->-wrap9(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionRecord;-><init>(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Lcom/android/server/media/MediaSessionService;Landroid/os/Looper;)V
+PLcom/android/server/media/MediaSessionRecord;->binderDied()V
PLcom/android/server/media/MediaSessionRecord;->getCallback()Landroid/media/session/ISessionCallback;
PLcom/android/server/media/MediaSessionRecord;->getControllerBinder()Landroid/media/session/ISessionController;
PLcom/android/server/media/MediaSessionRecord;->getControllerHolderIndexForCb(Landroid/media/session/ISessionControllerCallback;)I
PLcom/android/server/media/MediaSessionRecord;->getFlags()J
+PLcom/android/server/media/MediaSessionRecord;->getMediaButtonReceiver()Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionRecord;->getPackageName()Ljava/lang/String;
PLcom/android/server/media/MediaSessionRecord;->getPackageName(I)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->getPlaybackState()Landroid/media/session/PlaybackState;
PLcom/android/server/media/MediaSessionRecord;->getPlaybackType()I
PLcom/android/server/media/MediaSessionRecord;->getSessionBinder()Landroid/media/session/ISession;
-PLcom/android/server/media/MediaSessionRecord;->getStateWithUpdatedPosition()Landroid/media/session/PlaybackState;
+PLcom/android/server/media/MediaSessionRecord;->getUid()I
PLcom/android/server/media/MediaSessionRecord;->getUserId()I
PLcom/android/server/media/MediaSessionRecord;->isActive()Z
PLcom/android/server/media/MediaSessionRecord;->isPlaybackActive()Z
PLcom/android/server/media/MediaSessionRecord;->onDestroy()V
-PLcom/android/server/media/MediaSessionRecord;->pushExtrasUpdate()V
+PLcom/android/server/media/MediaSessionRecord;->pushMetadataUpdate()V
PLcom/android/server/media/MediaSessionRecord;->pushPlaybackStateUpdate()V
-PLcom/android/server/media/MediaSessionRecord;->pushQueueTitleUpdate()V
-PLcom/android/server/media/MediaSessionRecord;->pushQueueUpdate()V
PLcom/android/server/media/MediaSessionRecord;->pushSessionDestroyed()V
PLcom/android/server/media/MediaSessionRecord;->toString()Ljava/lang/String;
PLcom/android/server/media/MediaSessionService$1;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$1;->onAudioPlaybackStarted(I)V
PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get0(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/ICallback;
PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get1(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get10(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionStack;
@@ -8912,7 +11265,9 @@ PLcom/android/server/media/MediaSessionService$FullUserRecord;->-set0(Lcom/andro
PLcom/android/server/media/MediaSessionService$FullUserRecord;->-wrap1(Lcom/android/server/media/MediaSessionService$FullUserRecord;)V
PLcom/android/server/media/MediaSessionService$FullUserRecord;-><init>(Lcom/android/server/media/MediaSessionService;I)V
PLcom/android/server/media/MediaSessionService$FullUserRecord;->getMediaButtonSessionLocked()Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionService$FullUserRecord;->pushAddressedPlayerChangedLocked()V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->rememberMediaButtonReceiverLocked(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionService$MessageHandler;-><init>(Lcom/android/server/media/MediaSessionService;)V
PLcom/android/server/media/MediaSessionService$MessageHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/media/MediaSessionService$MessageHandler;->postSessionsChanged(I)V
@@ -8927,8 +11282,8 @@ PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->createSessio
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchAdjustVolumeLocked(III)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEvent(Landroid/view/KeyEvent;IZ)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEventLocked(Landroid/view/KeyEvent;IZ)V
-PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List;
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->isValidLocalStreamType(I)Z
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->setCallback(Landroid/media/session/ICallback;)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->verifySessionsRequest(Landroid/content/ComponentName;III)I
@@ -8941,12 +11296,12 @@ PLcom/android/server/media/MediaSessionService$SettingsObserver;-><init>(Lcom/an
PLcom/android/server/media/MediaSessionService$SettingsObserver;->observe()V
PLcom/android/server/media/MediaSessionService;->-get0(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/AudioPlaybackMonitor;
PLcom/android/server/media/MediaSessionService;->-get1(Lcom/android/server/media/MediaSessionService;)Landroid/media/IAudioService;
-PLcom/android/server/media/MediaSessionService;->-get11(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList;
+PLcom/android/server/media/MediaSessionService;->-get12(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList;
PLcom/android/server/media/MediaSessionService;->-get2(Lcom/android/server/media/MediaSessionService;)Landroid/content/ContentResolver;
PLcom/android/server/media/MediaSessionService;->-get3(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$FullUserRecord;
PLcom/android/server/media/MediaSessionService;->-get5(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionRecord;
PLcom/android/server/media/MediaSessionService;->-get6(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$MessageHandler;
-PLcom/android/server/media/MediaSessionService;->-get8(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object;
+PLcom/android/server/media/MediaSessionService;->-get9(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object;
PLcom/android/server/media/MediaSessionService;->-set0(Lcom/android/server/media/MediaSessionService;Landroid/media/IRemoteVolumeController;)Landroid/media/IRemoteVolumeController;
PLcom/android/server/media/MediaSessionService;->-wrap0(Lcom/android/server/media/MediaSessionService;)Z
PLcom/android/server/media/MediaSessionService;->-wrap1(Lcom/android/server/media/MediaSessionService;IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;)Lcom/android/server/media/MediaSessionRecord;
@@ -8968,10 +11323,8 @@ PLcom/android/server/media/MediaSessionService;->enforcePackageName(Ljava/lang/S
PLcom/android/server/media/MediaSessionService;->enforcePhoneStatePermission(II)V
PLcom/android/server/media/MediaSessionService;->enforceSystemUiPermission(Ljava/lang/String;II)V
PLcom/android/server/media/MediaSessionService;->findIndexOfSessionsListenerLocked(Landroid/media/session/IActiveSessionsListener;)I
-PLcom/android/server/media/MediaSessionService;->getActiveSessionsLocked(I)Ljava/util/List;
PLcom/android/server/media/MediaSessionService;->getAudioService()Landroid/media/IAudioService;
PLcom/android/server/media/MediaSessionService;->getCallingPackageName(I)Ljava/lang/String;
-PLcom/android/server/media/MediaSessionService;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
PLcom/android/server/media/MediaSessionService;->isCurrentVolumeController(II)Z
PLcom/android/server/media/MediaSessionService;->isGlobalPriorityActiveLocked()Z
PLcom/android/server/media/MediaSessionService;->monitor()V
@@ -8980,7 +11333,7 @@ PLcom/android/server/media/MediaSessionService;->onSessionPlaystateChanged(Lcom/
PLcom/android/server/media/MediaSessionService;->onStart()V
PLcom/android/server/media/MediaSessionService;->onStartUser(I)V
PLcom/android/server/media/MediaSessionService;->pushRemoteVolumeUpdateLocked(I)V
-PLcom/android/server/media/MediaSessionService;->pushSessionsChanged(I)V
+PLcom/android/server/media/MediaSessionService;->sessionDied(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionService;->updateSession(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionService;->updateUser()V
PLcom/android/server/media/MediaSessionStack;-><init>(Lcom/android/server/media/AudioPlaybackMonitor;Lcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;)V
@@ -8988,21 +11341,21 @@ PLcom/android/server/media/MediaSessionStack;->addSession(Lcom/android/server/me
PLcom/android/server/media/MediaSessionStack;->clearCache(I)V
PLcom/android/server/media/MediaSessionStack;->contains(Lcom/android/server/media/MediaSessionRecord;)Z
PLcom/android/server/media/MediaSessionStack;->containsState(I[I)Z
+PLcom/android/server/media/MediaSessionStack;->findMediaButtonSession(I)Lcom/android/server/media/MediaSessionRecord;
PLcom/android/server/media/MediaSessionStack;->getActiveSessions(I)Ljava/util/ArrayList;
PLcom/android/server/media/MediaSessionStack;->getDefaultRemoteSession(I)Lcom/android/server/media/MediaSessionRecord;
PLcom/android/server/media/MediaSessionStack;->getDefaultVolumeSession()Lcom/android/server/media/MediaSessionRecord;
PLcom/android/server/media/MediaSessionStack;->getMediaButtonSession()Lcom/android/server/media/MediaSessionRecord;
-PLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/ArrayList;
PLcom/android/server/media/MediaSessionStack;->onPlaystateChanged(Lcom/android/server/media/MediaSessionRecord;II)V
PLcom/android/server/media/MediaSessionStack;->onSessionStateChange(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionStack;->removeSession(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionStack;->shouldUpdatePriority(II)Z
+PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSession(Lcom/android/server/media/MediaSessionRecord;)V
PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSessionIfNeeded()V
PLcom/android/server/media/RemoteDisplayProviderProxy$1;-><init>(Lcom/android/server/media/RemoteDisplayProviderProxy;)V
PLcom/android/server/media/RemoteDisplayProviderProxy;-><init>(Landroid/content/Context;Landroid/content/ComponentName;I)V
PLcom/android/server/media/RemoteDisplayProviderProxy;->getDisplayState()Landroid/media/RemoteDisplayState;
PLcom/android/server/media/RemoteDisplayProviderProxy;->getFlattenedComponentName()Ljava/lang/String;
-PLcom/android/server/media/RemoteDisplayProviderProxy;->hasComponentName(Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/media/RemoteDisplayProviderProxy;->rebindIfDisconnected()V
PLcom/android/server/media/RemoteDisplayProviderProxy;->setCallback(Lcom/android/server/media/RemoteDisplayProviderProxy$Callback;)V
PLcom/android/server/media/RemoteDisplayProviderProxy;->setDiscoveryMode(I)V
@@ -9020,7 +11373,6 @@ PLcom/android/server/media/RemoteDisplayProviderWatcher;->-wrap0(Lcom/android/se
PLcom/android/server/media/RemoteDisplayProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/RemoteDisplayProviderWatcher$Callback;Landroid/os/Handler;I)V
PLcom/android/server/media/RemoteDisplayProviderWatcher;->findProvider(Ljava/lang/String;Ljava/lang/String;)I
PLcom/android/server/media/RemoteDisplayProviderWatcher;->hasCaptureVideoPermission(Ljava/lang/String;)Z
-PLcom/android/server/media/RemoteDisplayProviderWatcher;->scanPackages()V
PLcom/android/server/media/RemoteDisplayProviderWatcher;->start()V
PLcom/android/server/media/RemoteDisplayProviderWatcher;->verifyServiceTrusted(Landroid/content/pm/ServiceInfo;)Z
PLcom/android/server/media/projection/MediaProjectionManagerService$1;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/media/projection/IMediaProjectionWatcherCallback;)V
@@ -9042,7 +11394,6 @@ PLcom/android/server/media/projection/MediaProjectionManagerService;->linkDeathR
PLcom/android/server/media/projection/MediaProjectionManagerService;->monitor()V
PLcom/android/server/media/projection/MediaProjectionManagerService;->onStart()V
PLcom/android/server/midi/MidiService$1;-><init>(Lcom/android/server/midi/MidiService;)V
-PLcom/android/server/midi/MidiService$1;->onPackageAdded(Ljava/lang/String;I)V
PLcom/android/server/midi/MidiService$1;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/midi/MidiService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/midi/MidiService$Lifecycle;->onStart()V
@@ -9051,8 +11402,6 @@ PLcom/android/server/midi/MidiService;->-wrap0(Lcom/android/server/midi/MidiServ
PLcom/android/server/midi/MidiService;->-wrap1(Lcom/android/server/midi/MidiService;)V
PLcom/android/server/midi/MidiService;->-wrap3(Lcom/android/server/midi/MidiService;Ljava/lang/String;)V
PLcom/android/server/midi/MidiService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/midi/MidiService;->addPackageDeviceServer(Landroid/content/pm/ServiceInfo;)V
-PLcom/android/server/midi/MidiService;->addPackageDeviceServers(Ljava/lang/String;)V
PLcom/android/server/midi/MidiService;->onUnlockUser()V
PLcom/android/server/midi/MidiService;->removePackageDeviceServers(Ljava/lang/String;)V
PLcom/android/server/net/-$Lambda$hlRLCZCUKiWKuPbzPq01UpErk2Y;->$m$0()V
@@ -9065,29 +11414,19 @@ PLcom/android/server/net/IpConfigStore;->loge(Ljava/lang/String;)V
PLcom/android/server/net/IpConfigStore;->readIpAndProxyConfigurations(Ljava/lang/String;)Landroid/util/SparseArray;
PLcom/android/server/net/LockdownVpnTracker;->isEnabled()Z
PLcom/android/server/net/NetworkIdentitySet;-><init>()V
-PLcom/android/server/net/NetworkIdentitySet;-><init>(Ljava/io/DataInputStream;)V
-PLcom/android/server/net/NetworkIdentitySet;->readOptionalString(Ljava/io/DataInputStream;)Ljava/lang/String;
-PLcom/android/server/net/NetworkIdentitySet;->writeOptionalString(Ljava/io/DataOutputStream;Ljava/lang/String;)V
PLcom/android/server/net/NetworkPolicyManagerInternal;-><init>()V
PLcom/android/server/net/NetworkPolicyManagerService$10;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$10;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/net/NetworkPolicyManagerService$11;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$11;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/net/NetworkPolicyManagerService$11;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/net/NetworkPolicyManagerService$12;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$12;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyManagerService$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/net/NetworkPolicyManagerService$13;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$13;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/net/NetworkPolicyManagerService$14;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$14;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/net/NetworkPolicyManagerService$15;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z
PLcom/android/server/net/NetworkPolicyManagerService$16;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$16;->handleMessage(Landroid/os/Message;)Z
PLcom/android/server/net/NetworkPolicyManagerService$17;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$18;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$1;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService$1;->onUidGone(IZ)V
-PLcom/android/server/net/NetworkPolicyManagerService$1;->onUidStateChanged(IIJ)V
PLcom/android/server/net/NetworkPolicyManagerService$2;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$3;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$3;->run()V
@@ -9101,67 +11440,39 @@ PLcom/android/server/net/NetworkPolicyManagerService$8;-><init>(Lcom/android/ser
PLcom/android/server/net/NetworkPolicyManagerService$9;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;)V
-PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V
PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onParoleStateChanged(Z)V
PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;)V
PLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;-><init>(I)V
-PLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->addProcStateSeqUL(IJ)V
-PLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->increaseNext(II)I
PLcom/android/server/net/NetworkPolicyManagerService;->-get0(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/content/Context;
PLcom/android/server/net/NetworkPolicyManagerService;->-get1(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/os/RemoteCallbackList;
-PLcom/android/server/net/NetworkPolicyManagerService;->-get2(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/ArraySet;
PLcom/android/server/net/NetworkPolicyManagerService;->-get3(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/net/INetworkStatsService;
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap1(Lcom/android/server/net/NetworkPolicyManagerService;ILjava/lang/String;)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap10(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-wrap10(Lcom/android/server/net/NetworkPolicyManagerService;IZ)V
PLcom/android/server/net/NetworkPolicyManagerService;->-wrap11(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap16(Lcom/android/server/net/NetworkPolicyManagerService;ILandroid/util/SparseIntArray;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap17(Lcom/android/server/net/NetworkPolicyManagerService;I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap19(Lcom/android/server/net/NetworkPolicyManagerService;I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap2(II)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap21(Lcom/android/server/net/NetworkPolicyManagerService;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap3(Lcom/android/server/net/NetworkPolicyManagerService;I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap5(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap8(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;II)V
-PLcom/android/server/net/NetworkPolicyManagerService;->-wrap9(Lcom/android/server/net/NetworkPolicyManagerService;IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-wrap12(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-wrap17(Lcom/android/server/net/NetworkPolicyManagerService;ILandroid/util/SparseIntArray;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-wrap18(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-wrap22(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-wrap23(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-wrap6(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V
PLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/net/INetworkStatsService;Landroid/os/INetworkManagementService;)V
PLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/net/INetworkStatsService;Landroid/os/INetworkManagementService;Landroid/content/pm/IPackageManager;Landroid/util/TrustedTime;Ljava/io/File;Z)V
PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundWhitelistUidsUL()Z
PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundWhitelistUidsUL(I)Z
PLcom/android/server/net/NetworkPolicyManagerService;->bindConnectivityManager(Landroid/net/IConnectivityManager;)V
PLcom/android/server/net/NetworkPolicyManagerService;->bindNotificationManager(Landroid/app/INotificationManager;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->currentTimeMillis()J
PLcom/android/server/net/NetworkPolicyManagerService;->dispatchMeteredIfacesChanged(Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->dispatchUidRulesChanged(Landroid/net/INetworkPolicyListener;II)V
PLcom/android/server/net/NetworkPolicyManagerService;->enableFirewallChainUL(IZ)V
PLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL()V
-PLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL(ILjava/lang/String;)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->getCycleDayFromCarrierConfig(Landroid/os/PersistableBundle;I)I
-PLcom/android/server/net/NetworkPolicyManagerService;->getLimitBytesFromCarrierConfig(Landroid/os/PersistableBundle;J)J
PLcom/android/server/net/NetworkPolicyManagerService;->getNetworkPolicies(Ljava/lang/String;)[Landroid/net/NetworkPolicy;
-PLcom/android/server/net/NetworkPolicyManagerService;->getPlatformDefaultLimitBytes()J
-PLcom/android/server/net/NetworkPolicyManagerService;->getPlatformDefaultWarningBytes()J
PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackground()Z
PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundByCaller()I
PLcom/android/server/net/NetworkPolicyManagerService;->getSystemDir()Ljava/io/File;
PLcom/android/server/net/NetworkPolicyManagerService;->getUidPolicy(I)I
-PLcom/android/server/net/NetworkPolicyManagerService;->getWarningBytesFromCarrierConfig(Landroid/os/PersistableBundle;J)J
-PLcom/android/server/net/NetworkPolicyManagerService;->handleUidGone(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissions(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->hasRule(II)Z
PLcom/android/server/net/NetworkPolicyManagerService;->initService(Ljava/util/concurrent/CountDownLatch;)V
PLcom/android/server/net/NetworkPolicyManagerService;->isBandwidthControlEnabled()Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isTemplateRelevant(Landroid/net/NetworkTemplate;)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isUidStateForegroundUL(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForBlacklistRules(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForWhitelistRules(I)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->isWhitelistedBatterySaverUL(IZ)Z
-PLcom/android/server/net/NetworkPolicyManagerService;->lambda$-com_android_server_net_NetworkPolicyManagerService_36909(Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->lambda$-com_android_server_net_NetworkPolicyManagerService_37358(Ljava/util/concurrent/CountDownLatch;)V
PLcom/android/server/net/NetworkPolicyManagerService;->maybeRefreshTrustedTime()V
-PLcom/android/server/net/NetworkPolicyManagerService;->maybeUpdateMobilePolicyCycleNL(I)Z
PLcom/android/server/net/NetworkPolicyManagerService;->networkScoreAndNetworkManagementServiceReady()Ljava/util/concurrent/CountDownLatch;
PLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL()V
PLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL([Landroid/net/NetworkPolicy;)V
@@ -9169,55 +11480,35 @@ PLcom/android/server/net/NetworkPolicyManagerService;->onTetheringChanged(Ljava/
PLcom/android/server/net/NetworkPolicyManagerService;->purgePowerSaveTempWhitelistUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->readPolicyAL()V
PLcom/android/server/net/NetworkPolicyManagerService;->registerListener(Landroid/net/INetworkPolicyListener;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)V
PLcom/android/server/net/NetworkPolicyManagerService;->setMeteredNetworkWhitelist(IZ)V
-PLcom/android/server/net/NetworkPolicyManagerService;->setNetworkTemplateEnabled(Landroid/net/NetworkTemplate;Z)V
PLcom/android/server/net/NetworkPolicyManagerService;->setRestrictBackgroundUL(Z)V
-PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRule(III)V
PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRules(ILandroid/util/SparseIntArray;)V
PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesAsync(ILandroid/util/SparseIntArray;I)V
PLcom/android/server/net/NetworkPolicyManagerService;->setUidPolicyUncheckedUL(IIZ)V
PLcom/android/server/net/NetworkPolicyManagerService;->systemReady(Ljava/util/concurrent/CountDownLatch;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->unregisterListener(Landroid/net/INetworkPolicyListener;)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveTempWhitelistUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveWhitelistUL()V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundRulesOnUidStatusChangedUL(III)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictionRulesForUidUL(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(I)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForDeviceIdleUL(I)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForRestrictPowerUL(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllAppsUL(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleParoleUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleUL()V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDeviceIdleUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForGlobalChangeAL(Z)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IIZ)I
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IIZ)I
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerSaveUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictBackgroundUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictPowerUL()V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempWhitelistChangeUL()V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedPowerSaveUL(IZI)V
PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedPowerSaveUL(ZILandroid/util/SparseIntArray;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->upgradeWifiMeteredOverrideAL()V
PLcom/android/server/net/NetworkPolicyManagerService;->writePolicyAL()V
-PLcom/android/server/net/NetworkStatsAccess;->isAccessibleToUser(III)Z
-PLcom/android/server/net/NetworkStatsCollection$Key;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/net/NetworkStatsCollection$Key;->hashCode()I
PLcom/android/server/net/NetworkStatsCollection;-><init>(J)V
PLcom/android/server/net/NetworkStatsCollection;->getTotalBytes()J
PLcom/android/server/net/NetworkStatsCollection;->isDirty()Z
-PLcom/android/server/net/NetworkStatsCollection;->noteRecordedHistory(JJJ)V
-PLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/DataInputStream;)V
PLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/InputStream;)V
PLcom/android/server/net/NetworkStatsCollection;->recordCollection(Lcom/android/server/net/NetworkStatsCollection;)V
-PLcom/android/server/net/NetworkStatsCollection;->recordHistory(Lcom/android/server/net/NetworkStatsCollection$Key;Landroid/net/NetworkStatsHistory;)V
PLcom/android/server/net/NetworkStatsCollection;->reset()V
PLcom/android/server/net/NetworkStatsObservers$1;-><init>(Lcom/android/server/net/NetworkStatsObservers;)V
PLcom/android/server/net/NetworkStatsObservers$1;->handleMessage(Landroid/os/Message;)Z
@@ -9234,11 +11525,8 @@ PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->reset()V
PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->shouldWrite()Z
PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->write(Ljava/io/OutputStream;)V
PLcom/android/server/net/NetworkStatsRecorder;-><init>(Lcom/android/internal/util/FileRotator;Landroid/net/NetworkStats$NonMonotonicObserver;Landroid/os/DropBoxManager;Ljava/lang/String;JZ)V
-PLcom/android/server/net/NetworkStatsRecorder;->forcePersistLocked(J)V
PLcom/android/server/net/NetworkStatsRecorder;->getOrLoadCompleteLocked()Lcom/android/server/net/NetworkStatsCollection;
-PLcom/android/server/net/NetworkStatsRecorder;->getTotalSinceBootLocked(Landroid/net/NetworkTemplate;)Landroid/net/NetworkStats$Entry;
PLcom/android/server/net/NetworkStatsRecorder;->loadLocked(JJ)Lcom/android/server/net/NetworkStatsCollection;
-PLcom/android/server/net/NetworkStatsRecorder;->maybePersistLocked(J)V
PLcom/android/server/net/NetworkStatsRecorder;->setPersistThreshold(J)V
PLcom/android/server/net/NetworkStatsService$1;-><init>(Lcom/android/server/net/NetworkStatsService;)V
PLcom/android/server/net/NetworkStatsService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
@@ -9285,57 +11573,45 @@ PLcom/android/server/net/NetworkStatsService;->forceUpdateIfaces()V
PLcom/android/server/net/NetworkStatsService;->getDefaultBaseDir()Ljava/io/File;
PLcom/android/server/net/NetworkStatsService;->getDefaultSystemDir()Ljava/io/File;
PLcom/android/server/net/NetworkStatsService;->getMobileIfaces()[Ljava/lang/String;
-PLcom/android/server/net/NetworkStatsService;->getNetworkStatsTethering()Landroid/net/NetworkStats;
+PLcom/android/server/net/NetworkStatsService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats;
PLcom/android/server/net/NetworkStatsService;->getNetworkStatsUidDetail()Landroid/net/NetworkStats;
PLcom/android/server/net/NetworkStatsService;->getNetworkStatsXt()Landroid/net/NetworkStats;
PLcom/android/server/net/NetworkStatsService;->incrementOperationCount(III)V
PLcom/android/server/net/NetworkStatsService;->isBandwidthControlEnabled()Z
PLcom/android/server/net/NetworkStatsService;->maybeUpgradeLegacyStatsLocked()V
PLcom/android/server/net/NetworkStatsService;->performPoll(I)V
-PLcom/android/server/net/NetworkStatsService;->performPollLocked(I)V
-PLcom/android/server/net/NetworkStatsService;->performSampleLocked()V
-PLcom/android/server/net/NetworkStatsService;->recordSnapshotLocked(J)V
PLcom/android/server/net/NetworkStatsService;->registerGlobalAlert()V
PLcom/android/server/net/NetworkStatsService;->registerPollAlarmLocked()V
PLcom/android/server/net/NetworkStatsService;->setHandler(Landroid/os/Handler;Landroid/os/Handler$Callback;)V
-PLcom/android/server/net/NetworkStatsService;->setUidForeground(IZ)V
PLcom/android/server/net/NetworkStatsService;->systemReady()V
PLcom/android/server/net/NetworkStatsService;->updateIfaces()V
PLcom/android/server/net/NetworkStatsService;->updateIfacesLocked()V
PLcom/android/server/net/NetworkStatsService;->updatePersistThresholds()V
-PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->$m$0(I)Z
-PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;-><init>(II)V
-PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->apply(I)Z
+PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->$m$1()V
+PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;-><init>(II)V
+PLcom/android/server/notification/AlertRateLimiter;-><init>()V
PLcom/android/server/notification/BadgeExtractor;-><init>()V
PLcom/android/server/notification/BadgeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/BadgeExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/CalendarTracker$1;-><init>(Lcom/android/server/notification/CalendarTracker;Landroid/os/Handler;)V
-PLcom/android/server/notification/CalendarTracker$1;->onChange(ZLandroid/net/Uri;)V
PLcom/android/server/notification/CalendarTracker$CheckEventResult;-><init>()V
-PLcom/android/server/notification/CalendarTracker;->-get0()Z
-PLcom/android/server/notification/CalendarTracker;->-get1(Lcom/android/server/notification/CalendarTracker;)Lcom/android/server/notification/CalendarTracker$Callback;
PLcom/android/server/notification/CalendarTracker;-><init>(Landroid/content/Context;Landroid/content/Context;)V
PLcom/android/server/notification/CalendarTracker;->checkEvent(Landroid/service/notification/ZenModeConfig$EventInfo;J)Lcom/android/server/notification/CalendarTracker$CheckEventResult;
PLcom/android/server/notification/CalendarTracker;->getPrimaryCalendars()Landroid/util/ArraySet;
-PLcom/android/server/notification/CalendarTracker;->meetsAttendee(Landroid/service/notification/ZenModeConfig$EventInfo;ILjava/lang/String;)Z
PLcom/android/server/notification/CalendarTracker;->setCallback(Lcom/android/server/notification/CalendarTracker$Callback;)V
PLcom/android/server/notification/CalendarTracker;->setRegistered(Z)V
PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;)V
PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;Lcom/android/server/notification/ConditionProviders$ConditionRecord;)V
-PLcom/android/server/notification/ConditionProviders;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/notification/ManagedServices$UserProfiles;)V
+PLcom/android/server/notification/ConditionProviders;-><init>(Landroid/content/Context;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
PLcom/android/server/notification/ConditionProviders;->addSystemProvider(Lcom/android/server/notification/SystemConditionProviderService;)V
PLcom/android/server/notification/ConditionProviders;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
PLcom/android/server/notification/ConditionProviders;->checkServiceToken(Landroid/service/notification/IConditionProvider;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
PLcom/android/server/notification/ConditionProviders;->ensureRecordExists(Landroid/content/ComponentName;Landroid/net/Uri;Landroid/service/notification/IConditionProvider;)V
-PLcom/android/server/notification/ConditionProviders;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
-PLcom/android/server/notification/ConditionProviders;->getRecordLocked(Landroid/net/Uri;Landroid/content/ComponentName;Z)Lcom/android/server/notification/ConditionProviders$ConditionRecord;
PLcom/android/server/notification/ConditionProviders;->getSystemProviders()Ljava/lang/Iterable;
PLcom/android/server/notification/ConditionProviders;->isSystemProviderEnabled(Ljava/lang/String;)Z
-PLcom/android/server/notification/ConditionProviders;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet;
PLcom/android/server/notification/ConditionProviders;->notifyConditions(Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
PLcom/android/server/notification/ConditionProviders;->onBootPhaseAppsCanStart()V
-PLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;)V
+PLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;[I)V
PLcom/android/server/notification/ConditionProviders;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
PLcom/android/server/notification/ConditionProviders;->onUserSwitched(I)V
PLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)Landroid/service/notification/IConditionProvider;
@@ -9355,15 +11631,12 @@ PLcom/android/server/notification/CountdownConditionProvider;->isValidConditionI
PLcom/android/server/notification/CountdownConditionProvider;->onBootComplete()V
PLcom/android/server/notification/CountdownConditionProvider;->onConnected()V
PLcom/android/server/notification/EventConditionProvider$1;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
-PLcom/android/server/notification/EventConditionProvider$1;->onChanged()V
PLcom/android/server/notification/EventConditionProvider$2;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
PLcom/android/server/notification/EventConditionProvider$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/notification/EventConditionProvider$3;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
PLcom/android/server/notification/EventConditionProvider$3;->run()V
PLcom/android/server/notification/EventConditionProvider$4;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
PLcom/android/server/notification/EventConditionProvider;->-get0()Z
-PLcom/android/server/notification/EventConditionProvider;->-get1(Lcom/android/server/notification/EventConditionProvider;)Ljava/lang/Runnable;
-PLcom/android/server/notification/EventConditionProvider;->-get2(Lcom/android/server/notification/EventConditionProvider;)Landroid/os/Handler;
PLcom/android/server/notification/EventConditionProvider;->-wrap0(Lcom/android/server/notification/EventConditionProvider;)V
PLcom/android/server/notification/EventConditionProvider;->-wrap1(Lcom/android/server/notification/EventConditionProvider;)V
PLcom/android/server/notification/EventConditionProvider;-><init>()V
@@ -9381,55 +11654,41 @@ PLcom/android/server/notification/EventConditionProvider;->reloadTrackers()V
PLcom/android/server/notification/EventConditionProvider;->rescheduleAlarm(JJ)V
PLcom/android/server/notification/EventConditionProvider;->setRegistered(Z)V
PLcom/android/server/notification/GlobalSortKeyComparator;-><init>()V
-PLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/notification/GroupHelper;-><init>(Lcom/android/server/notification/GroupHelper$Callback;)V
PLcom/android/server/notification/GroupHelper;->adjustAutogroupingSummary(ILjava/lang/String;Ljava/lang/String;Z)V
PLcom/android/server/notification/GroupHelper;->maybeUngroup(Landroid/service/notification/StatusBarNotification;ZI)V
-PLcom/android/server/notification/GroupHelper;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;)V
+PLcom/android/server/notification/GroupHelper;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Z)V
PLcom/android/server/notification/GroupHelper;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V
PLcom/android/server/notification/ImportanceExtractor;-><init>()V
PLcom/android/server/notification/ImportanceExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/ImportanceExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/ManagedServices$1;-><init>(Lcom/android/server/notification/ManagedServices;Ljava/lang/String;IZI)V
PLcom/android/server/notification/ManagedServices$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/notification/ManagedServices$Config;-><init>()V
PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)V
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z
PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->getOwner()Lcom/android/server/notification/ManagedServices;
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z
-PLcom/android/server/notification/ManagedServices$SettingRestoredReceiver;-><init>(Lcom/android/server/notification/ManagedServices;)V
-PLcom/android/server/notification/ManagedServices$SettingsObserver;->-wrap0(Lcom/android/server/notification/ManagedServices$SettingsObserver;)V
-PLcom/android/server/notification/ManagedServices$SettingsObserver;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/Handler;)V
-PLcom/android/server/notification/ManagedServices$SettingsObserver;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/Handler;Lcom/android/server/notification/ManagedServices$SettingsObserver;)V
-PLcom/android/server/notification/ManagedServices$SettingsObserver;->observe()V
-PLcom/android/server/notification/ManagedServices$SettingsObserver;->update(Landroid/net/Uri;)V
PLcom/android/server/notification/ManagedServices$UserProfiles;-><init>()V
PLcom/android/server/notification/ManagedServices$UserProfiles;->getCurrentProfileIds()[I
PLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z
PLcom/android/server/notification/ManagedServices$UserProfiles;->updateCache(Landroid/content/Context;)V
-PLcom/android/server/notification/ManagedServices;->-get0(Lcom/android/server/notification/ManagedServices;)Lcom/android/server/notification/ManagedServices$Config;
-PLcom/android/server/notification/ManagedServices;->-get1(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet;
+PLcom/android/server/notification/ManagedServices;->-get1(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList;
PLcom/android/server/notification/ManagedServices;->-get2(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList;
-PLcom/android/server/notification/ManagedServices;->-get3(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList;
PLcom/android/server/notification/ManagedServices;->-wrap0(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->-wrap3(Lcom/android/server/notification/ManagedServices;Z)V
-PLcom/android/server/notification/ManagedServices;->-wrap4(Lcom/android/server/notification/ManagedServices;)V
-PLcom/android/server/notification/ManagedServices;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;)V
+PLcom/android/server/notification/ManagedServices;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
+PLcom/android/server/notification/ManagedServices;->addApprovedList(Ljava/lang/String;IZ)V
PLcom/android/server/notification/ManagedServices;->checkNotNull(Landroid/os/IInterface;)V
PLcom/android/server/notification/ManagedServices;->checkServiceTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->getApprovedValue(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/notification/ManagedServices;->getCaption()Ljava/lang/String;
-PLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List;
-PLcom/android/server/notification/ManagedServices;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet;
+PLcom/android/server/notification/ManagedServices;->getPackageName(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/notification/ManagedServices;->isComponentEnabledForCurrentProfiles(Landroid/content/ComponentName;)Z
+PLcom/android/server/notification/ManagedServices;->loadComponentNamesFromValues(Landroid/util/ArraySet;I)Landroid/util/ArraySet;
PLcom/android/server/notification/ManagedServices;->newServiceInfo(Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
PLcom/android/server/notification/ManagedServices;->onBootPhaseAppsCanStart()V
-PLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;)V
PLcom/android/server/notification/ManagedServices;->onUserSwitched(I)V
PLcom/android/server/notification/ManagedServices;->onUserUnlocked(I)V
PLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;I)Ljava/util/Set;
-PLcom/android/server/notification/ManagedServices;->rebindServices(Z)V
-PLcom/android/server/notification/ManagedServices;->rebuildRestoredPackages()V
+PLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;II)Ljava/util/Set;
+PLcom/android/server/notification/ManagedServices;->readXml(Lorg/xmlpull/v1/XmlPullParser;)V
PLcom/android/server/notification/ManagedServices;->registerService(Landroid/content/ComponentName;I)V
PLcom/android/server/notification/ManagedServices;->registerService(Landroid/os/IInterface;Landroid/content/ComponentName;I)V
PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Landroid/os/IInterface;Landroid/content/ComponentName;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
@@ -9437,32 +11696,28 @@ PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Lcom/and
PLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;I)V
PLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;IZ)V
PLcom/android/server/notification/ManagedServices;->removeServiceLocked(I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->restoredSettingName(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/notification/ManagedServices;->setComponentState(Landroid/content/ComponentName;Z)V
+PLcom/android/server/notification/ManagedServices;->setPackageOrComponentEnabled(Ljava/lang/String;IZZ)V
PLcom/android/server/notification/ManagedServices;->unregisterServiceLocked(Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/NotificationAdjustmentExtractor;-><init>()V
+PLcom/android/server/notification/NotificationAdjustmentExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/NotificationAdjustmentExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/NotificationChannelExtractor;-><init>()V
+PLcom/android/server/notification/NotificationChannelExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/NotificationChannelExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/NotificationComparator$1;-><init>(Lcom/android/server/notification/NotificationComparator;)V
PLcom/android/server/notification/NotificationComparator;-><init>(Landroid/content/Context;)V
-PLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationComparator;->isOngoing(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;-><init>(Lcom/android/server/notification/NotificationIntrusivenessExtractor;Ljava/lang/String;J)V
-PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->work()V
PLcom/android/server/notification/NotificationIntrusivenessExtractor;-><init>()V
PLcom/android/server/notification/NotificationIntrusivenessExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/NotificationIntrusivenessExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
-PLcom/android/server/notification/NotificationManagerService$11;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService$11;->run()V
-PLcom/android/server/notification/NotificationManagerService$12;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;ILjava/lang/String;IIIIZ)V
-PLcom/android/server/notification/NotificationManagerService$12;->run()V
-PLcom/android/server/notification/NotificationManagerService$13;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;IIIIZLjava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$13;->lambda$-com_android_server_notification_NotificationManagerService$13_194652(III)Z
+PLcom/android/server/notification/NotificationManagerService$10;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$11;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$11;->removeAutoGroupSummary(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$13;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationManagerService$13;->run()V
-PLcom/android/server/notification/NotificationManagerService$15;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$15;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;IIIIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$15;->lambda$-com_android_server_notification_NotificationManagerService$15_208265(III)Z
+PLcom/android/server/notification/NotificationManagerService$17;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
PLcom/android/server/notification/NotificationManagerService$1;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
PLcom/android/server/notification/NotificationManagerService$1;->clearEffects()V
PLcom/android/server/notification/NotificationManagerService$1;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V
@@ -9472,241 +11727,172 @@ PLcom/android/server/notification/NotificationManagerService$1;->onPanelRevealed
PLcom/android/server/notification/NotificationManagerService$1;->onSetDisabled(I)V
PLcom/android/server/notification/NotificationManagerService$2;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
PLcom/android/server/notification/NotificationManagerService$3;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/notification/NotificationManagerService$4;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/notification/NotificationManagerService$5$1;-><init>(Lcom/android/server/notification/NotificationManagerService$5;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
-PLcom/android/server/notification/NotificationManagerService$5$1;->run()V
PLcom/android/server/notification/NotificationManagerService$5;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$5;->areNotificationsEnabled(Ljava/lang/String;)Z
-PLcom/android/server/notification/NotificationManagerService$5;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
-PLcom/android/server/notification/NotificationManagerService$5;->cancelAllNotifications(Ljava/lang/String;I)V
-PLcom/android/server/notification/NotificationManagerService$5;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
-PLcom/android/server/notification/NotificationManagerService$5;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
-PLcom/android/server/notification/NotificationManagerService$5;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V
-PLcom/android/server/notification/NotificationManagerService$5;->enforceSystemOrSystemUI(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$5;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V
-PLcom/android/server/notification/NotificationManagerService$5;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/NotificationManagerService$5;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/NotificationManagerService$5;->getEffectsSuppressor()Landroid/content/ComponentName;
-PLcom/android/server/notification/NotificationManagerService$5;->getNotificationChannel(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
-PLcom/android/server/notification/NotificationManagerService$5;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/NotificationManagerService$5;->getNotificationChannels(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/NotificationManagerService$5;->getZenMode()I
-PLcom/android/server/notification/NotificationManagerService$5;->getZenModeConfig()Landroid/service/notification/ZenModeConfig;
-PLcom/android/server/notification/NotificationManagerService$5;->isSystemConditionProviderEnabled(Ljava/lang/String;)Z
-PLcom/android/server/notification/NotificationManagerService$5;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V
-PLcom/android/server/notification/NotificationManagerService$5;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V
-PLcom/android/server/notification/NotificationManagerService$5;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V
-PLcom/android/server/notification/NotificationManagerService$5;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;
-PLcom/android/server/notification/NotificationManagerService$5;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V
-PLcom/android/server/notification/NotificationManagerService$5;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V
PLcom/android/server/notification/NotificationManagerService$6;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$6;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
+PLcom/android/server/notification/NotificationManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/NotificationManagerService$7$1;-><init>(Lcom/android/server/notification/NotificationManagerService$7;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/NotificationManagerService$7$1;->run()V
PLcom/android/server/notification/NotificationManagerService$7;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$7;->onConfigChanged()V
+PLcom/android/server/notification/NotificationManagerService$7;->areNotificationsEnabled(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$7;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$7;->cancelAllNotifications(Ljava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$7;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$7;->enforcePolicyAccess(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$7;->enforceSystemOrSystemUI(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$7;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V
+PLcom/android/server/notification/NotificationManagerService$7;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;I)V
+PLcom/android/server/notification/NotificationManagerService$7;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$7;->getEffectsSuppressor()Landroid/content/ComponentName;
+PLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannels(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$7;->getZenMode()I
+PLcom/android/server/notification/NotificationManagerService$7;->getZenModeConfig()Landroid/service/notification/ZenModeConfig;
+PLcom/android/server/notification/NotificationManagerService$7;->getZenRules()Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService$7;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/NotificationManagerService$7;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/NotificationManagerService$7;->requestBindListener(Landroid/content/ComponentName;)V
+PLcom/android/server/notification/NotificationManagerService$7;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V
+PLcom/android/server/notification/NotificationManagerService$7;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$7;->setNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;IZ)V
+PLcom/android/server/notification/NotificationManagerService$7;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V
+PLcom/android/server/notification/NotificationManagerService$7;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V
PLcom/android/server/notification/NotificationManagerService$8;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$8;->removeAutoGroupSummary(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$8;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
PLcom/android/server/notification/NotificationManagerService$9;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$9;->onConfigChanged()V
PLcom/android/server/notification/NotificationManagerService$Archive;-><init>(I)V
PLcom/android/server/notification/NotificationManagerService$Archive;->record(Landroid/service/notification/StatusBarNotification;)V
PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;ILcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/IPackageManager;)V
PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isEnabled()Z
PLcom/android/server/notification/NotificationManagerService$NotificationListeners$2;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners$2;->run()V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$7;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$7;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$8;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$8;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap3(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap5(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap2(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap4(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/IPackageManager;)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getOnNotificationPostedTrim(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)I
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$-com_android_server_notification_NotificationManagerService$NotificationListeners_243589(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPosted(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemoved(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemovedLocked(Landroid/service/notification/StatusBarNotification;I)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-PLcom/android/server/notification/NotificationManagerService$PolicyAccess;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService$PolicyAccess;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$PolicyAccess;)V
-PLcom/android/server/notification/NotificationManagerService$PolicyAccess;->getGrantedPackages()Landroid/util/ArraySet;
-PLcom/android/server/notification/NotificationManagerService$PolicyAccess;->put(Ljava/lang/String;Z)V
PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Landroid/service/notification/StatusBarNotification;)V
PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;->run()V
PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->run()V
PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V
-PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestReconsideration(Lcom/android/server/notification/RankingReconsideration;)V
-PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestSort(Z)V
PLcom/android/server/notification/NotificationManagerService$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Handler;)V
PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->observe()V
PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;)V
PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;-><init>(Landroid/service/notification/StatusBarNotification;)V
PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$ToastRecord;-><init>(ILjava/lang/String;Landroid/app/ITransientNotification;ILandroid/os/Binder;)V
PLcom/android/server/notification/NotificationManagerService$TrimCache;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)V
PLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification;
PLcom/android/server/notification/NotificationManagerService$WorkerHandler;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V
-PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/notification/NotificationManagerService;->-get1()I
-PLcom/android/server/notification/NotificationManagerService;->-get10(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/Handler;
-PLcom/android/server/notification/NotificationManagerService;->-get16(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
-PLcom/android/server/notification/NotificationManagerService;->-get17(Lcom/android/server/notification/NotificationManagerService;)F
-PLcom/android/server/notification/NotificationManagerService;->-get18(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;
-PLcom/android/server/notification/NotificationManagerService;->-get19(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/Light;
+PLcom/android/server/notification/NotificationManagerService;->-get10(Lcom/android/server/notification/NotificationManagerService;)Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService;->-get11(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper;
+PLcom/android/server/notification/NotificationManagerService;->-get12(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
+PLcom/android/server/notification/NotificationManagerService;->-get19(Lcom/android/server/notification/NotificationManagerService;)F
PLcom/android/server/notification/NotificationManagerService;->-get2()I
-PLcom/android/server/notification/NotificationManagerService;->-get20(Lcom/android/server/notification/NotificationManagerService;)Z
-PLcom/android/server/notification/NotificationManagerService;->-get21(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/IPackageManager;
-PLcom/android/server/notification/NotificationManagerService;->-get24(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/RankingHelper;
-PLcom/android/server/notification/NotificationManagerService;->-get25(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver;
-PLcom/android/server/notification/NotificationManagerService;->-get26(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper;
-PLcom/android/server/notification/NotificationManagerService;->-get27(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats;
-PLcom/android/server/notification/NotificationManagerService;->-get28(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles;
-PLcom/android/server/notification/NotificationManagerService;->-get30(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ZenModeHelper;
-PLcom/android/server/notification/NotificationManagerService;->-get4(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/usage/UsageStatsManagerInternal;
-PLcom/android/server/notification/NotificationManagerService;->-get7(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders;
-PLcom/android/server/notification/NotificationManagerService;->-get8(Lcom/android/server/notification/NotificationManagerService;)Ljava/util/List;
-PLcom/android/server/notification/NotificationManagerService;->-get9(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper;
+PLcom/android/server/notification/NotificationManagerService;->-get20(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/Light;
+PLcom/android/server/notification/NotificationManagerService;->-get21(Lcom/android/server/notification/NotificationManagerService;)Z
+PLcom/android/server/notification/NotificationManagerService;->-get22(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/IPackageManager;
+PLcom/android/server/notification/NotificationManagerService;->-get26(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver;
+PLcom/android/server/notification/NotificationManagerService;->-get28(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats;
+PLcom/android/server/notification/NotificationManagerService;->-get29(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles;
+PLcom/android/server/notification/NotificationManagerService;->-get3(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/ActivityManager;
+PLcom/android/server/notification/NotificationManagerService;->-get30(Lcom/android/server/notification/NotificationManagerService;)Landroid/view/WindowManagerInternal;
+PLcom/android/server/notification/NotificationManagerService;->-get5(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/usage/UsageStatsManagerInternal;
+PLcom/android/server/notification/NotificationManagerService;->-get7(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;
+PLcom/android/server/notification/NotificationManagerService;->-get9(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders;
PLcom/android/server/notification/NotificationManagerService;->-set1(Lcom/android/server/notification/NotificationManagerService;Z)Z
-PLcom/android/server/notification/NotificationManagerService;->-set4(Lcom/android/server/notification/NotificationManagerService;F)F
+PLcom/android/server/notification/NotificationManagerService;->-set2(Lcom/android/server/notification/NotificationManagerService;F)F
PLcom/android/server/notification/NotificationManagerService;->-wrap0(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
-PLcom/android/server/notification/NotificationManagerService;->-wrap12(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap13(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap14(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;Z)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap15(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZI)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap17(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap19(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap2(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
-PLcom/android/server/notification/NotificationManagerService;->-wrap20(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap21(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap1(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z
+PLcom/android/server/notification/NotificationManagerService;->-wrap10(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService;->-wrap13(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap14(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap15(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap16(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap19(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap2(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService;->-wrap21(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;)V
PLcom/android/server/notification/NotificationManagerService;->-wrap22(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap26(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap29(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap3(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
-PLcom/android/server/notification/NotificationManagerService;->-wrap30(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap31(Lcom/android/server/notification/NotificationManagerService;)V
-PLcom/android/server/notification/NotificationManagerService;->-wrap8(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService;->-wrap23(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap24(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap28(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap34(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->-wrap4(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->-wrap6(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/notification/NotificationManagerService;->applyZenModeLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsByListLocked(Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;)V
PLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsInt(IILjava/lang/String;Ljava/lang/String;IIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenLocked(Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;Z)V
-PLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-PLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZI)V
-PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationManagerService;->clamp(III)I
+PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenByListLocked(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
+PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenLocked(Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
+PLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->cancelToastLocked(I)V
+PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystem()V
+PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrShell()V
PLcom/android/server/notification/NotificationManagerService;->clearAutogroupSummaryLocked(ILjava/lang/String;)V
PLcom/android/server/notification/NotificationManagerService;->clearLightsLocked()V
PLcom/android/server/notification/NotificationManagerService;->clearSoundLocked()V
PLcom/android/server/notification/NotificationManagerService;->clearVibrateLocked()V
PLcom/android/server/notification/NotificationManagerService;->disableNotificationEffects(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
-PLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
PLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
-PLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
-PLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
-PLcom/android/server/notification/NotificationManagerService;->findNotificationRecordIndexLocked(Lcom/android/server/notification/NotificationRecord;)I
PLcom/android/server/notification/NotificationManagerService;->getCompanionManager()Landroid/companion/ICompanionDeviceManager;
+PLcom/android/server/notification/NotificationManagerService;->getGroupHelper()Lcom/android/server/notification/GroupHelper;
PLcom/android/server/notification/NotificationManagerService;->getLongArray(Landroid/content/res/Resources;II[J)[J
PLcom/android/server/notification/NotificationManagerService;->handleGroupedNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
-PLcom/android/server/notification/NotificationManagerService;->handleRankingReconsideration(Landroid/os/Message;)V
-PLcom/android/server/notification/NotificationManagerService;->handleRankingSort(Landroid/os/Message;)V
-PLcom/android/server/notification/NotificationManagerService;->handleSavePolicyFile()V
-PLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I
-PLcom/android/server/notification/NotificationManagerService;->init(Landroid/os/Looper;Landroid/content/pm/IPackageManager;Landroid/content/pm/PackageManager;Lcom/android/server/lights/LightsManager;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Landroid/companion/ICompanionDeviceManager;Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/NotificationManagerService;->handleTimeout(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->hasAutoGroupSummaryLocked(Landroid/service/notification/StatusBarNotification;)Z
+PLcom/android/server/notification/NotificationManagerService;->indexOfToastLocked(Ljava/lang/String;Landroid/app/ITransientNotification;)I
+PLcom/android/server/notification/NotificationManagerService;->indexOfToastPackageLocked(Ljava/lang/String;)I
+PLcom/android/server/notification/NotificationManagerService;->init(Landroid/os/Looper;Landroid/content/pm/IPackageManager;Landroid/content/pm/PackageManager;Lcom/android/server/lights/LightsManager;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ConditionProviders;Landroid/companion/ICompanionDeviceManager;Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/NotificationUsageStats;Landroid/util/AtomicFile;Landroid/app/ActivityManager;Lcom/android/server/notification/GroupHelper;)V
PLcom/android/server/notification/NotificationManagerService;->isBlocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationUsageStats;)Z
PLcom/android/server/notification/NotificationManagerService;->isCallerInstantApp(Ljava/lang/String;)Z
-PLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z
-PLcom/android/server/notification/NotificationManagerService;->isNotificationForCurrentUser(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/NotificationManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
-PLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z
-PLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->keepProcessAliveIfNeededLocked(I)V
PLcom/android/server/notification/NotificationManagerService;->listenForCallState()V
PLcom/android/server/notification/NotificationManagerService;->loadPolicyFile()V
-PLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;I)Z
PLcom/android/server/notification/NotificationManagerService;->onBootPhase(I)V
PLcom/android/server/notification/NotificationManagerService;->onStart()V
PLcom/android/server/notification/NotificationManagerService;->readPolicyXml(Ljava/io/InputStream;Z)V
PLcom/android/server/notification/NotificationManagerService;->recordCallerLocked(Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
+PLcom/android/server/notification/NotificationManagerService;->removeFromNotificationListsLocked(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;II)I
-PLcom/android/server/notification/NotificationManagerService;->savePolicyFile()V
+PLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
PLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->sendAccessibilityEvent(Landroid/app/Notification;Ljava/lang/CharSequence;)V
+PLcom/android/server/notification/NotificationManagerService;->showNextToastLocked()V
PLcom/android/server/notification/NotificationManagerService;->updateLightsLocked()V
-PLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;Z)V
-PLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V
-PLcom/android/server/notification/NotificationRecord;->applyUserImportance()V
PLcom/android/server/notification/NotificationRecord;->calculateAttributes()Landroid/media/AudioAttributes;
-PLcom/android/server/notification/NotificationRecord;->calculateImportance()I
-PLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light;
PLcom/android/server/notification/NotificationRecord;->calculateRankingTimeMs(J)J
PLcom/android/server/notification/NotificationRecord;->calculateSound()Landroid/net/Uri;
PLcom/android/server/notification/NotificationRecord;->calculateVibration()[J
-PLcom/android/server/notification/NotificationRecord;->canShowBadge()Z
PLcom/android/server/notification/NotificationRecord;->copyRankingInformation(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationRecord;->getAuthoritativeRank()I
-PLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel;
PLcom/android/server/notification/NotificationRecord;->getChannelIdLogTag()Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->getContactAffinity()F
PLcom/android/server/notification/NotificationRecord;->getExposureMs(J)I
-PLcom/android/server/notification/NotificationRecord;->getFlags()I
-PLcom/android/server/notification/NotificationRecord;->getFreshnessMs(J)I
-PLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String;
PLcom/android/server/notification/NotificationRecord;->getGroupLogTag()Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence;
-PLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->getLastIntrusive()J
PLcom/android/server/notification/NotificationRecord;->getLifespanMs(J)I
PLcom/android/server/notification/NotificationRecord;->getLight()Lcom/android/server/notification/NotificationRecord$Light;
-PLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;
-PLcom/android/server/notification/NotificationRecord;->getPackagePriority()I
-PLcom/android/server/notification/NotificationRecord;->getPackageVisibilityOverride()I
-PLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList;
-PLcom/android/server/notification/NotificationRecord;->getRankingTimeMs()J
-PLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList;
-PLcom/android/server/notification/NotificationRecord;->getSuppressedVisualEffects()I
-PLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle;
-PLcom/android/server/notification/NotificationRecord;->getUserExplanation()Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->getUserId()I
PLcom/android/server/notification/NotificationRecord;->isCategory(Ljava/lang/String;)Z
-PLcom/android/server/notification/NotificationRecord;->isIntercepted()Z
PLcom/android/server/notification/NotificationRecord;->isPreChannelsNotification()Z
-PLcom/android/server/notification/NotificationRecord;->isRecentlyIntrusive()Z
PLcom/android/server/notification/NotificationRecord;->isSeen()Z
-PLcom/android/server/notification/NotificationRecord;->setAuthoritativeRank(I)V
PLcom/android/server/notification/NotificationRecord;->setContactAffinity(F)V
-PLcom/android/server/notification/NotificationRecord;->setGlobalSortKey(Ljava/lang/String;)V
PLcom/android/server/notification/NotificationRecord;->setIntercepted(Z)Z
-PLcom/android/server/notification/NotificationRecord;->setPackagePriority(I)V
-PLcom/android/server/notification/NotificationRecord;->setPackageVisibilityOverride(I)V
-PLcom/android/server/notification/NotificationRecord;->setRecentlyIntrusive(Z)V
PLcom/android/server/notification/NotificationRecord;->setSeen()V
-PLcom/android/server/notification/NotificationRecord;->setShowBadge(Z)V
PLcom/android/server/notification/NotificationRecord;->setSuppressedVisualEffects(I)V
-PLcom/android/server/notification/NotificationRecord;->setUserImportance(I)V
-PLcom/android/server/notification/NotificationRecord;->setVisibility(ZI)V
PLcom/android/server/notification/NotificationRecord;->shortenTag(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/notification/NotificationUsageStats$1;-><init>(Lcom/android/server/notification/NotificationUsageStats;Landroid/os/Looper;)V
PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;-><init>(Landroid/content/Context;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->getEnqueueRate(J)F
PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->updateInterarrivalEstimate(J)V
-PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><init>(Landroid/content/Context;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->increment(I)V
PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$1;-><init>(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;Landroid/os/Looper;)V
PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$2;-><init>(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V
@@ -9715,10 +11901,8 @@ PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;-><init>(Land
PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logPosted(Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logRemoved(Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->pruneIfNecessary(Landroid/database/sqlite/SQLiteDatabase;)V
-PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationDetails(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V
PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationIdentifiers(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V
PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putPosttimeVisibility(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V
-PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->writeEvent(JILcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;-><init>()V
PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->finish()V
PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentAirtimeExpandedMs()J
@@ -9730,47 +11914,27 @@ PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats
PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateFrom(Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;)V
PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateVisiblyExpandedStats()V
PLcom/android/server/notification/NotificationUsageStats;-><init>(Landroid/content/Context;)V
-PLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Lcom/android/server/notification/NotificationRecord;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
-PLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
PLcom/android/server/notification/NotificationUsageStats;->getAppEnqueueRate(Ljava/lang/String;)F
PLcom/android/server/notification/NotificationUsageStats;->registerEnqueuedByApp(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V
PLcom/android/server/notification/NotificationUsageStats;->registerPostedByApp(Lcom/android/server/notification/NotificationRecord;)V
PLcom/android/server/notification/NotificationUsageStats;->registerRemovedByApp(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationUsageStats;->registerUpdatedByApp(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V
PLcom/android/server/notification/PriorityExtractor;-><init>()V
PLcom/android/server/notification/PriorityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/PriorityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/PropConfig;->getStringArray(Landroid/content/Context;Ljava/lang/String;I)[Ljava/lang/String;
PLcom/android/server/notification/RankingHelper$Record;-><init>()V
PLcom/android/server/notification/RankingHelper$Record;-><init>(Lcom/android/server/notification/RankingHelper$Record;)V
PLcom/android/server/notification/RankingHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/NotificationUsageStats;[Ljava/lang/String;)V
-PLcom/android/server/notification/RankingHelper;->badgingEnabled(Landroid/os/UserHandle;)Z
-PLcom/android/server/notification/RankingHelper;->canShowBadge(Ljava/lang/String;I)Z
+PLcom/android/server/notification/RankingHelper;->clearLockedFields(Landroid/app/NotificationChannel;)V
PLcom/android/server/notification/RankingHelper;->createDefaultChannelIfNeeded(Lcom/android/server/notification/RankingHelper$Record;)V
-PLcom/android/server/notification/RankingHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V
-PLcom/android/server/notification/RankingHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;Z)V
PLcom/android/server/notification/RankingHelper;->deleteDefaultChannelIfNeeded(Lcom/android/server/notification/RankingHelper$Record;)V
-PLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/RankingHelper;->deleteNotificationChannel(Ljava/lang/String;ILjava/lang/String;)V
PLcom/android/server/notification/RankingHelper;->getChannelLog(Landroid/app/NotificationChannel;Ljava/lang/String;)Landroid/metrics/LogMaker;
PLcom/android/server/notification/RankingHelper;->getImportance(Ljava/lang/String;I)I
-PLcom/android/server/notification/RankingHelper;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel;
PLcom/android/server/notification/RankingHelper;->getNotificationChannelGroups(Ljava/lang/String;I)Ljava/util/Collection;
PLcom/android/server/notification/RankingHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/RankingHelper;->getOrCreateRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record;
-PLcom/android/server/notification/RankingHelper;->getRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record;
-PLcom/android/server/notification/RankingHelper;->indexOf(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;)I
-PLcom/android/server/notification/RankingHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)V
-PLcom/android/server/notification/RankingHelper;->safeBool(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Z)Z
PLcom/android/server/notification/RankingHelper;->shouldHaveDefaultChannel(Lcom/android/server/notification/RankingHelper$Record;)Z
PLcom/android/server/notification/RankingHelper;->updateBadgingEnabled()V
-PLcom/android/server/notification/RankingHelper;->updateConfig()V
-PLcom/android/server/notification/RankingReconsideration;-><init>(Ljava/lang/String;J)V
-PLcom/android/server/notification/RankingReconsideration;->getDelay(Ljava/util/concurrent/TimeUnit;)J
-PLcom/android/server/notification/RankingReconsideration;->getKey()Ljava/lang/String;
-PLcom/android/server/notification/RankingReconsideration;->run()V
PLcom/android/server/notification/RateEstimator;-><init>()V
PLcom/android/server/notification/RateEstimator;->getInterarrivalEstimate(J)D
PLcom/android/server/notification/RateEstimator;->getRate(J)F
@@ -9810,37 +11974,28 @@ PLcom/android/server/notification/ScheduleConditionProvider;->updateAlarm(JJ)V
PLcom/android/server/notification/SnoozeHelper$1;-><init>(Lcom/android/server/notification/SnoozeHelper;)V
PLcom/android/server/notification/SnoozeHelper;-><init>(Landroid/content/Context;Lcom/android/server/notification/SnoozeHelper$Callback;Lcom/android/server/notification/ManagedServices$UserProfiles;)V
PLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;)Z
-PLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z
PLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;
PLcom/android/server/notification/SnoozeHelper;->isSnoozed(ILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/notification/SnoozeHelper;->repostGroupSummary(Ljava/lang/String;ILjava/lang/String;)V
PLcom/android/server/notification/SystemConditionProviderService;-><init>()V
PLcom/android/server/notification/SystemConditionProviderService;->formatDuration(J)Ljava/lang/String;
PLcom/android/server/notification/SystemConditionProviderService;->ts(J)Ljava/lang/String;
PLcom/android/server/notification/ValidateNotificationPeople$1;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/os/Handler;)V
PLcom/android/server/notification/ValidateNotificationPeople;-><init>()V
-PLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
-PLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String;
PLcom/android/server/notification/ValidateNotificationPeople;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/ValidateNotificationPeople;->setConfig(Lcom/android/server/notification/RankingConfig;)V
-PLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
-PLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[F)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;
PLcom/android/server/notification/VisibilityExtractor;-><init>()V
PLcom/android/server/notification/VisibilityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
-PLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
PLcom/android/server/notification/VisibilityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
PLcom/android/server/notification/ZenLog;->append(ILjava/lang/String;)V
-PLcom/android/server/notification/ZenLog;->ringerModeToString(I)Ljava/lang/String;
PLcom/android/server/notification/ZenLog;->subscribeResult(Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)Ljava/lang/String;
PLcom/android/server/notification/ZenLog;->traceConfig(Ljava/lang/String;Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;)V
-PLcom/android/server/notification/ZenLog;->traceSetRingerModeInternal(IILjava/lang/String;II)V
PLcom/android/server/notification/ZenLog;->traceSetZenMode(ILjava/lang/String;)V
PLcom/android/server/notification/ZenLog;->traceSubscribe(Landroid/net/Uri;Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)V
PLcom/android/server/notification/ZenLog;->typeToString(I)Ljava/lang/String;
PLcom/android/server/notification/ZenLog;->zenModeToString(I)Ljava/lang/String;
PLcom/android/server/notification/ZenModeConditions;-><init>(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ConditionProviders;)V
PLcom/android/server/notification/ZenModeConditions;->evaluateConfig(Landroid/service/notification/ZenModeConfig;Z)V
-PLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Z)V
PLcom/android/server/notification/ZenModeConditions;->onBootComplete()V
PLcom/android/server/notification/ZenModeConditions;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V
PLcom/android/server/notification/ZenModeConditions;->onServiceAdded(Landroid/content/ComponentName;)V
@@ -9852,7 +12007,6 @@ PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;-><init>(Lcom/a
PLcom/android/server/notification/ZenModeFiltering;-><init>(Landroid/content/Context;)V
PLcom/android/server/notification/ZenModeFiltering;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/ZenModeFiltering;->isDefaultPhoneApp(Ljava/lang/String;)Z
-PLcom/android/server/notification/ZenModeFiltering;->isSystem(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/ZenModeFiltering;->shouldIntercept(ILandroid/service/notification/ZenModeConfig;Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/ZenModeHelper$Callback;-><init>()V
PLcom/android/server/notification/ZenModeHelper$Callback;->onConfigChanged()V
@@ -9879,11 +12033,11 @@ PLcom/android/server/notification/ZenModeHelper;->-wrap1(Lcom/android/server/not
PLcom/android/server/notification/ZenModeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/notification/ConditionProviders;)V
PLcom/android/server/notification/ZenModeHelper;->addCallback(Lcom/android/server/notification/ZenModeHelper$Callback;)V
PLcom/android/server/notification/ZenModeHelper;->appendDefaultEventRules(Landroid/service/notification/ZenModeConfig;)V
+PLcom/android/server/notification/ZenModeHelper;->appendDefaultRules(Landroid/service/notification/ZenModeConfig;)V
PLcom/android/server/notification/ZenModeHelper;->appendDefaultScheduleRules(Landroid/service/notification/ZenModeConfig;)V
PLcom/android/server/notification/ZenModeHelper;->applyConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)V
-PLcom/android/server/notification/ZenModeHelper;->applyRestrictions()V
-PLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZI)V
PLcom/android/server/notification/ZenModeHelper;->applyZenToRingerMode()V
+PLcom/android/server/notification/ZenModeHelper;->canManageAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
PLcom/android/server/notification/ZenModeHelper;->cleanUpZenRules()V
PLcom/android/server/notification/ZenModeHelper;->computeZenMode()I
PLcom/android/server/notification/ZenModeHelper;->dispatchOnConfigChanged()V
@@ -9892,6 +12046,7 @@ PLcom/android/server/notification/ZenModeHelper;->getConfig()Landroid/service/no
PLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy(Landroid/service/notification/ZenModeConfig;)Landroid/app/NotificationManager$Policy;
PLcom/android/server/notification/ZenModeHelper;->getZenMode()I
PLcom/android/server/notification/ZenModeHelper;->getZenModeListenerInterruptionFilter()I
+PLcom/android/server/notification/ZenModeHelper;->getZenRules()Ljava/util/List;
PLcom/android/server/notification/ZenModeHelper;->initZenMode()V
PLcom/android/server/notification/ZenModeHelper;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/ZenModeHelper;->loadConfigForUser(ILjava/lang/String;)V
@@ -9903,10 +12058,10 @@ PLcom/android/server/notification/ZenModeHelper;->readXml(Lorg/xmlpull/v1/XmlPul
PLcom/android/server/notification/ZenModeHelper;->setConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;)V
PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;)Z
PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)Z
+PLcom/android/server/notification/ZenModeHelper;->setDefaultZenRules(Landroid/content/Context;)V
PLcom/android/server/notification/ZenModeHelper;->setZenModeSetting(I)V
PLcom/android/server/notification/ZenModeHelper;->shouldIntercept(Lcom/android/server/notification/NotificationRecord;)Z
PLcom/android/server/notification/ZenModeHelper;->updateRingerModeAffectedStreams()V
-PLcom/android/server/notification/ZenModeHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
PLcom/android/server/oemlock/OemLock;-><init>()V
PLcom/android/server/oemlock/OemLockService$1;-><init>(Lcom/android/server/oemlock/OemLockService;)V
PLcom/android/server/oemlock/OemLockService$1;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
@@ -9923,12 +12078,6 @@ PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$1;->get()Ljava/lang
PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;->$m$0(Ljava/lang/Object;)I
PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;-><init>()V
PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;->applyAsInt(Ljava/lang/Object;)I
-PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->$m$0(Ljava/lang/Object;)Z
-PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;-><init>(Ljava/lang/Object;)V
-PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->test(Ljava/lang/Object;)Z
-PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->$m$0(Ljava/lang/Object;)Z
-PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;-><init>(I)V
-PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->test(Ljava/lang/Object;)Z
PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$0(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$1(Ljava/lang/Object;)Ljava/lang/Object;
PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$2(Ljava/lang/Object;)Ljava/lang/Object;
@@ -9943,21 +12092,20 @@ PLcom/android/server/om/IdmapManager;->createIdmap(Landroid/content/pm/PackageIn
PLcom/android/server/om/IdmapManager;->getIdmapPath(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/om/IdmapManager;->idmapExists(Landroid/content/pm/PackageInfo;I)Z
PLcom/android/server/om/OverlayManagerService$1;-><init>(Lcom/android/server/om/OverlayManagerService;)V
-PLcom/android/server/om/OverlayManagerService$1;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
-PLcom/android/server/om/OverlayManagerService$1;->handleIncomingUser(ILjava/lang/String;)I
PLcom/android/server/om/OverlayManagerService$OverlayChangeListener;-><init>(Lcom/android/server/om/OverlayManagerService;)V
PLcom/android/server/om/OverlayManagerService$OverlayChangeListener;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$OverlayChangeListener;)V
PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;-><init>()V
PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->cachePackageInfo(Ljava/lang/String;ILandroid/content/pm/PackageInfo;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->forgetPackageInfo(Ljava/lang/String;I)V
PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getCachedPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getOverlayPackages(I)Ljava/util/List;
PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
PLcom/android/server/om/OverlayManagerService$PackageReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;)V
PLcom/android/server/om/OverlayManagerService$PackageReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$PackageReceiver;)V
-PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageAdded(Ljava/lang/String;[I)V
PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageChanged(Ljava/lang/String;[I)V
-PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageUpgraded(Ljava/lang/String;[I)V
+PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageUpgrading(Ljava/lang/String;[I)V
PLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;)V
PLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$UserReceiver;)V
PLcom/android/server/om/OverlayManagerService;->-get0(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayManagerServiceImpl;
@@ -9968,7 +12116,7 @@ PLcom/android/server/om/OverlayManagerService;-><init>(Landroid/content/Context;
PLcom/android/server/om/OverlayManagerService;->getDefaultOverlayPackages()Ljava/util/Set;
PLcom/android/server/om/OverlayManagerService;->initIfNeeded()V
PLcom/android/server/om/OverlayManagerService;->isOverlayPackage(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/om/OverlayManagerService;->lambda$-com_android_server_om_OverlayManagerService_30951()V
+PLcom/android/server/om/OverlayManagerService;->lambda$-com_android_server_om_OverlayManagerService_31270()V
PLcom/android/server/om/OverlayManagerService;->lambda$-com_android_server_om_OverlayManagerService_9907()V
PLcom/android/server/om/OverlayManagerService;->onBootPhase(I)V
PLcom/android/server/om/OverlayManagerService;->onStart()V
@@ -9976,16 +12124,16 @@ PLcom/android/server/om/OverlayManagerService;->onSwitchUser(I)V
PLcom/android/server/om/OverlayManagerService;->restoreSettings()V
PLcom/android/server/om/OverlayManagerService;->schedulePersistSettings()V
PLcom/android/server/om/OverlayManagerService;->updateAssets(ILjava/util/List;)V
-PLcom/android/server/om/OverlayManagerService;->updateOverlayPaths(ILjava/util/List;)V
PLcom/android/server/om/OverlayManagerServiceImpl;-><init>(Lcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;Lcom/android/server/om/IdmapManager;Lcom/android/server/om/OverlayManagerSettings;Ljava/util/Set;Lcom/android/server/om/OverlayManagerServiceImpl$OverlayChangeListener;)V
PLcom/android/server/om/OverlayManagerServiceImpl;->calculateNewState(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)I
-PLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPackageNames(Ljava/lang/String;I)Ljava/util/List;
PLcom/android/server/om/OverlayManagerServiceImpl;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
-PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageAdded(Ljava/lang/String;I)V
PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageChanged(Ljava/lang/String;I)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageUpgraded(Ljava/lang/String;I)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageUpgrading(Ljava/lang/String;I)V
PLcom/android/server/om/OverlayManagerServiceImpl;->updateAllOverlaysForTarget(Ljava/lang/String;ILandroid/content/pm/PackageInfo;)Z
PLcom/android/server/om/OverlayManagerServiceImpl;->updateOverlaysForUser(I)Ljava/util/ArrayList;
PLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)Z
+PLcom/android/server/om/OverlayManagerSettings$BadKeyException;-><init>(Ljava/lang/String;I)V
PLcom/android/server/om/OverlayManagerSettings$Serializer;->persist(Ljava/util/ArrayList;Ljava/io/OutputStream;)V
PLcom/android/server/om/OverlayManagerSettings$Serializer;->persistRow(Lcom/android/internal/util/FastXmlSerializer;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
PLcom/android/server/om/OverlayManagerSettings$Serializer;->restore(Ljava/util/ArrayList;Ljava/io/InputStream;)V
@@ -9993,21 +12141,17 @@ PLcom/android/server/om/OverlayManagerSettings$Serializer;->restoreRow(Lorg/xmlp
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get0(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get1(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get2(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get4(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get5(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get6(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get7(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap0(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo;
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap1(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap6(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap7(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap9(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZZI)V
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getOverlayInfo()Landroid/content/om/OverlayInfo;
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getState()I
-PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetPackageName()Ljava/lang/String;
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getUserId()I
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->isEnabled()Z
PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setBaseCodePath(Ljava/lang/String;)Z
@@ -10017,52 +12161,33 @@ PLcom/android/server/om/OverlayManagerSettings;->-com_android_server_om_OverlayM
PLcom/android/server/om/OverlayManagerSettings;->-com_android_server_om_OverlayManagerSettings-mthref-3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
PLcom/android/server/om/OverlayManagerSettings;-><init>()V
PLcom/android/server/om/OverlayManagerSettings;->getEnabled(Ljava/lang/String;I)Z
-PLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
-PLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(Ljava/lang/String;I)Ljava/util/List;
PLcom/android/server/om/OverlayManagerSettings;->getOverlaysForUser(I)Landroid/util/ArrayMap;
PLcom/android/server/om/OverlayManagerSettings;->getState(Ljava/lang/String;I)I
PLcom/android/server/om/OverlayManagerSettings;->getUsers()[I
-PLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19551(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
-PLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19778(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
PLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_6314(Landroid/content/om/OverlayInfo;)Ljava/lang/String;
PLcom/android/server/om/OverlayManagerSettings;->persist(Ljava/io/OutputStream;)V
PLcom/android/server/om/OverlayManagerSettings;->restore(Ljava/io/InputStream;)V
-PLcom/android/server/om/OverlayManagerSettings;->select(Ljava/lang/String;I)I
-PLcom/android/server/om/OverlayManagerSettings;->selectWhereTarget(Ljava/lang/String;I)Ljava/util/stream/Stream;
-PLcom/android/server/om/OverlayManagerSettings;->selectWhereUser(I)Ljava/util/stream/Stream;
PLcom/android/server/om/OverlayManagerSettings;->setBaseCodePath(Ljava/lang/String;ILjava/lang/String;)Z
PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerial()Ljava/lang/String;
PLcom/android/server/os/SchedulingPolicyService;-><init>()V
PLcom/android/server/os/SchedulingPolicyService;->isPermitted()Z
PLcom/android/server/os/SchedulingPolicyService;->requestPriority(IIIZ)I
-PLcom/android/server/pm/-$Lambda$4qJi2sHY5X4ys3rtlAQIsVPSn60;->$m$1(Ljava/lang/Object;)V
-PLcom/android/server/pm/-$Lambda$4qJi2sHY5X4ys3rtlAQIsVPSn60;-><init>(BLjava/lang/Object;)V
-PLcom/android/server/pm/-$Lambda$4qJi2sHY5X4ys3rtlAQIsVPSn60;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/-$Lambda$KFbchFEqJgs_hY1HweauKRNA_ds;-><init>(BLjava/lang/Object;)V
-PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->$m$1(Ljava/lang/Object;)V
PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;-><init>(BILjava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;->$m$6(Ljava/lang/Object;)V
PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;-><init>(B)V
+PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;->accept(Ljava/lang/Object;)V
PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$0()V
-PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$1()V
-PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$2()V
PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$3()V
-PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;-><init>(BILjava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->run()V
PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$1()V
PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$2()V
PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$3()V
PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;-><init>(BLjava/lang/Object;)V
PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->run()V
-PLcom/android/server/pm/-$Lambda$kozCdtU4hxwnpbopzC6ZLMsBV5E$2;->$m$1()V
-PLcom/android/server/pm/-$Lambda$kozCdtU4hxwnpbopzC6ZLMsBV5E$2;-><init>(BIJLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/pm/-$Lambda$kozCdtU4hxwnpbopzC6ZLMsBV5E$2;->run()V
PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;->$m$0()V
PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;-><init>(IJLjava/lang/Object;)V
PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;->run()V
-PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->$m$0(Ljava/lang/Object;)Z
PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;-><init>(IJLjava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->test(Ljava/lang/Object;)Z
PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;->$m$0(Ljava/lang/Object;)V
PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;-><init>(IIIIJLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;->accept(Ljava/lang/Object;)V
@@ -10077,32 +12202,30 @@ PLcom/android/server/pm/-$Lambda$s_oh3oeib-Exts1l3lS2Euiarsw;->test(Ljava/lang/O
PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;->$m$3(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;-><init>(B)V
PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/pm/AbstractStatsBase;->getFile()Landroid/util/AtomicFile;
-PLcom/android/server/pm/AbstractStatsBase;->read(Ljava/lang/Object;)V
+PLcom/android/server/pm/AbstractStatsBase$1;-><init>(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/pm/AbstractStatsBase$1;->run()V
+PLcom/android/server/pm/AbstractStatsBase;->-get0(Lcom/android/server/pm/AbstractStatsBase;)Ljava/util/concurrent/atomic/AtomicBoolean;
+PLcom/android/server/pm/AbstractStatsBase;->-get1(Lcom/android/server/pm/AbstractStatsBase;)Ljava/util/concurrent/atomic/AtomicLong;
+PLcom/android/server/pm/AbstractStatsBase;->-wrap0(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/Object;)V
+PLcom/android/server/pm/AbstractStatsBase;->writeImpl(Ljava/lang/Object;)V
PLcom/android/server/pm/BackgroundDexOptService$1;-><init>(Lcom/android/server/pm/BackgroundDexOptService;Ljava/lang/String;Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V
PLcom/android/server/pm/BackgroundDexOptService$1;->run()V
PLcom/android/server/pm/BackgroundDexOptService;->-wrap1(Lcom/android/server/pm/BackgroundDexOptService;Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V
PLcom/android/server/pm/BackgroundDexOptService;-><init>()V
-PLcom/android/server/pm/BackgroundDexOptService;->getBatteryLevel()I
+PLcom/android/server/pm/BackgroundDexOptService;->getDowngradeUnusedAppsThresholdInMillis()J
PLcom/android/server/pm/BackgroundDexOptService;->getLowStorageThreshold(Landroid/content/Context;)J
+PLcom/android/server/pm/BackgroundDexOptService;->isBackgroundDexoptDisabled()Z
PLcom/android/server/pm/BackgroundDexOptService;->notifyPackageChanged(Ljava/lang/String;)V
PLcom/android/server/pm/BackgroundDexOptService;->notifyPinService(Landroid/util/ArraySet;)V
PLcom/android/server/pm/BackgroundDexOptService;->onStartJob(Landroid/app/job/JobParameters;)Z
-PLcom/android/server/pm/BackgroundDexOptService;->postBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V
PLcom/android/server/pm/BackgroundDexOptService;->runPostBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)Z
PLcom/android/server/pm/BackgroundDexOptService;->schedule(Landroid/content/Context;)V
PLcom/android/server/pm/BasePermission;->isDevelopment()Z
PLcom/android/server/pm/BasePermission;->isRuntime()Z
-PLcom/android/server/pm/CompilerStats$PackageStats;-><init>(Ljava/lang/String;)V
+PLcom/android/server/pm/CompilerStats$PackageStats;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/pm/CompilerStats$PackageStats;->getStoredPathFromCodePath(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/pm/CompilerStats$PackageStats;->setCompileTime(Ljava/lang/String;J)V
-PLcom/android/server/pm/CompilerStats;->createPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
-PLcom/android/server/pm/CompilerStats;->getOrCreatePackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
-PLcom/android/server/pm/CompilerStats;->maybeWriteAsync()Z
-PLcom/android/server/pm/CompilerStats;->read()V
-PLcom/android/server/pm/CompilerStats;->read(Ljava/io/Reader;)Z
-PLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Object;)V
-PLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Void;)V
+PLcom/android/server/pm/CompilerStats;->getPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
PLcom/android/server/pm/DefaultPermissionGrantPolicy$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/pm/DefaultPermissionGrantPolicy$DefaultPermissionGrant;-><init>(Ljava/lang/String;Z)V
PLcom/android/server/pm/DefaultPermissionGrantPolicy;->-get0(Lcom/android/server/pm/DefaultPermissionGrantPolicy;)Landroid/util/ArrayMap;
@@ -10128,43 +12251,43 @@ PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setSyncAdapterPackagesPro
PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setVoiceInteractionPackagesProviderLPw(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
PLcom/android/server/pm/EphemeralResolverConnection$ConnectionException;-><init>(I)V
PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1;-><init>(Lcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;)V
-PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1;->sendResult(Landroid/os/Bundle;)V
PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->-wrap0(Lcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;Ljava/lang/Object;I)V
PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;-><init>()V
-PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->getEphemeralResolveInfoList(Landroid/app/IInstantAppResolver;[ILjava/lang/String;)Ljava/util/List;
PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/EphemeralResolverConnection;)V
PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/EphemeralResolverConnection;Lcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;)V
PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
PLcom/android/server/pm/EphemeralResolverConnection;->-get0()J
PLcom/android/server/pm/EphemeralResolverConnection;->-get1()Z
-PLcom/android/server/pm/EphemeralResolverConnection;->-get2(Lcom/android/server/pm/EphemeralResolverConnection;)Ljava/lang/Object;
-PLcom/android/server/pm/EphemeralResolverConnection;->-set0(Lcom/android/server/pm/EphemeralResolverConnection;Z)Z
+PLcom/android/server/pm/EphemeralResolverConnection;->-get2(Lcom/android/server/pm/EphemeralResolverConnection;)I
+PLcom/android/server/pm/EphemeralResolverConnection;->-get3(Lcom/android/server/pm/EphemeralResolverConnection;)Ljava/lang/Object;
+PLcom/android/server/pm/EphemeralResolverConnection;->-set0(Lcom/android/server/pm/EphemeralResolverConnection;I)I
PLcom/android/server/pm/EphemeralResolverConnection;->-set1(Lcom/android/server/pm/EphemeralResolverConnection;Landroid/app/IInstantAppResolver;)Landroid/app/IInstantAppResolver;
+PLcom/android/server/pm/EphemeralResolverConnection;->-wrap0(Lcom/android/server/pm/EphemeralResolverConnection;)V
PLcom/android/server/pm/EphemeralResolverConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Ljava/lang/String;)V
-PLcom/android/server/pm/EphemeralResolverConnection;->bindLocked(Ljava/lang/String;)V
-PLcom/android/server/pm/EphemeralResolverConnection;->getInstantAppResolveInfoList([ILjava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/EphemeralResolverConnection;->getRemoteInstanceLazy(Ljava/lang/String;)Landroid/app/IInstantAppResolver;
-PLcom/android/server/pm/EphemeralResolverConnection;->throwIfCalledOnMainThread()V
+PLcom/android/server/pm/EphemeralResolverConnection;->bind(Ljava/lang/String;)Landroid/app/IInstantAppResolver;
+PLcom/android/server/pm/EphemeralResolverConnection;->binderDied()V
+PLcom/android/server/pm/EphemeralResolverConnection;->handleBinderDiedLocked()V
PLcom/android/server/pm/EphemeralResolverConnection;->waitForBindLocked(Ljava/lang/String;)V
PLcom/android/server/pm/Installer$InstallerException;-><init>(Ljava/lang/String;)V
PLcom/android/server/pm/Installer$InstallerException;->from(Ljava/lang/Exception;)Lcom/android/server/pm/Installer$InstallerException;
PLcom/android/server/pm/Installer;->assertValidInstructionSet(Ljava/lang/String;)V
-PLcom/android/server/pm/Installer;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J
+PLcom/android/server/pm/Installer;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
+PLcom/android/server/pm/Installer;->clearAppProfiles(Ljava/lang/String;)V
PLcom/android/server/pm/Installer;->createOatDir(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/pm/Installer;->createUserData(Ljava/lang/String;III)V
-PLcom/android/server/pm/Installer;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/pm/Installer;->fixupAppData(Ljava/lang/String;I)V
+PLcom/android/server/pm/Installer;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
PLcom/android/server/pm/Installer;->getUserSize(Ljava/lang/String;II[ILandroid/content/pm/PackageStats;)V
PLcom/android/server/pm/Installer;->idmap(Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/pm/Installer;->isQuotaSupported(Ljava/lang/String;)Z
PLcom/android/server/pm/Installer;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/pm/Installer;->markBootComplete(Ljava/lang/String;)V
PLcom/android/server/pm/Installer;->rmPackageDir(Ljava/lang/String;)V
+PLcom/android/server/pm/Installer;->rmdex(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/pm/Installer;->setAppQuota(Ljava/lang/String;IIJ)V
PLcom/android/server/pm/Installer;->setWarnIfHeld(Ljava/lang/Object;)V
PLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationDir(Ljava/lang/String;I)Ljava/io/File;
PLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationsDir(I)Ljava/io/File;
-PLcom/android/server/pm/InstantAppRegistry;->grantInstantAccessLPw(ILandroid/content/Intent;II)V
PLcom/android/server/pm/InstantAppRegistry;->isInstantAccessGranted(III)Z
PLcom/android/server/pm/InstantAppRegistry;->onPackageInstalledLPw(Landroid/content/pm/PackageParser$Package;[I)V
PLcom/android/server/pm/InstantAppRegistry;->parseMetadataFile(Ljava/io/File;)Lcom/android/server/pm/InstantAppRegistry$UninstalledInstantAppState;
@@ -10172,81 +12295,28 @@ PLcom/android/server/pm/InstantAppRegistry;->peekInstantCookieFile(Ljava/lang/St
PLcom/android/server/pm/InstantAppRegistry;->peekOrParseUninstalledInstantAppInfo(Ljava/lang/String;I)Landroid/content/pm/InstantAppInfo;
PLcom/android/server/pm/InstantAppRegistry;->propagateInstantAppPermissionsIfNeeded(Ljava/lang/String;I)V
PLcom/android/server/pm/InstantAppRegistry;->removeUninstalledInstantAppStateLPw(Ljava/util/function/Predicate;I)V
-PLcom/android/server/pm/InstantAppResolver;->doInstantAppResolutionPhaseOne(Landroid/content/Context;Lcom/android/server/pm/EphemeralResolverConnection;Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/AuxiliaryResolveInfo;
-PLcom/android/server/pm/InstantAppResolver;->getLogger()Lcom/android/internal/logging/MetricsLogger;
-PLcom/android/server/pm/InstantAppResolver;->logMetrics(IJLjava/lang/String;I)V
-PLcom/android/server/pm/InstructionSets;->getAllDexCodeInstructionSets()[Ljava/lang/String;
-PLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Landroid/content/pm/ApplicationInfo;)[Ljava/lang/String;
-PLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSets([Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/pm/InstructionSets;->getPreferredInstructionSet()Ljava/lang/String;
-PLcom/android/server/pm/InstructionSets;->getPrimaryInstructionSet(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String;
-PLcom/android/server/pm/KeySetHandle;-><init>(J)V
-PLcom/android/server/pm/KeySetHandle;-><init>(JI)V
-PLcom/android/server/pm/KeySetHandle;->getId()J
-PLcom/android/server/pm/KeySetHandle;->getRefCountLPr()I
-PLcom/android/server/pm/KeySetHandle;->setRefCountLPw(I)V
-PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;)V
-PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;)V
-PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JLjava/security/PublicKey;)V
-PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->getKey()Ljava/security/PublicKey;
-PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->incrRefCountLPw()V
-PLcom/android/server/pm/KeySetManagerService;->addKeySetLPw(Landroid/util/ArraySet;)Lcom/android/server/pm/KeySetHandle;
-PLcom/android/server/pm/KeySetManagerService;->addPublicKeyLPw(Ljava/security/PublicKey;)J
-PLcom/android/server/pm/KeySetManagerService;->addRefCountsFromSavedPackagesLPw(Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/KeySetManagerService;->addSigningKeySetToPackageLPw(Lcom/android/server/pm/PackageSetting;Landroid/util/ArraySet;)V
-PLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/KeySetManagerService;->encodePublicKey(Ljava/security/PublicKey;)Ljava/lang/String;
-PLcom/android/server/pm/KeySetManagerService;->getFreeKeySetIDLPw()J
-PLcom/android/server/pm/KeySetManagerService;->getFreePublicKeyIdLPw()J
-PLcom/android/server/pm/KeySetManagerService;->getIdForPublicKeyLPr(Ljava/security/PublicKey;)J
-PLcom/android/server/pm/KeySetManagerService;->getIdFromKeyIdsLPr(Ljava/util/Set;)J
-PLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet;
-PLcom/android/server/pm/KeySetManagerService;->readKeySetListLPw(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;)V
-PLcom/android/server/pm/KeySetManagerService;->readKeysLPw(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/pm/KeySetManagerService;->readPublicKeyLPw(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/pm/KeySetManagerService;->writeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/pm/KeySetManagerService;->writePublicKeysLPr(Lorg/xmlpull/v1/XmlSerializer;)V
+PLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Lcom/android/server/pm/PackageSetting;)[Ljava/lang/String;
PLcom/android/server/pm/LauncherAppsService$BroadcastCookie;-><init>(Landroid/os/UserHandle;Ljava/lang/String;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->lambda$-com_android_server_pm_LauncherAppsService$LauncherAppsImpl$MyPackageMonitor_38233(Ljava/lang/String;I)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChanged(Ljava/lang/String;I)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-get0(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-get1(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Landroid/content/pm/ShortcutServiceInternal;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-wrap0(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;ILjava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;)Z
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->ensureShortcutPermission(Ljava/lang/String;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfo(Ljava/lang/String;Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getCallingUserId()I
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcutIconFd(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasShortcutHostPermission(Ljava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectCallingUserId()I
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isEnabledProfileOf(Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(I)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(Landroid/os/UserHandle;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->pinShortcuts(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->postToPackageMonitorHandler(Ljava/lang/Runnable;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo;
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startWatchingPackageBroadcasts()V
PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;)V
PLcom/android/server/pm/LauncherAppsService;-><init>(Landroid/content/Context;)V
@@ -10254,38 +12324,21 @@ PLcom/android/server/pm/LauncherAppsService;->onStart()V
PLcom/android/server/pm/OtaDexoptService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
PLcom/android/server/pm/OtaDexoptService;->main(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/OtaDexoptService;
PLcom/android/server/pm/OtaDexoptService;->moveAbArtifacts(Lcom/android/server/pm/Installer;)V
-PLcom/android/server/pm/PackageDexOptimizer;->acquireWakeLockLI(I)J
PLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptFlags(I)I
PLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptNeeded(I)I
-PLcom/android/server/pm/PackageDexOptimizer;->canOptimizePackage(Landroid/content/pm/PackageParser$Package;)Z
PLcom/android/server/pm/PackageDexOptimizer;->createOatDirIfSupported(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/PackageDexOptimizer;->dexOptPath(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;IILcom/android/server/pm/CompilerStats$PackageStats;)I
-PLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)I
-PLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Z)I
-PLcom/android/server/pm/PackageDexOptimizer;->getDexoptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I
PLcom/android/server/pm/PackageDexOptimizer;->getOatDir(Ljava/io/File;)Ljava/io/File;
-PLcom/android/server/pm/PackageDexOptimizer;->getRealCompilerFilter(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Ljava/lang/String;
-PLcom/android/server/pm/PackageDexOptimizer;->getSharedLibrariesPath([Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/PackageDexOptimizer;->getSplitDependencies(Landroid/content/pm/PackageParser$Package;)[Ljava/lang/String;
-PLcom/android/server/pm/PackageDexOptimizer;->performDexOpt(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;ZZ)I
-PLcom/android/server/pm/PackageDexOptimizer;->performDexOptLI(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;ZZ)I
PLcom/android/server/pm/PackageDexOptimizer;->printDexoptFlags(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageDexOptimizer;->releaseWakeLockLI(J)V
PLcom/android/server/pm/PackageDexOptimizer;->systemReady()V
-PLcom/android/server/pm/PackageInstallerService$1;-><init>()V
PLcom/android/server/pm/PackageInstallerService$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
PLcom/android/server/pm/PackageInstallerService$2;-><init>(Lcom/android/server/pm/PackageInstallerService;)V
PLcom/android/server/pm/PackageInstallerService$2;->run()V
PLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap0(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIZ)V
PLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap2(Lcom/android/server/pm/PackageInstallerService$Callbacks;II)V
-PLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap3(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIF)V
PLcom/android/server/pm/PackageInstallerService$Callbacks;-><init>(Landroid/os/Looper;)V
-PLcom/android/server/pm/PackageInstallerService$Callbacks;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/PackageInstallerService$Callbacks;->invokeCallback(Landroid/content/pm/IPackageInstallerCallback;Landroid/os/Message;)V
PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionActiveChanged(IIZ)V
PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionCreated(II)V
PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionFinished(IIZ)V
-PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionProgressChanged(IIF)V
PLcom/android/server/pm/PackageInstallerService$Callbacks;->register(Landroid/content/pm/IPackageInstallerCallback;I)V
PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;->run()V
@@ -10293,11 +12346,9 @@ PLcom/android/server/pm/PackageInstallerService$InternalCallback;-><init>(Lcom/a
PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionActiveChanged(Lcom/android/server/pm/PackageInstallerSession;Z)V
PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionFinished(Lcom/android/server/pm/PackageInstallerSession;Z)V
PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionPrepared(Lcom/android/server/pm/PackageInstallerSession;)V
-PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionProgressChanged(Lcom/android/server/pm/PackageInstallerSession;F)V
PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionSealedBlocking(Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerService$PackageInstallObserverAdapter;-><init>(Landroid/content/Context;Landroid/content/IntentSender;IZI)V
PLcom/android/server/pm/PackageInstallerService$PackageInstallObserverAdapter;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
-PLcom/android/server/pm/PackageInstallerService;->-get0(Lcom/android/server/pm/PackageInstallerService;)Lcom/android/server/pm/PackageInstallerService$Callbacks;
PLcom/android/server/pm/PackageInstallerService;->-get1(Lcom/android/server/pm/PackageInstallerService;)Landroid/os/Handler;
PLcom/android/server/pm/PackageInstallerService;->-get2(Lcom/android/server/pm/PackageInstallerService;)Landroid/util/SparseArray;
PLcom/android/server/pm/PackageInstallerService;->-wrap1(Lcom/android/server/pm/PackageInstallerService;I)Ljava/io/File;
@@ -10305,20 +12356,16 @@ PLcom/android/server/pm/PackageInstallerService;->-wrap2(Lcom/android/server/pm/
PLcom/android/server/pm/PackageInstallerService;->-wrap3(Lcom/android/server/pm/PackageInstallerService;)V
PLcom/android/server/pm/PackageInstallerService;->-wrap4(Lcom/android/server/pm/PackageInstallerService;)V
PLcom/android/server/pm/PackageInstallerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageInstallerService;->abandonSession(I)V
PLcom/android/server/pm/PackageInstallerService;->addHistoricalSessionLocked(Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerService;->allocateSessionIdLocked()I
PLcom/android/server/pm/PackageInstallerService;->buildAppIconFile(I)Ljava/io/File;
PLcom/android/server/pm/PackageInstallerService;->buildStageDir(Ljava/lang/String;IZ)Ljava/io/File;
PLcom/android/server/pm/PackageInstallerService;->buildStagingDir(Ljava/lang/String;Z)Ljava/io/File;
PLcom/android/server/pm/PackageInstallerService;->createSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageInstallerService;->createSessionInternal(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
PLcom/android/server/pm/PackageInstallerService;->getAllSessions(I)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/PackageInstallerService;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/PackageInstallerService;->getSessionCount(Landroid/util/SparseArray;I)I
-PLcom/android/server/pm/PackageInstallerService;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo;
PLcom/android/server/pm/PackageInstallerService;->isCallingUidOwner(Lcom/android/server/pm/PackageInstallerSession;)Z
-PLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z
PLcom/android/server/pm/PackageInstallerService;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet;
PLcom/android/server/pm/PackageInstallerService;->onSecureContainersAvailable()V
PLcom/android/server/pm/PackageInstallerService;->openSession(I)Landroid/content/pm/IPackageInstallerSession;
@@ -10328,10 +12375,7 @@ PLcom/android/server/pm/PackageInstallerService;->readSessionsLocked()V
PLcom/android/server/pm/PackageInstallerService;->reconcileStagesLocked(Ljava/lang/String;Z)V
PLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V
PLcom/android/server/pm/PackageInstallerService;->systemReady()V
-PLcom/android/server/pm/PackageInstallerService;->writeGrantedRuntimePermissions(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V
-PLcom/android/server/pm/PackageInstallerService;->writeSessionLocked(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerService;->writeSessionsAsync()V
-PLcom/android/server/pm/PackageInstallerService;->writeSessionsLocked()V
PLcom/android/server/pm/PackageInstallerSession$1;-><init>()V
PLcom/android/server/pm/PackageInstallerSession$1;->accept(Ljava/io/File;)Z
PLcom/android/server/pm/PackageInstallerSession$2;-><init>()V
@@ -10341,70 +12385,61 @@ PLcom/android/server/pm/PackageInstallerSession$3;->handleMessage(Landroid/os/Me
PLcom/android/server/pm/PackageInstallerSession$4;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerSession$4;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
PLcom/android/server/pm/PackageInstallerSession;->-get0(Lcom/android/server/pm/PackageInstallerSession;)Ljava/lang/Object;
-PLcom/android/server/pm/PackageInstallerSession;->-get1(Lcom/android/server/pm/PackageInstallerSession;)Lcom/android/server/pm/PackageManagerService;
-PLcom/android/server/pm/PackageInstallerSession;->-set0(Lcom/android/server/pm/PackageInstallerSession;Landroid/content/pm/IPackageInstallObserver2;)Landroid/content/pm/IPackageInstallObserver2;
-PLcom/android/server/pm/PackageInstallerSession;->-wrap0(Lcom/android/server/pm/PackageInstallerSession;Landroid/content/pm/PackageInfo;Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/pm/PackageInstallerSession;->-wrap0(Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerSession;->-wrap1(Lcom/android/server/pm/PackageInstallerSession;)V
PLcom/android/server/pm/PackageInstallerSession;->-wrap2(Lcom/android/server/pm/PackageInstallerSession;ILjava/lang/String;Landroid/os/Bundle;)V
PLcom/android/server/pm/PackageInstallerSession;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;IILjava/lang/String;ILandroid/content/pm/PackageInstaller$SessionParams;JLjava/io/File;Ljava/lang/String;ZZ)V
-PLcom/android/server/pm/PackageInstallerSession;->assertApkConsistent(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;)V
-PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotSealed(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertApkConsistentLocked(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertNoWriteFileTransfersOpenLocked()V
+PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotCommittedOrDestroyedLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotDestroyedLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotSealedLocked(Ljava/lang/String;)V
PLcom/android/server/pm/PackageInstallerSession;->close()V
-PLcom/android/server/pm/PackageInstallerSession;->commit(Landroid/content/IntentSender;)V
-PLcom/android/server/pm/PackageInstallerSession;->commitLocked(Landroid/content/pm/PackageInfo;Landroid/content/pm/ApplicationInfo;)V
-PLcom/android/server/pm/PackageInstallerSession;->computeProgressLocked(Z)V
+PLcom/android/server/pm/PackageInstallerSession;->closeInternal(Z)V
+PLcom/android/server/pm/PackageInstallerSession;->commit(Landroid/content/IntentSender;Z)V
+PLcom/android/server/pm/PackageInstallerSession;->commitLocked()V
PLcom/android/server/pm/PackageInstallerSession;->destroyInternal()V
PLcom/android/server/pm/PackageInstallerSession;->dispatchSessionFinished(ILjava/lang/String;Landroid/os/Bundle;)V
PLcom/android/server/pm/PackageInstallerSession;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-PLcom/android/server/pm/PackageInstallerSession;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/pm/PackageInstallerSession;->extractNativeLibraries(Ljava/io/File;Ljava/lang/String;)V
-PLcom/android/server/pm/PackageInstallerSession;->generateInfo()Landroid/content/pm/PackageInstaller$SessionInfo;
-PLcom/android/server/pm/PackageInstallerSession;->generateInfo(Z)Landroid/content/pm/PackageInstaller$SessionInfo;
-PLcom/android/server/pm/PackageInstallerSession;->getNames()[Ljava/lang/String;
+PLcom/android/server/pm/PackageInstallerSession;->getInstallerUid()I
+PLcom/android/server/pm/PackageInstallerSession;->isInstallerDeviceOwnerLocked()Z
PLcom/android/server/pm/PackageInstallerSession;->isPrepared()Z
PLcom/android/server/pm/PackageInstallerSession;->isSealed()Z
+PLcom/android/server/pm/PackageInstallerSession;->needToAskForPermissionsLocked()Z
PLcom/android/server/pm/PackageInstallerSession;->open()V
PLcom/android/server/pm/PackageInstallerSession;->openWrite(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/pm/PackageInstallerSession;->openWriteInternal(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/pm/PackageInstallerSession;->resolveStageDir()Ljava/io/File;
-PLcom/android/server/pm/PackageInstallerSession;->setClientProgress(F)V
-PLcom/android/server/pm/PackageInstallerSession;->validateInstallLocked(Landroid/content/pm/PackageInfo;Landroid/content/pm/ApplicationInfo;)V
-PLcom/android/server/pm/PackageKeySetData;->getAliases()Landroid/util/ArrayMap;
-PLcom/android/server/pm/PackageKeySetData;->getProperSigningKeySet()J
-PLcom/android/server/pm/PackageKeySetData;->isUsingUpgradeKeySets()Z
-PLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService$18;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Landroid/content/ContentResolver;)V
-PLcom/android/server/pm/PackageManagerService$18;->onChange(Z)V
-PLcom/android/server/pm/PackageManagerService$19;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageManagerService$19;->getMountMode(ILjava/lang/String;)I
-PLcom/android/server/pm/PackageManagerService$19;->hasExternalStorage(ILjava/lang/String;)Z
+PLcom/android/server/pm/PackageInstallerSession;->resolveStageDirLocked()Ljava/io/File;
+PLcom/android/server/pm/PackageInstallerSession;->sealAndValidateLocked(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/pm/PackageInstallerSession;->writeGrantedRuntimePermissionsLocked(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V
+PLcom/android/server/pm/PackageKeySetData;->isUsingDefinedKeySets()Z
+PLcom/android/server/pm/PackageManagerService$19;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/pm/PackageManagerService$19;->onChange(Z)V
PLcom/android/server/pm/PackageManagerService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
-PLcom/android/server/pm/PackageManagerService$3;->compare(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I
-PLcom/android/server/pm/PackageManagerService$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/pm/PackageManagerService$5;-><init>(Lcom/android/server/pm/PackageManagerService;[ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ILandroid/content/IIntentReceiver;)V
-PLcom/android/server/pm/PackageManagerService$5;->run()V
-PLcom/android/server/pm/PackageManagerService$6;-><init>(Lcom/android/server/pm/PackageManagerService;ILcom/android/server/pm/PackageManagerService$InstallArgs;)V
-PLcom/android/server/pm/PackageManagerService$6;->run()V
-PLcom/android/server/pm/PackageManagerService$8;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)Landroid/util/ArrayMap;
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->adjustPriority(Ljava/util/List;Landroid/content/pm/PackageParser$ActivityIntentInfo;)V
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->findMatchingActivity(Ljava/util/List;Landroid/content/pm/ActivityInfo;)Landroid/content/pm/PackageParser$Activity;
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->getIntentListSubset(Ljava/util/List;Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;Ljava/util/Iterator;)V
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isProtectedAction(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ActivityIntentInfo;
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->sortResults(Ljava/util/List;)V
+PLcom/android/server/pm/PackageManagerService$20;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$6;-><init>(Lcom/android/server/pm/PackageManagerService;[ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ILandroid/content/IIntentReceiver;)V
+PLcom/android/server/pm/PackageManagerService$7;-><init>(Lcom/android/server/pm/PackageManagerService;ILcom/android/server/pm/PackageManagerService$InstallArgs;)V
+PLcom/android/server/pm/PackageManagerService$7;->run()V
+PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$SchemesIterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V
+PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$SchemesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator;
PLcom/android/server/pm/PackageManagerService$DefaultContainerConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/pm/PackageManagerService$DumpState;-><init>()V
+PLcom/android/server/pm/PackageManagerService$DumpState;->getSharedUser()Lcom/android/server/pm/SharedUserSetting;
+PLcom/android/server/pm/PackageManagerService$DumpState;->getTitlePrinted()Z
+PLcom/android/server/pm/PackageManagerService$DumpState;->isOptionEnabled(I)Z
+PLcom/android/server/pm/PackageManagerService$DumpState;->onTitlePrinted()Z
+PLcom/android/server/pm/PackageManagerService$DumpState;->setOptionEnabled(I)V
+PLcom/android/server/pm/PackageManagerService$DumpState;->setSharedUser(Lcom/android/server/pm/SharedUserSetting;)V
+PLcom/android/server/pm/PackageManagerService$DumpState;->setTitlePrinted(Z)V
PLcom/android/server/pm/PackageManagerService$FileInstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)V
+PLcom/android/server/pm/PackageManagerService$FileInstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->cleanUp()Z
+PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->cleanUpResourcesLI()V
PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->copyApk(Lcom/android/internal/app/IMediaContainerService;Z)I
PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doCopyApk(Lcom/android/internal/app/IMediaContainerService;Z)I
+PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPostDeleteLI(Z)Z
PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPostInstall(II)I
PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPreInstall(I)I
-PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z
PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->getCodePath()Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService$HandlerParams;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/UserHandle;)V
PLcom/android/server/pm/PackageManagerService$HandlerParams;->getUser()Landroid/os/UserHandle;
@@ -10413,13 +12448,9 @@ PLcom/android/server/pm/PackageManagerService$HandlerParams;->setTraceMethod(Lja
PLcom/android/server/pm/PackageManagerService$HandlerParams;->startCopy()Z
PLcom/android/server/pm/PackageManagerService$IFVerificationParams;-><init>(Landroid/content/pm/PackageParser$Package;ZII)V
PLcom/android/server/pm/PackageManagerService$InstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILjava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;I[[Ljava/security/cert/Certificate;I)V
-PLcom/android/server/pm/PackageManagerService$InstallArgs;->getUser()Landroid/os/UserHandle;
PLcom/android/server/pm/PackageManagerService$InstallArgs;->isFwdLocked()Z
-PLcom/android/server/pm/PackageManagerService$InstallParams$1;-><init>(Lcom/android/server/pm/PackageManagerService$InstallParams;I)V
-PLcom/android/server/pm/PackageManagerService$InstallParams$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/pm/PackageManagerService$InstallParams;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILjava/lang/String;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$VerificationInfo;Landroid/os/UserHandle;Ljava/lang/String;[Ljava/lang/String;[[Ljava/security/cert/Certificate;I)V
PLcom/android/server/pm/PackageManagerService$InstallParams;->handleReturnCode()V
-PLcom/android/server/pm/PackageManagerService$InstallParams;->handleStartCopy()V
PLcom/android/server/pm/PackageManagerService$InstallParams;->installLocationPolicy(Landroid/content/pm/PackageInfoLite;)I
PLcom/android/server/pm/PackageManagerService$InstallParams;->isForwardLocked()Z
PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/content/Context;Landroid/content/ComponentName;)V
@@ -10427,36 +12458,25 @@ PLcom/android/server/pm/PackageManagerService$MoveCallbacks;->register(Landroid/
PLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->addListenerLocked(Landroid/content/pm/IOnPermissionsChangeListener;)V
PLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->removeListenerLocked(Landroid/content/pm/IOnPermissionsChangeListener;)V
PLcom/android/server/pm/PackageManagerService$OriginInfo;-><init>(Ljava/io/File;Ljava/lang/String;ZZ)V
+PLcom/android/server/pm/PackageManagerService$OriginInfo;->fromNothing()Lcom/android/server/pm/PackageManagerService$OriginInfo;
PLcom/android/server/pm/PackageManagerService$OriginInfo;->fromStagedFile(Ljava/io/File;)Lcom/android/server/pm/PackageManagerService$OriginInfo;
PLcom/android/server/pm/PackageManagerService$PackageFreezer;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ILjava/lang/String;)V
PLcom/android/server/pm/PackageManagerService$PackageFreezer;->close()V
PLcom/android/server/pm/PackageManagerService$PackageFreezer;->finalize()V
PLcom/android/server/pm/PackageManagerService$PackageHandler;->connectToService()Z
PLcom/android/server/pm/PackageManagerService$PackageHandler;->disconnectService()V
-PLcom/android/server/pm/PackageManagerService$PackageHandler;->doHandleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/PackageManagerService$PackageHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;-><init>()V
PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;->setReturnCode(I)V
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;)V
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->addIsolatedUid(II)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canAccessInstantApps(II)Z
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getActivityInfo(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getApplicationInfo(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getOverlayPackages(I)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageInfo(Ljava/lang/String;III)Landroid/content/pm/PackageInfo;
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSetupWizardPackageName()Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getTargetPackageNames(I)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getUidTargetSdkVersion(I)I
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageEphemeral(ILjava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackagePersistent(Ljava/lang/String;)Z
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->queryIntentActivities(Landroid/content/Intent;III)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDialerAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILjava/lang/String;Ljava/util/List;)Z
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setExternalSourcesPolicy(Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;)V
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setLocationPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSimCallManagerPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
@@ -10464,13 +12484,14 @@ PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSm
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSyncAdapterPackagesprovider(Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;)V
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setVoiceInteractionPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->wasPackageEverLaunched(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$PackageManagerNative;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerNative;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageManagerNative;)V
PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPackagesLocked(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPathsLocked(Ljava/util/Collection;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->findStaticOverlayPackages()V
-PLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;-><init>(Lcom/android/server/pm/PackageSender;)V
+PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->populateUsers([ILcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcastInternal(Z)V
+PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcasts(Z)V
PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->clear()V
PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->get(ILjava/lang/String;)Ljava/util/ArrayList;
PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->getOrAllocate(I)Landroid/util/ArrayMap;
@@ -10481,414 +12502,227 @@ PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdA
PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdCount()I
PLcom/android/server/pm/PackageManagerService$PostInstallData;-><init>(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V
PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver;)Landroid/util/ArrayMap;
-PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->addProvider(Landroid/content/pm/PackageParser$Provider;)V
-PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
-PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ProviderIntentInfo;
PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->removeProvider(Landroid/content/pm/PackageParser$Provider;)V
PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->sortResults(Ljava/util/List;)V
-PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)Landroid/util/ArrayMap;
-PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
-PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ServiceIntentInfo;
-PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->sortResults(Ljava/util/List;)V
PLcom/android/server/pm/PackageManagerService$VerificationInfo;-><init>(Landroid/net/Uri;Landroid/net/Uri;II)V
PLcom/android/server/pm/PackageManagerService;->-get0()Z
-PLcom/android/server/pm/PackageManagerService;->-get11(Lcom/android/server/pm/PackageManagerService;)I
-PLcom/android/server/pm/PackageManagerService;->-get12(Lcom/android/server/pm/PackageManagerService;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->-get13()Ljava/util/Comparator;
-PLcom/android/server/pm/PackageManagerService;->-get2()Ljava/util/Set;
+PLcom/android/server/pm/PackageManagerService;->-get1()[I
PLcom/android/server/pm/PackageManagerService;->-get3(Lcom/android/server/pm/PackageManagerService;)Lcom/android/internal/app/IMediaContainerService;
PLcom/android/server/pm/PackageManagerService;->-get4(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageManagerService$DefaultContainerConnection;
-PLcom/android/server/pm/PackageManagerService;->-get5(Lcom/android/server/pm/PackageManagerService;)Z
PLcom/android/server/pm/PackageManagerService;->-get6(Lcom/android/server/pm/PackageManagerService;)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageManagerService;->-get7(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/InstantAppRegistry;
PLcom/android/server/pm/PackageManagerService;->-set0(Lcom/android/server/pm/PackageManagerService;Lcom/android/internal/app/IMediaContainerService;)Lcom/android/internal/app/IMediaContainerService;
PLcom/android/server/pm/PackageManagerService;->-set1(Lcom/android/server/pm/PackageManagerService;Z)Z
-PLcom/android/server/pm/PackageManagerService;->-set3(Lcom/android/server/pm/PackageManagerService;I)I
-PLcom/android/server/pm/PackageManagerService;->-wrap0(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->-wrap1(Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/PackageManagerService;->-wrap11(Landroid/content/pm/PackageParser$Package;)Z
PLcom/android/server/pm/PackageManagerService;->-wrap12(Lcom/android/server/pm/PackageManagerService;III)Z
-PLcom/android/server/pm/PackageManagerService;->-wrap13(Lcom/android/server/pm/PackageManagerService;I)Z
-PLcom/android/server/pm/PackageManagerService;->-wrap14(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/DeviceIdleController$LocalService;
PLcom/android/server/pm/PackageManagerService;->-wrap15(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
-PLcom/android/server/pm/PackageManagerService;->-wrap18(Lcom/android/server/pm/PackageManagerService;I)I
PLcom/android/server/pm/PackageManagerService;->-wrap19(Lcom/android/server/pm/PackageManagerService;Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
-PLcom/android/server/pm/PackageManagerService;->-wrap2(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/PackageManagerService;->-wrap22(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/PackageInfoLite;Ljava/util/List;Lcom/android/server/pm/PackageVerificationState;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->-wrap23(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIIZ)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->-wrap24(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->-wrap25(Lcom/android/server/pm/PackageManagerService;)J
-PLcom/android/server/pm/PackageManagerService;->-wrap26(Lcom/android/server/pm/PackageManagerService;ILandroid/net/Uri;ILandroid/os/UserHandle;)V
+PLcom/android/server/pm/PackageManagerService;->-wrap23(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService;->-wrap3(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/PackageManagerService;->-wrap32(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V
+PLcom/android/server/pm/PackageManagerService;->-wrap32(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V
PLcom/android/server/pm/PackageManagerService;->-wrap33(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V
+PLcom/android/server/pm/PackageManagerService;->-wrap34(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IILjava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->-wrap4(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IIII)Landroid/content/pm/PackageInfo;
PLcom/android/server/pm/PackageManagerService;->-wrap40(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V
-PLcom/android/server/pm/PackageManagerService;->-wrap47(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZLjava/util/ArrayList;I)V
+PLcom/android/server/pm/PackageManagerService;->-wrap46(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZLjava/util/ArrayList;I)V
PLcom/android/server/pm/PackageManagerService;->-wrap5(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerService;->-wrap52(Lcom/android/server/pm/PackageManagerService;IIZLandroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/PackageManagerService;->-wrap6(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerService;->-wrap7(Lcom/android/server/pm/PackageManagerService;II)Z
+PLcom/android/server/pm/PackageManagerService;->-wrap51(Lcom/android/server/pm/PackageManagerService;IIZLandroid/content/pm/PackageParser$Package;)V
PLcom/android/server/pm/PackageManagerService;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V
-PLcom/android/server/pm/PackageManagerService;->addSharedLibrariesLPw(Ljava/util/List;[I[Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageParser$Package;ZLandroid/util/ArraySet;)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPr(Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry;Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/PackageManagerService;->adjustCpuAbisForSharedUserLPw(Ljava/util/Set;Landroid/content/pm/PackageParser$Package;)V
+PLcom/android/server/pm/PackageManagerService;->adjustPermissionProtectionFlagsLPr(ILjava/lang/String;I)I
PLcom/android/server/pm/PackageManagerService;->apkHasCode(Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService;->applyPolicy(Landroid/content/pm/PackageParser$Package;I)V
PLcom/android/server/pm/PackageManagerService;->applyPostContentProviderResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService;->arrayToString([I)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->assertCodePolicy(Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/PackageManagerService;->assertPackageIsValid(Landroid/content/pm/PackageParser$Package;II)V
-PLcom/android/server/pm/PackageManagerService;->assertPackageKnownAndInstalled(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->broadcastPackageVerified(ILandroid/net/Uri;ILandroid/os/UserHandle;)V
-PLcom/android/server/pm/PackageManagerService;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->canViewInstantApps(II)Z
-PLcom/android/server/pm/PackageManagerService;->checkDefaultBrowser()V
+PLcom/android/server/pm/PackageManagerService;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->checkPackageFrozen(Ljava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I
-PLcom/android/server/pm/PackageManagerService;->chooseBestActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerService;->collectAbsoluteCodePaths()Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;Ljava/io/File;I)V
+PLcom/android/server/pm/PackageManagerService;->clearAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V
+PLcom/android/server/pm/PackageManagerService;->clearAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
+PLcom/android/server/pm/PackageManagerService;->clearAppProfilesLIF(Landroid/content/pm/PackageParser$Package;I)V
+PLcom/android/server/pm/PackageManagerService;->clearAppProfilesLeafLIF(Landroid/content/pm/PackageParser$Package;)V
PLcom/android/server/pm/PackageManagerService;->createInstallArgs(Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
-PLcom/android/server/pm/PackageManagerService;->deleteTempPackageFiles()V
-PLcom/android/server/pm/PackageManagerService;->deriveAbiOverride(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->createInstallArgsForExisting(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
+PLcom/android/server/pm/PackageManagerService;->deleteInstalledPackageLIF(Lcom/android/server/pm/PackageSetting;ZI[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/PackageParser$Package;)Z
+PLcom/android/server/pm/PackageManagerService;->deletePackageLIF(Ljava/lang/String;Landroid/os/UserHandle;Z[IILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/PackageParser$Package;)Z
PLcom/android/server/pm/PackageManagerService;->derivePackageAbi(Landroid/content/pm/PackageParser$Package;Ljava/io/File;Ljava/lang/String;ZLjava/io/File;)V
+PLcom/android/server/pm/PackageManagerService;->disableSystemPackageLPw(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)Z
PLcom/android/server/pm/PackageManagerService;->enableSystemUserPackages()V
PLcom/android/server/pm/PackageManagerService;->enforceDeclaredAsUsedAndRuntimeOrDevelopmentPermission(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/BasePermission;)V
PLcom/android/server/pm/PackageManagerService;->enforceGrantRevokeRuntimePermissionPermissions(Ljava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->enforceShellRestriction(Ljava/lang/String;II)V
PLcom/android/server/pm/PackageManagerService;->enforceSystemOrPhoneCaller(Ljava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->enforceSystemOrRoot(Ljava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->extrasForInstallResult(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)Landroid/os/Bundle;
-PLcom/android/server/pm/PackageManagerService;->filterCandidatesWithDomainPreferredActivitiesLPr(Landroid/content/Intent;ILjava/util/List;Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;I)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService;->findPersistentPreferredActivityLP(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;ZI)Landroid/content/pm/ResolveInfo;
PLcom/android/server/pm/PackageManagerService;->findPreferredActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;IZZZI)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibraries(Landroid/content/pm/PackageParser$Package;)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrariesRecursive(Landroid/content/pm/PackageParser$Package;Ljava/util/ArrayList;Ljava/util/Set;)V
PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrariesRecursive(Ljava/util/ArrayList;[ILjava/util/ArrayList;Ljava/util/Set;)V
PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrary(Ljava/lang/String;I)Landroid/content/pm/PackageParser$Package;
-PLcom/android/server/pm/PackageManagerService;->finishPackageInstall(IZ)V
PLcom/android/server/pm/PackageManagerService;->fixUpInstallReason(Ljava/lang/String;II)I
PLcom/android/server/pm/PackageManagerService;->freeStorage(Ljava/lang/String;JI)V
-PLcom/android/server/pm/PackageManagerService;->freeStorageAndNotify(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V
PLcom/android/server/pm/PackageManagerService;->freezePackage(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
PLcom/android/server/pm/PackageManagerService;->freezePackageForInstall(Ljava/lang/String;IILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
PLcom/android/server/pm/PackageManagerService;->freezePackageForInstall(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
PLcom/android/server/pm/PackageManagerService;->generateApplicationInfoFromSettingsLPw(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
PLcom/android/server/pm/PackageManagerService;->generatePermissionInfo(Lcom/android/server/pm/BasePermission;I)Landroid/content/pm/PermissionInfo;
-PLcom/android/server/pm/PackageManagerService;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/PackageManagerService;->getActivityInfoInternal(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
PLcom/android/server/pm/PackageManagerService;->getBlockUninstallForUser(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
-PLcom/android/server/pm/PackageManagerService;->getDefaultBrowserPackageName(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getDefaultHomeActivity(I)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->getDeviceIdleController()Lcom/android/server/DeviceIdleController$LocalService;
+PLcom/android/server/pm/PackageManagerService;->getChangedPackages(II)Landroid/content/pm/ChangedPackages;
+PLcom/android/server/pm/PackageManagerService;->getCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
PLcom/android/server/pm/PackageManagerService;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName;
PLcom/android/server/pm/PackageManagerService;->getHomeIntent()Landroid/content/Intent;
-PLcom/android/server/pm/PackageManagerService;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getInstantAppAndroidId(Ljava/lang/String;I)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getInstantAppInstallerLPr()Landroid/content/pm/ActivityInfo;
PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverLPr()Landroid/util/Pair;
PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverSettingsLPr(Landroid/content/ComponentName;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo;
PLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifierComponentNameLPr()Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->getLastModifiedTime(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)J
-PLcom/android/server/pm/PackageManagerService;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->getNameForUid(I)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getNextCodePath(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
-PLcom/android/server/pm/PackageManagerService;->getOptimizablePackages()Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/CompilerStats$PackageStats;
-PLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
-PLcom/android/server/pm/PackageManagerService;->getPackageGids(Ljava/lang/String;II)[I
-PLcom/android/server/pm/PackageManagerService;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
+PLcom/android/server/pm/PackageManagerService;->getParentOrChildPackageChangedSharedUser(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageManagerService;->getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
+PLcom/android/server/pm/PackageManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
PLcom/android/server/pm/PackageManagerService;->getPersistentApplications(I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageManagerService;->getPersistentApplicationsInternal(I)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/pm/PackageManagerService;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/PackageManagerService;->getPreviousCodePaths(Ljava/lang/String;)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService;->getRequiredButNotReallyRequiredVerifierLPr()Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getRequiredInstallerLPr()Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getRequiredSharedLibraryLPr(Ljava/lang/String;I)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getRequiredUninstallerLPr()Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/Settings$VersionInfo;
-PLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageName()Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getSharedLibraryEntryLPr(Ljava/lang/String;I)Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry;
-PLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getSettingsProblemFile()Ljava/io/File;
PLcom/android/server/pm/PackageManagerService;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageManagerService;->getSystemSharedLibraryNames()[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getUidTargetSdkVersionLockedLPr(I)I
PLcom/android/server/pm/PackageManagerService;->getUnknownSourcesSettings()I
-PLcom/android/server/pm/PackageManagerService;->getVerificationTimeout()J
-PLcom/android/server/pm/PackageManagerService;->getVolumeUuidForPackage(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String;
PLcom/android/server/pm/PackageManagerService;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService;->grantRequestedRuntimePermissions(Landroid/content/pm/PackageParser$Package;[I[Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->grantRequestedRuntimePermissionsForUser(Landroid/content/pm/PackageParser$Package;I[Ljava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/pm/PackageManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;IZ)V
-PLcom/android/server/pm/PackageManagerService;->handlePackagePostInstall(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V
PLcom/android/server/pm/PackageManagerService;->hasDomainURLs(Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/PackageManagerService;->hasNonNegativePriority(Ljava/util/List;)Z
-PLcom/android/server/pm/PackageManagerService;->hasPermission(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z
PLcom/android/server/pm/PackageManagerService;->hasSystemUidErrors()Z
-PLcom/android/server/pm/PackageManagerService;->hasWebURI(Landroid/content/Intent;)Z
-PLcom/android/server/pm/PackageManagerService;->installNewPackageLIF(Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V
+PLcom/android/server/pm/PackageManagerService;->installForwardLocked(I)Z
PLcom/android/server/pm/PackageManagerService;->installOnExternalAsec(I)Z
-PLcom/android/server/pm/PackageManagerService;->installPackageLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V
PLcom/android/server/pm/PackageManagerService;->installPackageTracedLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V
PLcom/android/server/pm/PackageManagerService;->installStage(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Landroid/content/pm/IPackageInstallObserver2;Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;ILandroid/os/UserHandle;[[Ljava/security/cert/Certificate;)V
-PLcom/android/server/pm/PackageManagerService;->isCompatSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/PackageManagerService;->isEphemeralDisabled()Z
-PLcom/android/server/pm/PackageManagerService;->isExternal(Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/PackageManagerService;->isExternal(Lcom/android/server/pm/PackageSetting;)Z
PLcom/android/server/pm/PackageManagerService;->isExternalMediaAvailable()Z
PLcom/android/server/pm/PackageManagerService;->isFirstBoot()Z
-PLcom/android/server/pm/PackageManagerService;->isInstantAppAllowed(Landroid/content/Intent;Ljava/util/List;IZ)Z
PLcom/android/server/pm/PackageManagerService;->isMultiArch(Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/pm/PackageManagerService;->isNewPlatformPermissionForPackage(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;)Z
PLcom/android/server/pm/PackageManagerService;->isOnlyCoreApps()Z
PLcom/android/server/pm/PackageManagerService;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService;->isPrivilegedApp(Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/PackageManagerService;->isProtectedBroadcast(Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService;->isRecoverSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z
PLcom/android/server/pm/PackageManagerService;->isSafeMode()Z
PLcom/android/server/pm/PackageManagerService;->isStorageLow()Z
-PLcom/android/server/pm/PackageManagerService;->isSystemApp(Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/PackageManagerService;->isUidPrivileged(I)Z
-PLcom/android/server/pm/PackageManagerService;->isUpdatedSystemApp(Lcom/android/server/pm/PackageSetting;)Z
PLcom/android/server/pm/PackageManagerService;->isUpgrade()Z
PLcom/android/server/pm/PackageManagerService;->isUserRestricted(ILjava/lang/String;)Z
PLcom/android/server/pm/PackageManagerService;->isVerificationEnabled(III)Z
-PLcom/android/server/pm/PackageManagerService;->lambda$-com_android_server_pm_PackageManagerService_135654(Ljava/util/List;I)V
-PLcom/android/server/pm/PackageManagerService;->lambda$-com_android_server_pm_PackageManagerService_193108(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V
+PLcom/android/server/pm/PackageManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->loadMediaPackages(Landroid/util/ArrayMap;[IZ)V
-PLcom/android/server/pm/PackageManagerService;->locationIsPrivileged(Ljava/io/File;)Z
-PLcom/android/server/pm/PackageManagerService;->logAppProcessStartIfNeeded(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->matchComponentForVerifier(Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->matchVerifiers(Landroid/content/pm/PackageInfoLite;Ljava/util/List;Lcom/android/server/pm/PackageVerificationState;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->maybeAddInstantAppInstaller(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->maybeMigrateAppDataLIF(Landroid/content/pm/PackageParser$Package;I)Z
-PLcom/android/server/pm/PackageManagerService;->normalizePackageNameLPr(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->packageIsBrowser(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService;->performDexOptInternalWithDependenciesLI(Landroid/content/pm/PackageParser$Package;ZLjava/lang/String;ZZ)I
-PLcom/android/server/pm/PackageManagerService;->performDexOptTraced(Ljava/lang/String;ZLjava/lang/String;ZZ)I
-PLcom/android/server/pm/PackageManagerService;->performDexOptWithStatus(Ljava/lang/String;ZIZZ)I
+PLcom/android/server/pm/PackageManagerService;->maybeThrowExceptionForMultiArchCopy(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
+PLcom/android/server/pm/PackageManagerService;->packageFlagsToInstallFlags(Lcom/android/server/pm/PackageSetting;)I
PLcom/android/server/pm/PackageManagerService;->performFstrimIfNeeded()V
PLcom/android/server/pm/PackageManagerService;->prepareAppDataAfterInstallLIF(Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/PackageManagerService;->prepareAppDataAndMigrateLIF(Landroid/content/pm/PackageParser$Package;IIZ)V
-PLcom/android/server/pm/PackageManagerService;->prepareAppDataContentsLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
-PLcom/android/server/pm/PackageManagerService;->prepareAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V
-PLcom/android/server/pm/PackageManagerService;->prepareAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
-PLcom/android/server/pm/PackageManagerService;->preparePackageParserCache(Z)Ljava/io/File;
PLcom/android/server/pm/PackageManagerService;->processPendingInstall(Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V
-PLcom/android/server/pm/PackageManagerService;->queryCrossProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerService;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptionsInternal(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageManagerService;->queryIntentContentProvidersInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageManagerService;->querySkipCurrentProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
PLcom/android/server/pm/PackageManagerService;->reconcileAppsData(IIZ)V
PLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZ)V
-PLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List;
PLcom/android/server/pm/PackageManagerService;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V
+PLcom/android/server/pm/PackageManagerService;->removeCodePathLI(Ljava/io/File;)V
+PLcom/android/server/pm/PackageManagerService;->removeDexFiles(Ljava/util/List;[Ljava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->removeOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V
-PLcom/android/server/pm/PackageManagerService;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
-PLcom/android/server/pm/PackageManagerService;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerService;->resolveIntentInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/PackageManagerService;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PackageManagerService;->removePackageDataLIF(Lcom/android/server/pm/PackageSetting;[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;IZ)V
+PLcom/android/server/pm/PackageManagerService;->removePackageLI(Landroid/content/pm/PackageParser$Package;Z)V
+PLcom/android/server/pm/PackageManagerService;->removePackageLI(Lcom/android/server/pm/PackageSetting;Z)V
+PLcom/android/server/pm/PackageManagerService;->replaceNonSystemPackageLIF(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;[ILjava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V
+PLcom/android/server/pm/PackageManagerService;->replaceSystemPackageLIF(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;[ILjava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V
+PLcom/android/server/pm/PackageManagerService;->resolveUserIds(I)[I
PLcom/android/server/pm/PackageManagerService;->scanAvailableAsecs()V
-PLcom/android/server/pm/PackageManagerService;->scanDirLI(Ljava/io/File;IIJ)V
-PLcom/android/server/pm/PackageManagerService;->scanDirTracedLI(Ljava/io/File;IIJ)V
-PLcom/android/server/pm/PackageManagerService;->scanPackageInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
-PLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
-PLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
PLcom/android/server/pm/PackageManagerService;->scanPackageTracedLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
PLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictionsLocked(I)V
-PLcom/android/server/pm/PackageManagerService;->sendPackageAddedForNewUsers(Ljava/lang/String;ZI[I)V
+PLcom/android/server/pm/PackageManagerService;->sendPackageAddedForNewUsers(Ljava/lang/String;ZZI[I)V
PLcom/android/server/pm/PackageManagerService;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V
PLcom/android/server/pm/PackageManagerService;->sendPackageChangedBroadcast(Ljava/lang/String;ZLjava/util/ArrayList;I)V
-PLcom/android/server/pm/PackageManagerService;->sendSessionCommitBroadcast(Landroid/content/pm/PackageInstaller$SessionInfo;I)V
PLcom/android/server/pm/PackageManagerService;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V
-PLcom/android/server/pm/PackageManagerService;->setNativeLibraryPaths(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)V
+PLcom/android/server/pm/PackageManagerService;->setInstallAndUpdateTime(Landroid/content/pm/PackageParser$Package;JJ)V
+PLcom/android/server/pm/PackageManagerService;->setInstantAppForUser(Lcom/android/server/pm/PackageSetting;IZZ)V
PLcom/android/server/pm/PackageManagerService;->setUpInstantAppInstallerActivityLP(Landroid/content/pm/ActivityInfo;)V
-PLcom/android/server/pm/PackageManagerService;->shouldCheckUpgradeKeySetLP(Lcom/android/server/pm/PackageSetting;I)Z
PLcom/android/server/pm/PackageManagerService;->shouldShowRequestPermissionRationale(Ljava/lang/String;Ljava/lang/String;I)Z
PLcom/android/server/pm/PackageManagerService;->startCleaningPackages()V
PLcom/android/server/pm/PackageManagerService;->startIntentFilterVerifications(IZLandroid/content/pm/PackageParser$Package;)V
PLcom/android/server/pm/PackageManagerService;->systemReady()V
-PLcom/android/server/pm/PackageManagerService;->updateAllSharedLibrariesLPw(Landroid/content/pm/PackageParser$Package;)Ljava/util/ArrayList;
PLcom/android/server/pm/PackageManagerService;->updateExternalMediaStatusInner(ZZZ)V
PLcom/android/server/pm/PackageManagerService;->updateInstantAppInstallerLocked(Ljava/lang/String;)V
PLcom/android/server/pm/PackageManagerService;->updateIntentForResolve(Landroid/content/Intent;)Landroid/content/Intent;
PLcom/android/server/pm/PackageManagerService;->updatePackagesIfNeeded()V
PLcom/android/server/pm/PackageManagerService;->updatePermissionsLPw(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;I)V
PLcom/android/server/pm/PackageManagerService;->updateSequenceNumberLP(Lcom/android/server/pm/PackageSetting;[I)V
-PLcom/android/server/pm/PackageManagerService;->updateSettingsInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[I[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V
PLcom/android/server/pm/PackageManagerService;->updateSettingsLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V
-PLcom/android/server/pm/PackageManagerService;->updateSharedLibrariesLPr(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/PackageManagerService;->verifyIntentFiltersIfNeeded(IIZLandroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/PackageManagerService;->verifyPendingInstall(II)V
-PLcom/android/server/pm/PackageManagerService;->verifySignaturesLP(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V
PLcom/android/server/pm/PackageManagerService;->waitForAppDataPrepared()V
-PLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getCompilerFilterForReason(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerServiceUtils;->checkISA(Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/PackageSetting;->doCopy(Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/PackageSetting;->getSharedUserId()I
-PLcom/android/server/pm/PackageSetting;->isPrivileged()Z
+PLcom/android/server/pm/PackageManagerShellCommand$1;-><init>(Lcom/android/server/pm/PackageManagerShellCommand;)V
+PLcom/android/server/pm/PackageManagerShellCommand$InstallParams;-><init>()V
+PLcom/android/server/pm/PackageManagerShellCommand$InstallParams;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->-get0(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)Ljava/util/concurrent/SynchronousQueue;
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;-><init>()V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getIntentSender()Landroid/content/IntentSender;
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getResult()Landroid/content/Intent;
+PLcom/android/server/pm/PackageManagerShellCommand;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerShellCommand;->doCommitSession(IZ)I
+PLcom/android/server/pm/PackageManagerShellCommand;->doCreateSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/pm/PackageManagerShellCommand;->runInstall()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runList()I
+PLcom/android/server/pm/PackageManagerShellCommand;->setParamsSize(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerShellCommand;->translateUserId(ILjava/lang/String;)I
+PLcom/android/server/pm/PackageSetting;->isForwardLocked()Z
PLcom/android/server/pm/PackageSetting;->isSharedUser()Z
-PLcom/android/server/pm/PackageSetting;->isSystem()Z
-PLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String;
-PLcom/android/server/pm/PackageSettingBase;-><init>(Lcom/android/server/pm/PackageSettingBase;Ljava/lang/String;)V
PLcom/android/server/pm/PackageSettingBase;->disableComponentLPw(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageSettingBase;->doCopy(Lcom/android/server/pm/PackageSettingBase;)V
-PLcom/android/server/pm/PackageSettingBase;->enableComponentLPw(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageSettingBase;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageSettingBase;->getEnabled(I)I
-PLcom/android/server/pm/PackageSettingBase;->getInstallStatus()I
-PLcom/android/server/pm/PackageSettingBase;->getIntentFilterVerificationInfo()Landroid/content/pm/IntentFilterVerificationInfo;
-PLcom/android/server/pm/PackageSettingBase;->getNotInstalledUserIds()[I
-PLcom/android/server/pm/PackageSettingBase;->getNotLaunched(I)Z
+PLcom/android/server/pm/PackageSettingBase;->getCeDataInode(I)J
+PLcom/android/server/pm/PackageSettingBase;->getDisabledComponents(I)Landroid/util/ArraySet;
+PLcom/android/server/pm/PackageSettingBase;->getEnabledComponents(I)Landroid/util/ArraySet;
+PLcom/android/server/pm/PackageSettingBase;->getInstallReason(I)I
PLcom/android/server/pm/PackageSettingBase;->getOverlayPaths(I)[Ljava/lang/String;
-PLcom/android/server/pm/PackageSettingBase;->getStopped(I)Z
-PLcom/android/server/pm/PackageSettingBase;->getSuspended(I)Z
-PLcom/android/server/pm/PackageSettingBase;->modifyUserStateComponents(IZZ)Landroid/content/pm/PackageUserState;
PLcom/android/server/pm/PackageSettingBase;->queryInstalledUsers([IZ)[I
-PLcom/android/server/pm/PackageSettingBase;->setCeDataInode(JI)V
+PLcom/android/server/pm/PackageSettingBase;->restoreComponentLPw(Ljava/lang/String;I)Z
PLcom/android/server/pm/PackageSettingBase;->setInstallReason(II)V
PLcom/android/server/pm/PackageSettingBase;->setInstallStatus(I)V
PLcom/android/server/pm/PackageSettingBase;->setInstalled(ZI)V
PLcom/android/server/pm/PackageSettingBase;->setInstallerPackageName(Ljava/lang/String;)V
-PLcom/android/server/pm/PackageSettingBase;->setOverlayPaths(Ljava/util/List;[Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageSettingBase;->setStopped(ZI)V
PLcom/android/server/pm/PackageSettingBase;->setUpdateAvailable(Z)V
-PLcom/android/server/pm/PackageSettingBase;->setUserState(IJIZZZZZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;III)V
-PLcom/android/server/pm/PackageUsage;->parseAsLong(Ljava/lang/String;)J
-PLcom/android/server/pm/PackageUsage;->readInternal(Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageUsage;->readInternal(Ljava/util/Map;)V
-PLcom/android/server/pm/PackageUsage;->readLine(Ljava/io/InputStream;Ljava/lang/StringBuffer;)Ljava/lang/String;
-PLcom/android/server/pm/PackageUsage;->readVersion1LP(Ljava/util/Map;Ljava/io/InputStream;Ljava/lang/StringBuffer;)V
-PLcom/android/server/pm/PackageVerificationResponse;-><init>(II)V
-PLcom/android/server/pm/PackageVerificationState;-><init>(ILcom/android/server/pm/PackageManagerService$InstallArgs;)V
-PLcom/android/server/pm/PackageVerificationState;->getInstallArgs()Lcom/android/server/pm/PackageManagerService$InstallArgs;
-PLcom/android/server/pm/PackageVerificationState;->isInstallAllowed()Z
-PLcom/android/server/pm/PackageVerificationState;->isVerificationComplete()Z
-PLcom/android/server/pm/PackageVerificationState;->setVerifierResponse(II)Z
-PLcom/android/server/pm/ParallelPackageParser$ParseResult;-><init>()V
-PLcom/android/server/pm/ParallelPackageParser;-><init>([Ljava/lang/String;ZLandroid/util/DisplayMetrics;Ljava/io/File;Landroid/content/pm/PackageParser$Callback;)V
-PLcom/android/server/pm/ParallelPackageParser;->close()V
-PLcom/android/server/pm/ParallelPackageParser;->lambda$-com_android_server_pm_ParallelPackageParser_3701(Ljava/io/File;I)V
-PLcom/android/server/pm/ParallelPackageParser;->parsePackage(Landroid/content/pm/PackageParser;Ljava/io/File;I)Landroid/content/pm/PackageParser$Package;
-PLcom/android/server/pm/ParallelPackageParser;->submit(Ljava/io/File;I)V
-PLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult;
-PLcom/android/server/pm/PermissionsState$PermissionData;->revoke(I)Z
+PLcom/android/server/pm/PackageSignatures;->toString()Ljava/lang/String;
PLcom/android/server/pm/PermissionsState;-><init>(Lcom/android/server/pm/PermissionsState;)V
-PLcom/android/server/pm/PermissionsState;->computeGids([I)[I
-PLcom/android/server/pm/PermissionsState;->ensureNoPermissionData(Ljava/lang/String;)V
PLcom/android/server/pm/PermissionsState;->getInstallPermissionState(Ljava/lang/String;)Lcom/android/server/pm/PermissionsState$PermissionState;
-PLcom/android/server/pm/PermissionsState;->getInstallPermissionStates()Ljava/util/List;
PLcom/android/server/pm/PermissionsState;->getPermissionFlags(Ljava/lang/String;I)I
-PLcom/android/server/pm/PermissionsState;->getRuntimePermissionStates(I)Ljava/util/List;
-PLcom/android/server/pm/PermissionsState;->grantRuntimePermission(Lcom/android/server/pm/BasePermission;I)I
PLcom/android/server/pm/PermissionsState;->reset()V
-PLcom/android/server/pm/PermissionsState;->revokeInstallPermission(Lcom/android/server/pm/BasePermission;)I
-PLcom/android/server/pm/PermissionsState;->revokePermission(Lcom/android/server/pm/BasePermission;I)I
-PLcom/android/server/pm/PermissionsState;->setGlobalGids([I)V
-PLcom/android/server/pm/Policy;->getMatchedSeInfo(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String;
-PLcom/android/server/pm/PreferredActivity;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/pm/PreferredActivity;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z
-PLcom/android/server/pm/PreferredActivity;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
-PLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/pm/PreferredComponent;->getParseError()Ljava/lang/String;
-PLcom/android/server/pm/PreferredComponent;->sameSet([Landroid/content/ComponentName;)Z
-PLcom/android/server/pm/PreferredComponent;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
-PLcom/android/server/pm/PreferredIntentResolver;-><init>()V
-PLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
-PLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PreferredActivity;
+PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
+PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/pm/PreferredActivity;)Z
PLcom/android/server/pm/ProcessLoggingHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/pm/ProcessLoggingHandler;->invalidateProcessLoggingBaseApkHash(Ljava/lang/String;)V
PLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z
PLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z
PLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(Ljava/lang/String;)Z
PLcom/android/server/pm/ProtectedPackages;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V
-PLcom/android/server/pm/SettingBase;-><init>(Lcom/android/server/pm/SettingBase;)V
-PLcom/android/server/pm/SettingBase;->doCopy(Lcom/android/server/pm/SettingBase;)V
-PLcom/android/server/pm/Settings$KernelPackageState;-><init>()V
-PLcom/android/server/pm/Settings$KernelPackageState;-><init>(Lcom/android/server/pm/Settings$KernelPackageState;)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-wrap1(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;I)V
PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->areDefaultRuntimPermissionsGrantedLPr(I)Z
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parsePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PermissionsState;I)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parseRuntimePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;I)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSyncLPr(I)V
-PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsForUserAsyncLPr(I)V
PLcom/android/server/pm/Settings$VersionInfo;->forceCurrent()V
PLcom/android/server/pm/Settings;->-get0(Lcom/android/server/pm/Settings;)Landroid/util/SparseArray;
-PLcom/android/server/pm/Settings;->-wrap0(Lcom/android/server/pm/Settings;I)Ljava/io/File;
-PLcom/android/server/pm/Settings;->addPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;)V
-PLcom/android/server/pm/Settings;->addUserToSettingLPw(Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/Settings;->applyPendingPermissionGrantsLPw(Ljava/lang/String;I)V
PLcom/android/server/pm/Settings;->areDefaultRuntimePermissionsGrantedLPr(I)Z
-PLcom/android/server/pm/Settings;->createNewSetting(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/UserHandle;ZZLjava/lang/String;Ljava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[I)Lcom/android/server/pm/PackageSetting;
-PLcom/android/server/pm/Settings;->editPreferredActivitiesLPw(I)Lcom/android/server/pm/PreferredIntentResolver;
-PLcom/android/server/pm/Settings;->getAllSharedUsersLPw()Ljava/util/Collection;
-PLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I
+PLcom/android/server/pm/Settings;->disableSystemPackageLPw(Ljava/lang/String;Z)Z
+PLcom/android/server/pm/Settings;->dumpGidsLPr(Ljava/io/PrintWriter;Ljava/lang/String;[I)V
+PLcom/android/server/pm/Settings;->dumpSplitNames(Ljava/io/PrintWriter;Landroid/content/pm/PackageParser$Package;)V
PLcom/android/server/pm/Settings;->getBlockUninstallLPr(ILjava/lang/String;)Z
-PLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I
-PLcom/android/server/pm/Settings;->getDefaultBrowserPackageNameLPw(I)Ljava/lang/String;
-PLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
PLcom/android/server/pm/Settings;->getInstallerPackageNameLPr(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/Settings;->getIntentFilterVerificationLPr(Ljava/lang/String;)Landroid/content/pm/IntentFilterVerificationInfo;
-PLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo;
-PLcom/android/server/pm/Settings;->getListOfIncompleteInstallPackagesLPr()Ljava/util/ArrayList;
-PLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
-PLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;IIZ)Lcom/android/server/pm/SharedUserSetting;
-PLcom/android/server/pm/Settings;->getUserPackagesStateBackupFile(I)Ljava/io/File;
-PLcom/android/server/pm/Settings;->getUserPackagesStateFile(I)Ljava/io/File;
-PLcom/android/server/pm/Settings;->getUserRuntimePermissionsFile(I)Ljava/io/File;
-PLcom/android/server/pm/Settings;->getVolumePackagesLPr(Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/Settings;->isDisabledSystemPackageLPr(Ljava/lang/String;)Z
-PLcom/android/server/pm/Settings;->newUserIdLPw(Ljava/lang/Object;)I
-PLcom/android/server/pm/Settings;->pruneSharedUsersLPw()V
-PLcom/android/server/pm/Settings;->readComponentsLPr(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/ArraySet;
-PLcom/android/server/pm/Settings;->readCrossProfileIntentFiltersLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
-PLcom/android/server/pm/Settings;->readDefaultAppsLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
-PLcom/android/server/pm/Settings;->readDisabledSysPackageLPw(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/pm/Settings;->readPersistentPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
-PLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
-PLcom/android/server/pm/Settings;->readSharedUserLPw(Lorg/xmlpull/v1/XmlPullParser;)V
+PLcom/android/server/pm/Settings;->replacePackageLPw(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/Settings;->replaceUserIdLPw(ILjava/lang/Object;)V
PLcom/android/server/pm/Settings;->setInstallStatus(Ljava/lang/String;I)V
PLcom/android/server/pm/Settings;->setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[I)V
PLcom/android/server/pm/Settings;->wasPackageEverLaunchedLPr(Ljava/lang/String;I)Z
PLcom/android/server/pm/Settings;->writeAllRuntimePermissionsLPr()V
-PLcom/android/server/pm/Settings;->writeAllUsersPackageRestrictionsLPr()V
PLcom/android/server/pm/Settings;->writeBlockUninstallPackagesLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
-PLcom/android/server/pm/Settings;->writeChildPackagesLPw(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
PLcom/android/server/pm/Settings;->writeCrossProfileIntentFiltersLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
-PLcom/android/server/pm/Settings;->writeDefaultAppsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
-PLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/Settings;->writeDomainVerificationsLPr(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/IntentFilterVerificationInfo;)V
-PLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
PLcom/android/server/pm/Settings;->writePackageListLPr()V
PLcom/android/server/pm/Settings;->writePersistentPreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
-PLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;IZ)V
-PLcom/android/server/pm/Settings;->writeRuntimePermissionsForUserLPr(IZ)V
-PLcom/android/server/pm/Settings;->writeUpgradeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
-PLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;[I)V
-PLcom/android/server/pm/SharedUserSetting;->addPackage(Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/SharedUserSetting;->removePackage(Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/SharedUserSetting;->toString()Ljava/lang/String;
PLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;-><init>(Landroid/content/pm/ShortcutInfo;[B)V
PLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;-><init>(Landroid/content/pm/ShortcutInfo;[BLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;)V
PLcom/android/server/pm/ShortcutBitmapSaver;-><init>(Lcom/android/server/pm/ShortcutService;)V
-PLcom/android/server/pm/ShortcutBitmapSaver;->getBitmapPathMayWaitLocked(Landroid/content/pm/ShortcutInfo;)Ljava/lang/String;
PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$-com_android_server_pm_ShortcutBitmapSaver_4411(Ljava/util/concurrent/CountDownLatch;)V
PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$-com_android_server_pm_ShortcutBitmapSaver_7645()V
PLcom/android/server/pm/ShortcutBitmapSaver;->processPendingItems()Z
@@ -10898,91 +12732,57 @@ PLcom/android/server/pm/ShortcutBitmapSaver;->waitForAllSavesLocked()Z
PLcom/android/server/pm/ShortcutDumpFiles;-><init>(Lcom/android/server/pm/ShortcutService;)V
PLcom/android/server/pm/ShortcutLauncher;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;I)V
PLcom/android/server/pm/ShortcutLauncher;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;ILcom/android/server/pm/ShortcutPackageInfo;)V
-PLcom/android/server/pm/ShortcutLauncher;->addPinnedShortcut(Ljava/lang/String;ILjava/lang/String;)V
PLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(Ljava/lang/String;I)Landroid/util/ArraySet;
-PLcom/android/server/pm/ShortcutLauncher;->hasPinned(Landroid/content/pm/ShortcutInfo;)Z
-PLcom/android/server/pm/ShortcutLauncher;->pinShortcuts(ILjava/lang/String;Ljava/util/List;)V
PLcom/android/server/pm/ShortcutLauncher;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
PLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;)V
PLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
PLcom/android/server/pm/ShortcutPackage;->addOrUpdateDynamicShortcut(Landroid/content/pm/ShortcutInfo;)V
PLcom/android/server/pm/ShortcutPackage;->addShortcutInner(Landroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutPackage;->adjustRanks()V
-PLcom/android/server/pm/ShortcutPackage;->areAllActivitiesStillEnabled()Z
PLcom/android/server/pm/ShortcutPackage;->clearAllImplicitRanks()V
PLcom/android/server/pm/ShortcutPackage;->deleteAllDynamicShortcuts()V
PLcom/android/server/pm/ShortcutPackage;->deleteDynamicWithId(Ljava/lang/String;)Z
PLcom/android/server/pm/ShortcutPackage;->deleteOrDisableWithId(Ljava/lang/String;ZZ)Landroid/content/pm/ShortcutInfo;
PLcom/android/server/pm/ShortcutPackage;->deleteShortcutInner(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo;
+PLcom/android/server/pm/ShortcutPackage;->disableWithId(Ljava/lang/String;Ljava/lang/String;IZ)V
PLcom/android/server/pm/ShortcutPackage;->enforceShortcutCountsBeforeOperation(Ljava/util/List;I)V
PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncluded(Ljava/util/List;)V
PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncludedWithIds(Ljava/util/List;)V
PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Landroid/content/pm/ShortcutInfo;)V
PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Ljava/lang/String;)V
PLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;I)V
-PLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;I)V
PLcom/android/server/pm/ShortcutPackage;->findShortcutById(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo;
PLcom/android/server/pm/ShortcutPackage;->getApiCallCount()I
PLcom/android/server/pm/ShortcutPackage;->getFileName(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/pm/ShortcutPackage;->getOwnerUserId()I
+PLcom/android/server/pm/ShortcutPackage;->getPackageResources()Landroid/content/res/Resources;
PLcom/android/server/pm/ShortcutPackage;->getUsedBitmapFiles()Landroid/util/ArraySet;
PLcom/android/server/pm/ShortcutPackage;->incrementCountForActivity(Landroid/util/ArrayMap;Landroid/content/ComponentName;I)V
-PLcom/android/server/pm/ShortcutPackage;->lambda$-com_android_server_pm_ShortcutPackage_14748(Lcom/android/server/pm/ShortcutLauncher;)V
PLcom/android/server/pm/ShortcutPackage;->lambda$-com_android_server_pm_ShortcutPackage_41443(Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;)I
-PLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lorg/xmlpull/v1/XmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage;
-PLcom/android/server/pm/ShortcutPackage;->parseIntent(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent;
-PLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Landroid/content/pm/ShortcutInfo;
-PLcom/android/server/pm/ShortcutPackage;->refreshPinnedFlags()V
+PLcom/android/server/pm/ShortcutPackage;->pushOutExcessShortcuts()Z
PLcom/android/server/pm/ShortcutPackage;->removeOrphans()V
-PLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z
PLcom/android/server/pm/ShortcutPackage;->resetRateLimiting()V
-PLcom/android/server/pm/ShortcutPackage;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
-PLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap;
PLcom/android/server/pm/ShortcutPackage;->tryApiCall()Z
PLcom/android/server/pm/ShortcutPackageInfo;-><init>(IJLjava/util/ArrayList;Z)V
PLcom/android/server/pm/ShortcutPackageInfo;->getLastUpdateTime()J
PLcom/android/server/pm/ShortcutPackageInfo;->getVersionCode()I
-PLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z
PLcom/android/server/pm/ShortcutPackageInfo;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;Z)V
PLcom/android/server/pm/ShortcutPackageInfo;->newEmpty()Lcom/android/server/pm/ShortcutPackageInfo;
-PLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+PLcom/android/server/pm/ShortcutPackageInfo;->updateVersionInfo(Landroid/content/pm/PackageInfo;)V
PLcom/android/server/pm/ShortcutPackageItem;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
-PLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V
-PLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo;
-PLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String;
-PLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I
PLcom/android/server/pm/ShortcutPackageItem;->getUser()Lcom/android/server/pm/ShortcutUser;
+PLcom/android/server/pm/ShortcutParser;->createShortcutFromManifest(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;IIIIIZ)Landroid/content/pm/ShortcutInfo;
PLcom/android/server/pm/ShortcutParser;->parseShortcuts(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
-PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/IntentSender;I)V
-PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/IntentSender;ILcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;)V
-PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;->accept(Landroid/os/Bundle;)Z
-PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;->isCallerValid()Z
-PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Ljava/lang/String;IIZ)V
-PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Ljava/lang/String;IIZLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;)V
-PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;->getShortcutInfo()Landroid/content/pm/ShortcutInfo;
-PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;->tryAccept()Z
PLcom/android/server/pm/ShortcutRequestPinProcessor;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/Object;)V
-PLcom/android/server/pm/ShortcutRequestPinProcessor;->directPinShortcut(Lcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;)Z
PLcom/android/server/pm/ShortcutRequestPinProcessor;->getRequestPinConfirmationActivity(II)Landroid/util/Pair;
-PLcom/android/server/pm/ShortcutRequestPinProcessor;->isCallerUid(I)Z
PLcom/android/server/pm/ShortcutRequestPinProcessor;->isRequestPinItemSupported(II)Z
-PLcom/android/server/pm/ShortcutRequestPinProcessor;->requestPinItemLocked(Landroid/content/pm/ShortcutInfo;Landroid/appwidget/AppWidgetProviderInfo;Landroid/os/Bundle;ILandroid/content/IntentSender;)Z
-PLcom/android/server/pm/ShortcutRequestPinProcessor;->requestPinShortcutLocked(Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Landroid/util/Pair;)Landroid/content/pm/LauncherApps$PinItemRequest;
-PLcom/android/server/pm/ShortcutRequestPinProcessor;->sendResultIntent(Landroid/content/IntentSender;Landroid/content/Intent;)V
-PLcom/android/server/pm/ShortcutRequestPinProcessor;->startRequestConfirmActivity(Landroid/content/ComponentName;ILandroid/content/pm/LauncherApps$PinItemRequest;I)Z
PLcom/android/server/pm/ShortcutService$1;-><init>()V
PLcom/android/server/pm/ShortcutService$1;->test(Landroid/content/pm/ResolveInfo;)Z
PLcom/android/server/pm/ShortcutService$1;->test(Ljava/lang/Object;)Z
PLcom/android/server/pm/ShortcutService$2;-><init>()V
-PLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z
PLcom/android/server/pm/ShortcutService$3;-><init>(Lcom/android/server/pm/ShortcutService;)V
PLcom/android/server/pm/ShortcutService$3;->onUidGone(IZ)V
-PLcom/android/server/pm/ShortcutService$3;->onUidStateChanged(IIJ)V
PLcom/android/server/pm/ShortcutService$4;-><init>(Lcom/android/server/pm/ShortcutService;)V
PLcom/android/server/pm/ShortcutService$5;-><init>(Lcom/android/server/pm/ShortcutService;)V
-PLcom/android/server/pm/ShortcutService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;-><init>(Ljava/io/File;)V
PLcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;->getFile()Ljava/io/File;
PLcom/android/server/pm/ShortcutService$Lifecycle;-><init>(Landroid/content/Context;)V
@@ -10992,24 +12792,17 @@ PLcom/android/server/pm/ShortcutService$Lifecycle;->onUnlockUser(I)V
PLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;)V
PLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService$LocalService;)V
PLcom/android/server/pm/ShortcutService$LocalService;->addListener(Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;)V
-PLcom/android/server/pm/ShortcutService$LocalService;->getShortcutIconFd(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;II)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;I)V
PLcom/android/server/pm/ShortcutService$LocalService;->hasShortcutHostPermission(ILjava/lang/String;)Z
-PLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_85705(ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;ILcom/android/server/pm/ShortcutPackage;)V
-PLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_86821(JLandroid/util/ArraySet;Landroid/content/ComponentName;ILandroid/content/pm/ShortcutInfo;)Z
-PLcom/android/server/pm/ShortcutService$LocalService;->pinShortcuts(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;I)V
+PLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_85684(ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;ILcom/android/server/pm/ShortcutPackage;)V
PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-0()V
PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-1(Landroid/content/pm/ShortcutInfo;)Z
PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-2(Landroid/content/pm/ShortcutInfo;)Z
PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-3(Landroid/content/pm/ShortcutInfo;)Z
PLcom/android/server/pm/ShortcutService;->-get1(Lcom/android/server/pm/ShortcutService;)Ljava/util/ArrayList;
PLcom/android/server/pm/ShortcutService;->-get2(Lcom/android/server/pm/ShortcutService;)Ljava/lang/Object;
-PLcom/android/server/pm/ShortcutService;->-get3(Lcom/android/server/pm/ShortcutService;)Lcom/android/server/pm/ShortcutBitmapSaver;
-PLcom/android/server/pm/ShortcutService;->-wrap0(Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/pm/ShortcutService;->-wrap2(Lcom/android/server/pm/ShortcutService;Ljava/util/List;)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->-wrap4(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;->-wrap5(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->-wrap8(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;)V
PLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;Landroid/os/Looper;Z)V
PLcom/android/server/pm/ShortcutService;->assignImplicitRanks(Ljava/util/List;)V
@@ -11021,62 +12814,44 @@ PLcom/android/server/pm/ShortcutService;->enableShortcuts(Ljava/lang/String;Ljav
PLcom/android/server/pm/ShortcutService;->enforceMaxActivityShortcuts(I)V
PLcom/android/server/pm/ShortcutService;->fillInDefaultActivity(Ljava/util/List;)V
PLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;Z)V
-PLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V
PLcom/android/server/pm/ShortcutService;->fixUpShortcutResourceNamesAndValues(Landroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V
PLcom/android/server/pm/ShortcutService;->getActivityInfoWithMetadata(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/ShortcutService;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
PLcom/android/server/pm/ShortcutService;->getBaseStateFile()Landroid/util/AtomicFile;
PLcom/android/server/pm/ShortcutService;->getDefaultLauncher(I)Landroid/content/ComponentName;
PLcom/android/server/pm/ShortcutService;->getDynamicShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/ShortcutService;->getIconMaxDimensions(Ljava/lang/String;I)I
PLcom/android/server/pm/ShortcutService;->getInstalledPackages(I)Ljava/util/List;
PLcom/android/server/pm/ShortcutService;->getLastResetTimeLocked()J
-PLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher;
PLcom/android/server/pm/ShortcutService;->getMainActivityIntent()Landroid/content/Intent;
PLcom/android/server/pm/ShortcutService;->getManifestShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/ShortcutService;->getMaxActivityShortcuts()I
PLcom/android/server/pm/ShortcutService;->getMaxShortcutCountPerActivity(Ljava/lang/String;I)I
PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage;
PLcom/android/server/pm/ShortcutService;->getParentOrSelfUserId(I)I
PLcom/android/server/pm/ShortcutService;->getPinnedShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/ShortcutService;->getShortcutsWithQueryLocked(Ljava/lang/String;IILjava/util/function/Predicate;)Landroid/content/pm/ParceledListSlice;
PLcom/android/server/pm/ShortcutService;->getUidLastForegroundElapsedTimeLocked(I)J
PLcom/android/server/pm/ShortcutService;->getUserBitmapFilePath(I)Ljava/io/File;
PLcom/android/server/pm/ShortcutService;->getUserFile(I)Ljava/io/File;
-PLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;
-PLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V
-PLcom/android/server/pm/ShortcutService;->handlePackageAdded(Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;->handlePackageChanged(Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->handlePackageUpdateFinished(Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;->handleUnlockUser(I)V
PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermission(Ljava/lang/String;I)Z
-PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermissionInner(Ljava/lang/String;I)Z
PLcom/android/server/pm/ShortcutService;->initialize()V
-PLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I
PLcom/android/server/pm/ShortcutService;->injectBuildFingerprint()Ljava/lang/String;
-PLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J
-PLcom/android/server/pm/ShortcutService;->injectCurrentTimeMillis()J
PLcom/android/server/pm/ShortcutService;->injectDipToPixel(I)I
PLcom/android/server/pm/ShortcutService;->injectGetActivityInfoWithMetadataWithUninstalled(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/ShortcutService;->injectGetDefaultMainActivity(Ljava/lang/String;I)Landroid/content/ComponentName;
PLcom/android/server/pm/ShortcutService;->injectGetLocaleTagsForUser(I)Ljava/lang/String;
PLcom/android/server/pm/ShortcutService;->injectGetMainActivities(Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I
PLcom/android/server/pm/ShortcutService;->injectGetPackagesWithUninstalled(I)Ljava/util/List;
PLcom/android/server/pm/ShortcutService;->injectGetPinConfirmationActivity(Ljava/lang/String;II)Landroid/content/ComponentName;
PLcom/android/server/pm/ShortcutService;->injectGetResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources;
-PLcom/android/server/pm/ShortcutService;->injectIsActivityEnabledAndExported(Landroid/content/ComponentName;I)Z
PLcom/android/server/pm/ShortcutService;->injectIsLowRamDevice()Z
PLcom/android/server/pm/ShortcutService;->injectIsMainActivity(Landroid/content/ComponentName;I)Z
PLcom/android/server/pm/ShortcutService;->injectIsSafeModeEnabled()Z
-PLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
PLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V
PLcom/android/server/pm/ShortcutService;->injectRegisterUidObserver(Landroid/app/IUidObserver;I)V
-PLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V
PLcom/android/server/pm/ShortcutService;->injectRunOnNewThread(Ljava/lang/Runnable;)V
-PLcom/android/server/pm/ShortcutService;->injectSendIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V
PLcom/android/server/pm/ShortcutService;->injectShortcutManagerConstants()Ljava/lang/String;
PLcom/android/server/pm/ShortcutService;->injectShouldPerformVerification()Z
PLcom/android/server/pm/ShortcutService;->injectSystemDataPath()Ljava/io/File;
@@ -11085,46 +12860,32 @@ PLcom/android/server/pm/ShortcutService;->injectValidateIconResPackage(Landroid/
PLcom/android/server/pm/ShortcutService;->injectXmlMetaData(Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;
PLcom/android/server/pm/ShortcutService;->isCallerSystem()Z
PLcom/android/server/pm/ShortcutService;->isClockValid(J)Z
-PLcom/android/server/pm/ShortcutService;->isDummyMainActivity(Landroid/content/ComponentName;)Z
PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Landroid/content/pm/ApplicationInfo;)Z
PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Ljava/lang/String;I)Z
PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ActivityInfo;)Z
-PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ActivityInfo;)Landroid/content/pm/ActivityInfo;
PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo;
PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/PackageInfo;)Landroid/content/pm/PackageInfo;
PLcom/android/server/pm/ShortcutService;->isPackageInstalled(Ljava/lang/String;I)Z
-PLcom/android/server/pm/ShortcutService;->isProcessStateForeground(I)Z
PLcom/android/server/pm/ShortcutService;->isRequestPinItemSupported(II)Z
PLcom/android/server/pm/ShortcutService;->isUidForegroundLocked(I)Z
-PLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z
-PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_101495(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
-PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_21427(JI)V
-PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_54784(ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_101474(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_21406(JI)V
+PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_54763(ILjava/lang/String;)V
PLcom/android/server/pm/ShortcutService;->loadBaseStateLocked()V
PLcom/android/server/pm/ShortcutService;->loadConfigurationLocked()V
PLcom/android/server/pm/ShortcutService;->loadUserInternal(ILjava/io/InputStream;Z)Lcom/android/server/pm/ShortcutUser;
PLcom/android/server/pm/ShortcutService;->loadUserLocked(I)Lcom/android/server/pm/ShortcutUser;
-PLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V
PLcom/android/server/pm/ShortcutService;->notifyListeners(Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;->onBootPhase(I)V
PLcom/android/server/pm/ShortcutService;->openIconFileForWrite(ILandroid/content/pm/ShortcutInfo;)Lcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;
PLcom/android/server/pm/ShortcutService;->packageShortcutsChanged(Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
PLcom/android/server/pm/ShortcutService;->parseComponentNameAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/ComponentName;
-PLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I
PLcom/android/server/pm/ShortcutService;->parseIntentAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
-PLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
-PLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J
-PLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
-PLcom/android/server/pm/ShortcutService;->parseStringAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->removeDynamicShortcuts(Ljava/lang/String;Ljava/util/List;I)V
PLcom/android/server/pm/ShortcutService;->removeIconLocked(Landroid/content/pm/ShortcutInfo;)V
PLcom/android/server/pm/ShortcutService;->reportShortcutUsed(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/ShortcutService;->requestPinItem(Ljava/lang/String;ILandroid/content/pm/ShortcutInfo;Landroid/appwidget/AppWidgetProviderInfo;Landroid/os/Bundle;Landroid/content/IntentSender;)Z
-PLcom/android/server/pm/ShortcutService;->requestPinShortcut(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;I)Z
PLcom/android/server/pm/ShortcutService;->rescanUpdatedPackagesLocked(IJ)V
PLcom/android/server/pm/ShortcutService;->saveDirtyInfo()V
PLcom/android/server/pm/ShortcutService;->saveIconAndFixUpShortcutLocked(Landroid/content/pm/ShortcutInfo;)V
@@ -11133,49 +12894,31 @@ PLcom/android/server/pm/ShortcutService;->saveUserLocked(I)V
PLcom/android/server/pm/ShortcutService;->scheduleSaveInner(I)V
PLcom/android/server/pm/ShortcutService;->scheduleSaveUser(I)V
PLcom/android/server/pm/ShortcutService;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
-PLcom/android/server/pm/ShortcutService;->setReturnedByServer(Ljava/util/List;)Ljava/util/List;
PLcom/android/server/pm/ShortcutService;->shrinkBitmap(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
-PLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V
PLcom/android/server/pm/ShortcutService;->updateConfigurationLocked(Ljava/lang/String;)Z
PLcom/android/server/pm/ShortcutService;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
PLcom/android/server/pm/ShortcutService;->updateTimesLocked()V
-PLcom/android/server/pm/ShortcutService;->validateShortcutForPinRequest(Landroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutService;->verifyStates()V
-PLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V
-PLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/Intent;)V
-PLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V
-PLcom/android/server/pm/ShortcutService;->writeTagExtra(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/os/PersistableBundle;)V
PLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V
PLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/pm/ShortcutUser$PackageWithUser;-><init>(ILjava/lang/String;)V
PLcom/android/server/pm/ShortcutUser$PackageWithUser;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/pm/ShortcutUser$PackageWithUser;->hashCode()I
-PLcom/android/server/pm/ShortcutUser$PackageWithUser;->of(ILjava/lang/String;)Lcom/android/server/pm/ShortcutUser$PackageWithUser;
PLcom/android/server/pm/ShortcutUser;-><init>(Lcom/android/server/pm/ShortcutService;I)V
PLcom/android/server/pm/ShortcutUser;->attemptToRestoreIfNeededAndSave(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
PLcom/android/server/pm/ShortcutUser;->clearLauncher()V
PLcom/android/server/pm/ShortcutUser;->detectLocaleChange()V
PLcom/android/server/pm/ShortcutUser;->forAllLaunchers(Ljava/util/function/Consumer;)V
PLcom/android/server/pm/ShortcutUser;->forAllPackageItems(Ljava/util/function/Consumer;)V
-PLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V
PLcom/android/server/pm/ShortcutUser;->forPackageItem(Ljava/lang/String;ILjava/util/function/Consumer;)V
PLcom/android/server/pm/ShortcutUser;->getCachedLauncher()Landroid/content/ComponentName;
PLcom/android/server/pm/ShortcutUser;->getKnownLocales()Ljava/lang/String;
PLcom/android/server/pm/ShortcutUser;->getLastAppScanOsFingerprint()Ljava/lang/String;
PLcom/android/server/pm/ShortcutUser;->getLastAppScanTime()J
PLcom/android/server/pm/ShortcutUser;->getLastKnownLauncher()Landroid/content/ComponentName;
-PLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;
-PLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
-PLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
PLcom/android/server/pm/ShortcutUser;->getUserId()I
PLcom/android/server/pm/ShortcutUser;->hasPackage(Ljava/lang/String;)Z
-PLcom/android/server/pm/ShortcutUser;->lambda$-com_android_server_pm_ShortcutUser_8319(ILjava/lang/String;Ljava/util/function/Consumer;Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutUser;->lambda$-com_android_server_pm_ShortcutUser_11105(Lcom/android/server/pm/ShortcutPackageItem;)V
PLcom/android/server/pm/ShortcutUser;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lorg/xmlpull/v1/XmlPullParser;IZ)Lcom/android/server/pm/ShortcutUser;
PLcom/android/server/pm/ShortcutUser;->onCalledByPublisher(Ljava/lang/String;)V
-PLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V
-PLcom/android/server/pm/ShortcutUser;->saveShortcutPackageItem(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/ShortcutPackageItem;Z)V
-PLcom/android/server/pm/ShortcutUser;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
PLcom/android/server/pm/ShortcutUser;->setLastAppScanOsFingerprint(Ljava/lang/String;)V
PLcom/android/server/pm/ShortcutUser;->setLastAppScanTime(J)V
PLcom/android/server/pm/ShortcutUser;->setLauncher(Landroid/content/ComponentName;)V
@@ -11199,8 +12942,6 @@ PLcom/android/server/pm/UserManagerService$LifeCycle;->onStart()V
PLcom/android/server/pm/UserManagerService$LocalService;->addUserRestrictionsListener(Landroid/os/UserManagerInternal$UserRestrictionsListener;)V
PLcom/android/server/pm/UserManagerService$LocalService;->getUserIds()[I
PLcom/android/server/pm/UserManagerService$LocalService;->getUserRestriction(ILjava/lang/String;)Z
-PLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z
-PLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z
PLcom/android/server/pm/UserManagerService$LocalService;->setDeviceManaged(Z)V
PLcom/android/server/pm/UserManagerService$LocalService;->setDevicePolicyUserRestrictions(ILandroid/os/Bundle;ZI)V
PLcom/android/server/pm/UserManagerService$LocalService;->setUserManaged(IZ)V
@@ -11218,46 +12959,23 @@ PLcom/android/server/pm/UserManagerService;->-wrap11(Lcom/android/server/pm/User
PLcom/android/server/pm/UserManagerService;->-wrap4(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
PLcom/android/server/pm/UserManagerService;->-wrap9(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;ZI)V
PLcom/android/server/pm/UserManagerService;->applyUserRestrictionsLR(I)V
-PLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermIfCallerInOtherProfileGroup(ILjava/lang/String;)V
PLcom/android/server/pm/UserManagerService;->checkManageUserAndAcrossUsersFullPermission(Ljava/lang/String;)V
-PLcom/android/server/pm/UserManagerService;->checkManageUsersPermission(Ljava/lang/String;)V
PLcom/android/server/pm/UserManagerService;->cleanupPartialUsers()V
PLcom/android/server/pm/UserManagerService;->computeEffectiveUserRestrictionsLR(I)Landroid/os/Bundle;
PLcom/android/server/pm/UserManagerService;->findCurrentGuestUser()Landroid/content/pm/UserInfo;
-PLcom/android/server/pm/UserManagerService;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
-PLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle;
PLcom/android/server/pm/UserManagerService;->getCredentialOwnerProfile(I)I
-PLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle;
-PLcom/android/server/pm/UserManagerService;->getProfileIdsLU(IZ)Landroid/util/IntArray;
-PLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List;
-PLcom/android/server/pm/UserManagerService;->getProfilesLU(IZZ)Ljava/util/List;
-PLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I
PLcom/android/server/pm/UserManagerService;->getUserAccount(I)Ljava/lang/String;
PLcom/android/server/pm/UserManagerService;->getUserDataNoChecks(I)Lcom/android/server/pm/UserManagerService$UserData;
-PLcom/android/server/pm/UserManagerService;->getUserHandle(I)I
PLcom/android/server/pm/UserManagerService;->getUserIcon(I)Landroid/os/ParcelFileDescriptor;
PLcom/android/server/pm/UserManagerService;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List;
-PLcom/android/server/pm/UserManagerService;->getUserRestrictions(I)Landroid/os/Bundle;
-PLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I
PLcom/android/server/pm/UserManagerService;->hasBaseUserRestriction(Ljava/lang/String;I)Z
-PLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z
PLcom/android/server/pm/UserManagerService;->isDemoUser(I)Z
PLcom/android/server/pm/UserManagerService;->isManagedProfile(I)Z
-PLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z
PLcom/android/server/pm/UserManagerService;->isQuietModeEnabled(I)Z
PLcom/android/server/pm/UserManagerService;->isRestricted()Z
-PLcom/android/server/pm/UserManagerService;->isSameProfileGroup(II)Z
-PLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z
-PLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z
-PLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z
PLcom/android/server/pm/UserManagerService;->onBeforeUnlockUser(I)V
PLcom/android/server/pm/UserManagerService;->onUserLoggedIn(I)V
-PLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/pm/UserManagerService;->propagateUserRestrictionsLR(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-PLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Landroid/util/AtomicFile;)Landroid/os/Bundle;
-PLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Ljava/lang/String;I)Landroid/os/Bundle;
PLcom/android/server/pm/UserManagerService;->reconcileUsers(Ljava/lang/String;)V
PLcom/android/server/pm/UserManagerService;->scheduleWriteUser(Lcom/android/server/pm/UserManagerService$UserData;)V
PLcom/android/server/pm/UserManagerService;->setDevicePolicyUserRestrictionsInner(ILandroid/os/Bundle;ZI)V
@@ -11269,9 +12987,7 @@ PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/
PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;Ljava/io/OutputStream;)V
PLcom/android/server/pm/UserRestrictionsUtils;->applyUserRestrictions(Landroid/content/Context;ILandroid/os/Bundle;Landroid/os/Bundle;)V
PLcom/android/server/pm/UserRestrictionsUtils;->areEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z
-PLcom/android/server/pm/UserRestrictionsUtils;->clone(Landroid/os/Bundle;)Landroid/os/Bundle;
PLcom/android/server/pm/UserRestrictionsUtils;->isEmpty(Landroid/os/Bundle;)Z
-PLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z
PLcom/android/server/pm/UserRestrictionsUtils;->mergeAll(Landroid/util/SparseArray;)Landroid/os/Bundle;
PLcom/android/server/pm/UserRestrictionsUtils;->nonNull(Landroid/os/Bundle;)Landroid/os/Bundle;
PLcom/android/server/pm/UserRestrictionsUtils;->restrictionsChanged(Landroid/os/Bundle;Landroid/os/Bundle;[Ljava/lang/String;)Z
@@ -11282,82 +12998,84 @@ PLcom/android/server/pm/dex/DexManager$DexSearchResult;->-get1(Lcom/android/serv
PLcom/android/server/pm/dex/DexManager$DexSearchResult;-><init>(Lcom/android/server/pm/dex/DexManager;Ljava/lang/String;I)V
PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->-get0(Lcom/android/server/pm/dex/DexManager$PackageCodeLocations;)Ljava/lang/String;
PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Landroid/content/pm/ApplicationInfo;I)V
-PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
-PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->mergeAppDataDirs(Ljava/lang/String;I)V
-PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->updateCodeLocation(Ljava/lang/String;[Ljava/lang/String;)V
PLcom/android/server/pm/dex/DexManager;->-get0()I
PLcom/android/server/pm/dex/DexManager;->-get1()I
-PLcom/android/server/pm/dex/DexManager;->-wrap0(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V
-PLcom/android/server/pm/dex/DexManager;->cachePackageInfo(Landroid/content/pm/PackageInfo;I)V
-PLcom/android/server/pm/dex/DexManager;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
-PLcom/android/server/pm/dex/DexManager;->isUsedByOtherApps(Ljava/lang/String;)Z
PLcom/android/server/pm/dex/DexManager;->load(Ljava/util/Map;)V
-PLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V
-PLcom/android/server/pm/dex/DexManager;->notifyDexLoad(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/lang/String;I)V
-PLcom/android/server/pm/dex/DexManager;->notifyDexLoadInternal(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/lang/String;I)V
-PLcom/android/server/pm/dex/DexManager;->notifyPackageInstalled(Landroid/content/pm/PackageInfo;I)V
-PLcom/android/server/pm/dex/DexManager;->putIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/dex/DexManager;->notifyDexLoad(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;Ljava/lang/String;I)V
+PLcom/android/server/pm/dex/DexManager;->notifyPackageUpdated(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/pm/dex/DexoptOptions;->getCompilerFilter()Ljava/lang/String;
+PLcom/android/server/pm/dex/DexoptOptions;->getPackageName()Ljava/lang/String;
+PLcom/android/server/pm/dex/DexoptOptions;->getSplitName()Ljava/lang/String;
+PLcom/android/server/pm/dex/DexoptOptions;->isBootComplete()Z
+PLcom/android/server/pm/dex/DexoptOptions;->isCheckForProfileUpdates()Z
+PLcom/android/server/pm/dex/DexoptOptions;->isDexoptAsSharedLibrary()Z
+PLcom/android/server/pm/dex/DexoptOptions;->isDowngrade()Z
+PLcom/android/server/pm/dex/DexoptOptions;->isForce()Z
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get0(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z
PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get1(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Ljava/util/Set;
-PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get2(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)I
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get2(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Ljava/util/Set;
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get3(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)I
PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-wrap0(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z
-PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)V
-PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(ZI)V
-PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(ZILjava/lang/String;)V
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(ZILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getClassLoaderContext()Ljava/lang/String;
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getLoaderIsas()Ljava/util/Set;
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getLoadingPackages()Ljava/util/Set;
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->isUsedByOtherApps()Z
PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->merge(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z
PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Ljava/util/Map;
-PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get1(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Z
-PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-set0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Z)Z
-PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-wrap0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Z)Z
-PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>()V
-PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V
-PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isUsedByOtherApps()Z
-PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->merge(Z)Z
-PLcom/android/server/pm/dex/PackageDexUsage;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
+PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get1(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Ljava/util/Map;
+PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get2(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Z
+PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-wrap0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->clearCodePathUsedByOtherApps()Z
+PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->getDexUseInfoMap()Ljava/util/Map;
+PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->getLoadingPackages(Ljava/lang/String;)Ljava/util/Set;
+PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isAnyCodePathUsedByOtherApps()Z
+PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->mergeCodePathUsedByOtherApps(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/pm/dex/PackageDexUsage;->clearUsedByOtherApps(Ljava/lang/String;)Z
+PLcom/android/server/pm/dex/PackageDexUsage;->clonePackageUseInfoMap()Ljava/util/Map;
+PLcom/android/server/pm/dex/PackageDexUsage;->isSupportedVersion(I)Z
+PLcom/android/server/pm/dex/PackageDexUsage;->maybeAddLoadingPackage(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)Z
+PLcom/android/server/pm/dex/PackageDexUsage;->maybeReadClassLoaderContext(Ljava/io/BufferedReader;I)Ljava/lang/String;
+PLcom/android/server/pm/dex/PackageDexUsage;->maybeReadLoadingPackages(Ljava/io/BufferedReader;I)Ljava/util/Set;
PLcom/android/server/pm/dex/PackageDexUsage;->maybeWriteAsync()V
PLcom/android/server/pm/dex/PackageDexUsage;->read()V
-PLcom/android/server/pm/dex/PackageDexUsage;->read(Ljava/io/Reader;)V
PLcom/android/server/pm/dex/PackageDexUsage;->readBoolean(Ljava/lang/String;)Z
PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Object;)V
PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Void;)V
-PLcom/android/server/pm/dex/PackageDexUsage;->record(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ZZ)Z
-PLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/Map;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->writeBoolean(Z)Ljava/lang/String;
+PLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Object;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Void;)V
+PLcom/android/server/policy/-$Lambda$pV_TcBBXJOcgD8CpVRVZuDc_ff8;-><init>(BLjava/lang/Object;)V
PLcom/android/server/policy/AccessibilityShortcutController$1;-><init>(Lcom/android/server/policy/AccessibilityShortcutController;Landroid/os/Handler;)V
PLcom/android/server/policy/AccessibilityShortcutController$FrameworkObjectProvider;-><init>()V
PLcom/android/server/policy/AccessibilityShortcutController;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
PLcom/android/server/policy/AccessibilityShortcutController;->getTargetServiceComponentNameString(Landroid/content/Context;I)Ljava/lang/String;
-PLcom/android/server/policy/AccessibilityShortcutController;->isAccessibilityShortcutAvailable(Z)Z
PLcom/android/server/policy/AccessibilityShortcutController;->onSettingsChanged()V
PLcom/android/server/policy/AccessibilityShortcutController;->setCurrentUser(I)V
PLcom/android/server/policy/BarController$1;-><init>(Lcom/android/server/policy/BarController;I)V
PLcom/android/server/policy/BarController$1;->run()V
PLcom/android/server/policy/BarController$BarHandler;-><init>(Lcom/android/server/policy/BarController;)V
PLcom/android/server/policy/BarController$BarHandler;-><init>(Lcom/android/server/policy/BarController;Lcom/android/server/policy/BarController$BarHandler;)V
+PLcom/android/server/policy/BarController$BarHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/policy/BarController;->-get0(Lcom/android/server/policy/BarController;)I
+PLcom/android/server/policy/BarController;->-get1(Lcom/android/server/policy/BarController;)Lcom/android/server/policy/BarController$OnBarVisibilityChangedListener;
PLcom/android/server/policy/BarController;-><init>(Ljava/lang/String;IIIIII)V
-PLcom/android/server/policy/BarController;->adjustSystemUiVisibilityLw(II)V
-PLcom/android/server/policy/BarController;->checkHiddenLw()Z
PLcom/android/server/policy/BarController;->checkShowTransientBarLw()Z
-PLcom/android/server/policy/BarController;->computeStateLw(ZZLandroid/view/WindowManagerPolicy$WindowState;Z)I
-PLcom/android/server/policy/BarController;->getStatusBarInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
-PLcom/android/server/policy/BarController;->setOnBarVisibilityChangedListener(Lcom/android/server/policy/BarController$OnBarVisibilityChangedListener;)V
-PLcom/android/server/policy/BarController;->setShowTransparent(Z)V
+PLcom/android/server/policy/BarController;->setOnBarVisibilityChangedListener(Lcom/android/server/policy/BarController$OnBarVisibilityChangedListener;Z)V
PLcom/android/server/policy/BarController;->setWindow(Landroid/view/WindowManagerPolicy$WindowState;)V
-PLcom/android/server/policy/BarController;->skipAnimation()Z
-PLcom/android/server/policy/BarController;->updateStateLw(I)Z
-PLcom/android/server/policy/BarController;->wasRecentlyTranslucent()Z
PLcom/android/server/policy/GlobalKeyManager;-><init>(Landroid/content/Context;)V
-PLcom/android/server/policy/GlobalKeyManager;->handleGlobalKey(Landroid/content/Context;ILandroid/view/KeyEvent;)Z
PLcom/android/server/policy/GlobalKeyManager;->loadGlobalKeys(Landroid/content/Context;)V
-PLcom/android/server/policy/GlobalKeyManager;->shouldHandleGlobalKey(ILandroid/view/KeyEvent;)Z
PLcom/android/server/policy/IconUtilities;-><init>(Landroid/content/Context;)V
PLcom/android/server/policy/ImmersiveModeConfirmation$1;-><init>(Lcom/android/server/policy/ImmersiveModeConfirmation;)V
PLcom/android/server/policy/ImmersiveModeConfirmation$2;-><init>(Lcom/android/server/policy/ImmersiveModeConfirmation;)V
PLcom/android/server/policy/ImmersiveModeConfirmation$H;-><init>(Lcom/android/server/policy/ImmersiveModeConfirmation;)V
PLcom/android/server/policy/ImmersiveModeConfirmation$H;-><init>(Lcom/android/server/policy/ImmersiveModeConfirmation;Lcom/android/server/policy/ImmersiveModeConfirmation$H;)V
+PLcom/android/server/policy/ImmersiveModeConfirmation$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/policy/ImmersiveModeConfirmation;->-wrap0(Lcom/android/server/policy/ImmersiveModeConfirmation;)V
PLcom/android/server/policy/ImmersiveModeConfirmation;-><init>(Landroid/content/Context;)V
PLcom/android/server/policy/ImmersiveModeConfirmation;->getNavBarExitDuration()J
-PLcom/android/server/policy/ImmersiveModeConfirmation;->getWindowToken()Landroid/os/IBinder;
+PLcom/android/server/policy/ImmersiveModeConfirmation;->handleHide()V
+PLcom/android/server/policy/ImmersiveModeConfirmation;->immersiveModeChangedLw(Ljava/lang/String;ZZZ)V
PLcom/android/server/policy/ImmersiveModeConfirmation;->loadSetting(I)V
PLcom/android/server/policy/ImmersiveModeConfirmation;->systemReady()V
PLcom/android/server/policy/LogDecelerateInterpolator;-><init>(II)V
@@ -11369,11 +13087,9 @@ PLcom/android/server/policy/PhoneWindowManager$12;-><init>(Lcom/android/server/p
PLcom/android/server/policy/PhoneWindowManager$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/policy/PhoneWindowManager$13;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$14;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
-PLcom/android/server/policy/PhoneWindowManager$14;->onDown()V
PLcom/android/server/policy/PhoneWindowManager$14;->onFling(I)V
PLcom/android/server/policy/PhoneWindowManager$14;->onSwipeFromLeft()V
PLcom/android/server/policy/PhoneWindowManager$14;->onSwipeFromTop()V
-PLcom/android/server/policy/PhoneWindowManager$14;->onUpOrCancel()V
PLcom/android/server/policy/PhoneWindowManager$15;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$15;->onAppTransitionCancelledLocked(I)V
PLcom/android/server/policy/PhoneWindowManager$15;->onAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I
@@ -11383,13 +13099,12 @@ PLcom/android/server/policy/PhoneWindowManager$19;-><init>(Lcom/android/server/p
PLcom/android/server/policy/PhoneWindowManager$19;->run()V
PLcom/android/server/policy/PhoneWindowManager$1;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$1;->run()V
-PLcom/android/server/policy/PhoneWindowManager$21;-><init>(Lcom/android/server/policy/PhoneWindowManager;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/WindowManagerPolicy$WindowState;Z)V
-PLcom/android/server/policy/PhoneWindowManager$21;->run()V
PLcom/android/server/policy/PhoneWindowManager$2;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$2;->onDrawn()V
PLcom/android/server/policy/PhoneWindowManager$3;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$4;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$5;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$5;->onBarVisibilityChanged(Z)V
PLcom/android/server/policy/PhoneWindowManager$6;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$7;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager$8;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
@@ -11411,25 +13126,16 @@ PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->onChange(Z)V
PLcom/android/server/policy/PhoneWindowManager;->-wrap12(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager;->-wrap14(Lcom/android/server/policy/PhoneWindowManager;)V
PLcom/android/server/policy/PhoneWindowManager;->-wrap20(Lcom/android/server/policy/PhoneWindowManager;Landroid/view/WindowManagerPolicy$WindowState;)V
+PLcom/android/server/policy/PhoneWindowManager;->-wrap21(Lcom/android/server/policy/PhoneWindowManager;I)V
PLcom/android/server/policy/PhoneWindowManager;->-wrap3(Lcom/android/server/policy/PhoneWindowManager;ILandroid/view/animation/Animation;)I
PLcom/android/server/policy/PhoneWindowManager;->-wrap4(Lcom/android/server/policy/PhoneWindowManager;)I
PLcom/android/server/policy/PhoneWindowManager;-><init>()V
-PLcom/android/server/policy/PhoneWindowManager;->addSplashScreen(Landroid/os/IBinder;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;I)Landroid/view/WindowManagerPolicy$StartingSurface;
PLcom/android/server/policy/PhoneWindowManager;->addSplashscreenContent(Lcom/android/internal/policy/PhoneWindow;Landroid/content/Context;)V
-PLcom/android/server/policy/PhoneWindowManager;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V
-PLcom/android/server/policy/PhoneWindowManager;->adjustSystemUiVisibilityLw(I)I
-PLcom/android/server/policy/PhoneWindowManager;->adjustWindowParamsLw(Landroid/view/WindowManager$LayoutParams;)V
PLcom/android/server/policy/PhoneWindowManager;->allowAppAnimationsLw()Z
PLcom/android/server/policy/PhoneWindowManager;->applyLidSwitchState()V
-PLcom/android/server/policy/PhoneWindowManager;->applyStableConstraints(IILandroid/graphics/Rect;)V
-PLcom/android/server/policy/PhoneWindowManager;->areTranslucentBarsAllowed()Z
PLcom/android/server/policy/PhoneWindowManager;->awakenDreams()V
-PLcom/android/server/policy/PhoneWindowManager;->beginPostLayoutPolicyLw(II)V
PLcom/android/server/policy/PhoneWindowManager;->bindKeyguard()V
-PLcom/android/server/policy/PhoneWindowManager;->calculateRelevantTaskInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;II)V
PLcom/android/server/policy/PhoneWindowManager;->canDismissBootAnimation()Z
-PLcom/android/server/policy/PhoneWindowManager;->canHideNavigationBar()Z
-PLcom/android/server/policy/PhoneWindowManager;->canReceiveInput(Landroid/view/WindowManagerPolicy$WindowState;)Z
PLcom/android/server/policy/PhoneWindowManager;->cancelPendingAccessibilityShortcutAction()V
PLcom/android/server/policy/PhoneWindowManager;->cancelPendingBackKeyAction()V
PLcom/android/server/policy/PhoneWindowManager;->cancelPendingPowerKeyAction()V
@@ -11437,38 +13143,23 @@ PLcom/android/server/policy/PhoneWindowManager;->cancelPendingScreenshotChordAct
PLcom/android/server/policy/PhoneWindowManager;->cancelPreloadRecentApps()V
PLcom/android/server/policy/PhoneWindowManager;->checkAddPermission(Landroid/view/WindowManager$LayoutParams;[I)I
PLcom/android/server/policy/PhoneWindowManager;->checkShowToOwnerOnly(Landroid/view/WindowManager$LayoutParams;)Z
-PLcom/android/server/policy/PhoneWindowManager;->configureNavBarOpacity(IZZZ)I
PLcom/android/server/policy/PhoneWindowManager;->createHiddenByKeyguardExit(ZZ)Landroid/view/animation/Animation;
PLcom/android/server/policy/PhoneWindowManager;->createHomeDockIntent()Landroid/content/Intent;
PLcom/android/server/policy/PhoneWindowManager;->dispatchUnhandledKey(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
-PLcom/android/server/policy/PhoneWindowManager;->drawsSystemBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z
+PLcom/android/server/policy/PhoneWindowManager;->enableKeyguard(Z)V
PLcom/android/server/policy/PhoneWindowManager;->enableScreenAfterBoot()V
PLcom/android/server/policy/PhoneWindowManager;->finishKeyguardDrawn()V
-PLcom/android/server/policy/PhoneWindowManager;->finishLayoutLw()V
PLcom/android/server/policy/PhoneWindowManager;->finishScreenTurningOn()V
PLcom/android/server/policy/PhoneWindowManager;->finishWindowsDrawn()V
-PLcom/android/server/policy/PhoneWindowManager;->focusChangedLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I
-PLcom/android/server/policy/PhoneWindowManager;->forcesDrawStatusBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z
PLcom/android/server/policy/PhoneWindowManager;->getAudioService()Landroid/media/IAudioService;
-PLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayHeight(IIIII)I
-PLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayWidth(IIIII)I
-PLcom/android/server/policy/PhoneWindowManager;->getContentRectLw(Landroid/graphics/Rect;)V
PLcom/android/server/policy/PhoneWindowManager;->getDisplayContext(Landroid/content/Context;I)Landroid/content/Context;
PLcom/android/server/policy/PhoneWindowManager;->getDreamManager()Landroid/service/dreams/IDreamManager;
PLcom/android/server/policy/PhoneWindowManager;->getHdmiControl()Lcom/android/server/policy/PhoneWindowManager$HdmiControl;
-PLcom/android/server/policy/PhoneWindowManager;->getInputMethodWindowVisibleHeightLw()I
-PLcom/android/server/policy/PhoneWindowManager;->getInsetHintLw(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
PLcom/android/server/policy/PhoneWindowManager;->getKeyguardDrawnTimeout()J
PLcom/android/server/policy/PhoneWindowManager;->getLongIntArray(Landroid/content/res/Resources;I)[J
-PLcom/android/server/policy/PhoneWindowManager;->getNavigationBarHeight(II)I
-PLcom/android/server/policy/PhoneWindowManager;->getNavigationBarWidth(II)I
-PLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayHeight(IIIII)I
-PLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayWidth(IIIII)I
-PLcom/android/server/policy/PhoneWindowManager;->getNonDecorInsetsLw(IIILandroid/graphics/Rect;)V
-PLcom/android/server/policy/PhoneWindowManager;->getStableInsetsLw(IIILandroid/graphics/Rect;)V
-PLcom/android/server/policy/PhoneWindowManager;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
-PLcom/android/server/policy/PhoneWindowManager;->getSystemDecorLayerLw()I
+PLcom/android/server/policy/PhoneWindowManager;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService;
PLcom/android/server/policy/PhoneWindowManager;->getTelecommService()Landroid/telecom/TelecomManager;
+PLcom/android/server/policy/PhoneWindowManager;->getUserRotationMode()I
PLcom/android/server/policy/PhoneWindowManager;->getVibrationEffect(I)Landroid/os/VibrationEffect;
PLcom/android/server/policy/PhoneWindowManager;->handleShortPressOnHome()V
PLcom/android/server/policy/PhoneWindowManager;->handleStartTransitionForKeyguardLw(ILandroid/view/animation/Animation;)I
@@ -11480,39 +13171,26 @@ PLcom/android/server/policy/PhoneWindowManager;->initializeHdmiState()V
PLcom/android/server/policy/PhoneWindowManager;->interceptAccessibilityShortcutChord()V
PLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyDown()V
PLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyUp(Landroid/view/KeyEvent;)Z
-PLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J
-PLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
PLcom/android/server/policy/PhoneWindowManager;->interceptScreenshotChord()V
PLcom/android/server/policy/PhoneWindowManager;->isAnyPortrait(I)Z
PLcom/android/server/policy/PhoneWindowManager;->isDefaultOrientationForced()Z
-PLcom/android/server/policy/PhoneWindowManager;->isFullscreen(Landroid/view/WindowManager$LayoutParams;)Z
-PLcom/android/server/policy/PhoneWindowManager;->isImmersiveMode(I)Z
PLcom/android/server/policy/PhoneWindowManager;->isKeyguardDrawnLw()Z
PLcom/android/server/policy/PhoneWindowManager;->isKeyguardHostWindow(Landroid/view/WindowManager$LayoutParams;)Z
PLcom/android/server/policy/PhoneWindowManager;->isKeyguardOccluded()Z
PLcom/android/server/policy/PhoneWindowManager;->isKeyguardSecure(I)Z
-PLcom/android/server/policy/PhoneWindowManager;->isNavBarForcedShownLw(Landroid/view/WindowManagerPolicy$WindowState;)Z
-PLcom/android/server/policy/PhoneWindowManager;->isShowingDreamLw()Z
+PLcom/android/server/policy/PhoneWindowManager;->isLandscapeOrSeascape(I)Z
+PLcom/android/server/policy/PhoneWindowManager;->isNavBarEmpty(I)Z
PLcom/android/server/policy/PhoneWindowManager;->isUserSetupComplete()Z
-PLcom/android/server/policy/PhoneWindowManager;->isValidGlobalKey(I)Z
PLcom/android/server/policy/PhoneWindowManager;->keepScreenOnStartedLw()V
PLcom/android/server/policy/PhoneWindowManager;->keepScreenOnStoppedLw()V
PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey()V
PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey(ZZ)V
-PLcom/android/server/policy/PhoneWindowManager;->layoutNavigationBar(IIIIIIILandroid/graphics/Rect;ZZZZ)Z
-PLcom/android/server/policy/PhoneWindowManager;->layoutStatusBar(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;IZ)Z
-PLcom/android/server/policy/PhoneWindowManager;->layoutWallpaper(Landroid/view/WindowManagerPolicy$WindowState;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/policy/PhoneWindowManager;->navigationBarPosition(III)I
PLcom/android/server/policy/PhoneWindowManager;->needSensorRunningLp()Z
-PLcom/android/server/policy/PhoneWindowManager;->offsetInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V
PLcom/android/server/policy/PhoneWindowManager;->onConfigurationChanged()V
PLcom/android/server/policy/PhoneWindowManager;->onKeyguardOccludedChangedLw(Z)V
PLcom/android/server/policy/PhoneWindowManager;->onSystemUiStarted()V
-PLcom/android/server/policy/PhoneWindowManager;->performHapticFeedbackLw(Landroid/view/WindowManagerPolicy$WindowState;IZ)Z
PLcom/android/server/policy/PhoneWindowManager;->prepareAddWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I
PLcom/android/server/policy/PhoneWindowManager;->readCameraLensCoverState()V
-PLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V
-PLcom/android/server/policy/PhoneWindowManager;->readLidState()V
PLcom/android/server/policy/PhoneWindowManager;->readRotation(I)I
PLcom/android/server/policy/PhoneWindowManager;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V
PLcom/android/server/policy/PhoneWindowManager;->removeWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V
@@ -11522,29 +13200,28 @@ PLcom/android/server/policy/PhoneWindowManager;->rotationForOrientationLw(II)I
PLcom/android/server/policy/PhoneWindowManager;->rotationHasCompatibleMetricsLw(II)Z
PLcom/android/server/policy/PhoneWindowManager;->screenTurnedOn()V
PLcom/android/server/policy/PhoneWindowManager;->screenTurningOn(Landroid/view/WindowManagerPolicy$ScreenOnListener;)V
-PLcom/android/server/policy/PhoneWindowManager;->selectAnimationLw(Landroid/view/WindowManagerPolicy$WindowState;I)I
+PLcom/android/server/policy/PhoneWindowManager;->selectRotationAnimationLw([I)V
PLcom/android/server/policy/PhoneWindowManager;->sendCloseSystemWindows(Ljava/lang/String;)V
+PLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBar(I)V
+PLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBarAsync(I)V
PLcom/android/server/policy/PhoneWindowManager;->setAttachedWindowFrames(Landroid/view/WindowManagerPolicy$WindowState;IILandroid/view/WindowManagerPolicy$WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
PLcom/android/server/policy/PhoneWindowManager;->setCurrentOrientationLw(I)V
PLcom/android/server/policy/PhoneWindowManager;->setDismissImeOnBackKeyPressed(Z)V
PLcom/android/server/policy/PhoneWindowManager;->setDisplayOverscan(Landroid/view/Display;IIII)V
PLcom/android/server/policy/PhoneWindowManager;->setHdmiPlugged(Z)V
-PLcom/android/server/policy/PhoneWindowManager;->setInitialDisplaySize(Landroid/view/Display;III)V
PLcom/android/server/policy/PhoneWindowManager;->setKeyguardOccludedLw(ZZ)Z
PLcom/android/server/policy/PhoneWindowManager;->setLastInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V
-PLcom/android/server/policy/PhoneWindowManager;->setRecentsVisibilityLw(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->setRotationLw(I)V
PLcom/android/server/policy/PhoneWindowManager;->setSafeMode(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->setUserRotationMode(II)V
PLcom/android/server/policy/PhoneWindowManager;->shouldEnableWakeGestureLp()Z
PLcom/android/server/policy/PhoneWindowManager;->shouldRotateSeamlessly(II)Z
-PLcom/android/server/policy/PhoneWindowManager;->shouldUseOutsets(Landroid/view/WindowManager$LayoutParams;I)Z
PLcom/android/server/policy/PhoneWindowManager;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
PLcom/android/server/policy/PhoneWindowManager;->startDockOrHome(ZZ)V
PLcom/android/server/policy/PhoneWindowManager;->startKeyguardExitAnimation(JJ)V
PLcom/android/server/policy/PhoneWindowManager;->startedWakingUp()V
PLcom/android/server/policy/PhoneWindowManager;->systemBooted()V
PLcom/android/server/policy/PhoneWindowManager;->systemReady()V
-PLcom/android/server/policy/PhoneWindowManager;->updateLightNavigationBarLw(ILandroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I
-PLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V
PLcom/android/server/policy/PhoneWindowManager;->updateOrientationListenerLp()V
PLcom/android/server/policy/PhoneWindowManager;->updateRotation(Z)V
PLcom/android/server/policy/PhoneWindowManager;->updateRotation(ZZ)V
@@ -11552,9 +13229,9 @@ PLcom/android/server/policy/PhoneWindowManager;->updateScreenOffSleepToken(Z)V
PLcom/android/server/policy/PhoneWindowManager;->updateSettings()V
PLcom/android/server/policy/PhoneWindowManager;->updateUiMode()V
PLcom/android/server/policy/PhoneWindowManager;->updateWakeGestureListenerLp()V
-PLcom/android/server/policy/PhoneWindowManager;->userActivity()V
PLcom/android/server/policy/PhoneWindowManager;->validateRotationAnimationLw(IIZ)Z
PLcom/android/server/policy/PolicyControl;->adjustClearableFlags(Landroid/view/WindowManagerPolicy$WindowState;I)I
+PLcom/android/server/policy/PolicyControl;->disableImmersiveConfirmation(Ljava/lang/String;)Z
PLcom/android/server/policy/PolicyControl;->reloadFromSetting(Landroid/content/Context;)V
PLcom/android/server/policy/PolicyControl;->setFilters(Ljava/lang/String;)V
PLcom/android/server/policy/ShortcutManager$ShortcutInfo;-><init>(Ljava/lang/String;Landroid/content/Intent;)V
@@ -11562,40 +13239,22 @@ PLcom/android/server/policy/ShortcutManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/policy/ShortcutManager;->loadShortcuts()V
PLcom/android/server/policy/SplashScreenSurface;-><init>(Landroid/view/View;Landroid/os/IBinder;)V
PLcom/android/server/policy/SplashScreenSurface;->remove()V
-PLcom/android/server/policy/StatusBarController$1$1;-><init>(Lcom/android/server/policy/StatusBarController$1;)V
-PLcom/android/server/policy/StatusBarController$1$1;->run()V
PLcom/android/server/policy/StatusBarController$1$2;-><init>(Lcom/android/server/policy/StatusBarController$1;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)V
-PLcom/android/server/policy/StatusBarController$1$2;->run()V
PLcom/android/server/policy/StatusBarController$1$3;-><init>(Lcom/android/server/policy/StatusBarController$1;)V
PLcom/android/server/policy/StatusBarController$1$3;->run()V
-PLcom/android/server/policy/StatusBarController$1$4;-><init>(Lcom/android/server/policy/StatusBarController$1;)V
-PLcom/android/server/policy/StatusBarController$1$4;->run()V
PLcom/android/server/policy/StatusBarController$1;-><init>(Lcom/android/server/policy/StatusBarController;)V
PLcom/android/server/policy/StatusBarController$1;->onAppTransitionCancelledLocked(I)V
-PLcom/android/server/policy/StatusBarController$1;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
-PLcom/android/server/policy/StatusBarController$1;->onAppTransitionPendingLocked()V
PLcom/android/server/policy/StatusBarController$1;->onAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I
PLcom/android/server/policy/StatusBarController;->-wrap0(Landroid/view/animation/Animation;Landroid/view/animation/Animation;)J
PLcom/android/server/policy/StatusBarController;-><init>()V
-PLcom/android/server/policy/StatusBarController;->calculateStatusBarTransitionStartTime(Landroid/view/animation/Animation;Landroid/view/animation/Animation;)J
-PLcom/android/server/policy/StatusBarController;->findAlmostThereFraction(Landroid/view/animation/Interpolator;)F
-PLcom/android/server/policy/StatusBarController;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation;
PLcom/android/server/policy/StatusBarController;->getAppTransitionListener()Landroid/view/WindowManagerInternal$AppTransitionListener;
-PLcom/android/server/policy/StatusBarController;->skipAnimation()Z
PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;-><init>(Lcom/android/server/policy/SystemGesturesPointerEventListener;)V
PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;-><init>(Lcom/android/server/policy/SystemGesturesPointerEventListener;Lcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;)V
-PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z
-PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onSingleTapUp(Landroid/view/MotionEvent;)Z
PLcom/android/server/policy/SystemGesturesPointerEventListener;->-get0(Lcom/android/server/policy/SystemGesturesPointerEventListener;)Lcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;
PLcom/android/server/policy/SystemGesturesPointerEventListener;->-get1(Lcom/android/server/policy/SystemGesturesPointerEventListener;)J
-PLcom/android/server/policy/SystemGesturesPointerEventListener;->-get2(Lcom/android/server/policy/SystemGesturesPointerEventListener;)Landroid/widget/OverScroller;
PLcom/android/server/policy/SystemGesturesPointerEventListener;->-set0(Lcom/android/server/policy/SystemGesturesPointerEventListener;J)J
PLcom/android/server/policy/SystemGesturesPointerEventListener;-><init>(Landroid/content/Context;Lcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;)V
-PLcom/android/server/policy/SystemGesturesPointerEventListener;->captureDown(Landroid/view/MotionEvent;I)V
PLcom/android/server/policy/SystemGesturesPointerEventListener;->checkNull(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/policy/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I
-PLcom/android/server/policy/SystemGesturesPointerEventListener;->findIndex(I)I
-PLcom/android/server/policy/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
PLcom/android/server/policy/SystemGesturesPointerEventListener;->systemReady()V
PLcom/android/server/policy/WakeGestureListener$1;-><init>(Lcom/android/server/policy/WakeGestureListener;)V
PLcom/android/server/policy/WakeGestureListener$2;-><init>(Lcom/android/server/policy/WakeGestureListener;)V
@@ -11620,8 +13279,6 @@ PLcom/android/server/policy/WindowOrientationListener;-><init>(Landroid/content/
PLcom/android/server/policy/WindowOrientationListener;->canDetectOrientation()Z
PLcom/android/server/policy/WindowOrientationListener;->enable(Z)V
PLcom/android/server/policy/WindowOrientationListener;->getProposedRotation()I
-PLcom/android/server/policy/WindowOrientationListener;->onTouchEnd()V
-PLcom/android/server/policy/WindowOrientationListener;->onTouchStart()V
PLcom/android/server/policy/WindowOrientationListener;->setCurrentRotation(I)V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
@@ -11643,6 +13300,7 @@ PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurnedOn(
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurningOn(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onStartedWakingUp()V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onSystemReady()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setKeyguardEnabled(Z)V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setOccluded(ZZ)V
PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->startKeyguardExitAnimation(JJ)V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
@@ -11652,12 +13310,11 @@ PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOn()
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedWakingUp()V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onSystemReady()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setKeyguardEnabled(Z)V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setOccluded(ZZ)V
PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->startKeyguardExitAnimation(JJ)V
PLcom/android/server/policy/keyguard/KeyguardStateMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
-PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isInputRestricted()Z
PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isSecure(I)Z
-PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z
PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onHasLockscreenWallpaperChanged(Z)V
PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onInputRestrictedStateChanged(Z)V
PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onShowingStateChanged(Z)V
@@ -11670,30 +13327,18 @@ PLcom/android/server/power/Notifier$1;-><init>(Lcom/android/server/power/Notifie
PLcom/android/server/power/Notifier$2;-><init>(Lcom/android/server/power/Notifier;)V
PLcom/android/server/power/Notifier$3;-><init>(Lcom/android/server/power/Notifier;)V
PLcom/android/server/power/Notifier$NotifierHandler;-><init>(Lcom/android/server/power/Notifier;Landroid/os/Looper;)V
-PLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/power/Notifier;->-wrap3(Lcom/android/server/power/Notifier;)V
PLcom/android/server/power/Notifier;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/internal/app/IAppOpsService;Lcom/android/server/power/SuspendBlocker;Landroid/view/WindowManagerPolicy;)V
-PLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I
PLcom/android/server/power/Notifier;->onLongPartialWakeLockFinish(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
PLcom/android/server/power/Notifier;->onLongPartialWakeLockStart(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
-PLcom/android/server/power/Notifier;->onUserActivity(II)V
-PLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
-PLcom/android/server/power/Notifier;->sendUserActivity()V
PLcom/android/server/power/PowerManagerService$1;->acquireSuspendBlocker()V
-PLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(I)V
PLcom/android/server/power/PowerManagerService$1;->onStateChanged()V
PLcom/android/server/power/PowerManagerService$1;->releaseSuspendBlocker()V
PLcom/android/server/power/PowerManagerService$BatteryReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService$BatteryReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$BatteryReceiver;)V
-PLcom/android/server/power/PowerManagerService$BatteryReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/power/PowerManagerService$BinderService;->getLastShutdownReason()I
-PLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z
-PLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z
PLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z
-PLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z
PLcom/android/server/power/PowerManagerService$BinderService;->isWakeLockLevelSupported(I)Z
-PLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUids(Landroid/os/IBinder;[I)V
-PLcom/android/server/power/PowerManagerService$BinderService;->userActivity(JII)V
+PLcom/android/server/power/PowerManagerService$BinderService;->setStayOnSetting(I)V
PLcom/android/server/power/PowerManagerService$BinderService;->wakeUp(JLjava/lang/String;Ljava/lang/String;)V
PLcom/android/server/power/PowerManagerService$Constants;->start(Landroid/content/ContentResolver;)V
PLcom/android/server/power/PowerManagerService$Constants;->updateConstants()V
@@ -11701,109 +13346,51 @@ PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/androi
PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DockReceiver;)V
PLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DreamReceiver;)V
-PLcom/android/server/power/PowerManagerService$LocalService;->powerHint(II)V
PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleTempWhitelist([I)V
PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleWhitelist([I)V
PLcom/android/server/power/PowerManagerService$LocalService;->setMaximumScreenOffTimeoutFromDeviceAdmin(I)V
-PLcom/android/server/power/PowerManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(I)V
-PLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V
PLcom/android/server/power/PowerManagerService$LocalService;->uidActive(I)V
PLcom/android/server/power/PowerManagerService$LocalService;->uidGone(I)V
-PLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V
-PLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V
PLcom/android/server/power/PowerManagerService$SettingsObserver;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V
PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release()V
-PLcom/android/server/power/PowerManagerService$UidState;-><init>(I)V
PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$UserSwitchedReceiver;)V
PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;)V
-PLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;II)Z
-PLcom/android/server/power/PowerManagerService$WakeLock;->hasSameWorkSource(Landroid/os/WorkSource;)Z
-PLcom/android/server/power/PowerManagerService$WakeLock;->updateWorkSource(Landroid/os/WorkSource;)V
-PLcom/android/server/power/PowerManagerService;->-get12(Lcom/android/server/power/PowerManagerService;)Z
PLcom/android/server/power/PowerManagerService;->-get2(Lcom/android/server/power/PowerManagerService;)Z
PLcom/android/server/power/PowerManagerService;->-get3(Lcom/android/server/power/PowerManagerService;)Z
PLcom/android/server/power/PowerManagerService;->-get4(Lcom/android/server/power/PowerManagerService;)I
PLcom/android/server/power/PowerManagerService;->-get5(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/SuspendBlocker;
PLcom/android/server/power/PowerManagerService;->-set0(Lcom/android/server/power/PowerManagerService;I)I
-PLcom/android/server/power/PowerManagerService;->-wrap0(Landroid/os/WorkSource;)Landroid/os/WorkSource;
-PLcom/android/server/power/PowerManagerService;->-wrap1(Lcom/android/server/power/PowerManagerService;)Z
-PLcom/android/server/power/PowerManagerService;->-wrap13(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService;->-wrap14(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService;->-wrap16(Lcom/android/server/power/PowerManagerService;)V
PLcom/android/server/power/PowerManagerService;->-wrap17(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService;->-wrap2(Lcom/android/server/power/PowerManagerService;)Z
PLcom/android/server/power/PowerManagerService;->-wrap21(Ljava/lang/String;)V
-PLcom/android/server/power/PowerManagerService;->-wrap23(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V
PLcom/android/server/power/PowerManagerService;->-wrap27(Lcom/android/server/power/PowerManagerService;Z)V
-PLcom/android/server/power/PowerManagerService;->-wrap29(Lcom/android/server/power/PowerManagerService;I)V
-PLcom/android/server/power/PowerManagerService;->-wrap32(Lcom/android/server/power/PowerManagerService;J)V
PLcom/android/server/power/PowerManagerService;->-wrap35(Lcom/android/server/power/PowerManagerService;)V
-PLcom/android/server/power/PowerManagerService;->-wrap36(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
PLcom/android/server/power/PowerManagerService;->-wrap37(Lcom/android/server/power/PowerManagerService;JIII)V
PLcom/android/server/power/PowerManagerService;->-wrap38(Lcom/android/server/power/PowerManagerService;JLjava/lang/String;ILjava/lang/String;I)V
PLcom/android/server/power/PowerManagerService;->-wrap4(Lcom/android/server/power/PowerManagerService;I)Z
-PLcom/android/server/power/PowerManagerService;->-wrap7(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V
-PLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V
-PLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
-PLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V
-PLcom/android/server/power/PowerManagerService;->copyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource;
-PLcom/android/server/power/PowerManagerService;->enqueueNotifyLongMsgLocked(J)V
-PLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V
-PLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V
PLcom/android/server/power/PowerManagerService;->getCurrentBrightnessSettingLocked()I
-PLcom/android/server/power/PowerManagerService;->getDesiredScreenPolicyLocked()I
PLcom/android/server/power/PowerManagerService;->getLastShutdownReasonInternal(Ljava/io/File;)I
-PLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked()I
-PLcom/android/server/power/PowerManagerService;->handleBatteryStateChangedLocked()V
PLcom/android/server/power/PowerManagerService;->handleSettingsChangedLocked()V
PLcom/android/server/power/PowerManagerService;->handleUidStateChangeLocked()V
PLcom/android/server/power/PowerManagerService;->handleUserActivityTimeout()V
PLcom/android/server/power/PowerManagerService;->incrementBootCount()V
-PLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked()Z
-PLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z
-PLcom/android/server/power/PowerManagerService;->isInteractiveInternal()Z
PLcom/android/server/power/PowerManagerService;->isLightDeviceIdleModeInternal()Z
-PLcom/android/server/power/PowerManagerService;->isLowPowerModeInternal()Z
-PLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z
PLcom/android/server/power/PowerManagerService;->isScreenLock(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
-PLcom/android/server/power/PowerManagerService;->isValidAutoBrightnessAdjustment(F)Z
PLcom/android/server/power/PowerManagerService;->isWakeLockLevelSupportedInternal(I)Z
PLcom/android/server/power/PowerManagerService;->monitor()V
-PLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
-PLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
-PLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
PLcom/android/server/power/PowerManagerService;->notifyWakeLockLongStartedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
-PLcom/android/server/power/PowerManagerService;->notifyWakeLockReleasedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
PLcom/android/server/power/PowerManagerService;->readConfigurationLocked()V
PLcom/android/server/power/PowerManagerService;->setDeviceIdleTempWhitelistInternal([I)V
PLcom/android/server/power/PowerManagerService;->setDeviceIdleWhitelistInternal([I)V
PLcom/android/server/power/PowerManagerService;->setHalAutoSuspendModeLocked(Z)V
-PLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V
PLcom/android/server/power/PowerManagerService;->setMaximumScreenOffTimeoutFromDeviceAdminInternal(I)V
-PLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(I)V
-PLcom/android/server/power/PowerManagerService;->setUserActivityTimeoutOverrideFromWindowManagerInternal(J)V
-PLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
-PLcom/android/server/power/PowerManagerService;->shouldBoostScreenBrightness()Z
-PLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z
+PLcom/android/server/power/PowerManagerService;->setStayOnSettingInternal(I)V
PLcom/android/server/power/PowerManagerService;->shouldWakeUpWhenPluggedOrUnpluggedLocked(ZIZ)Z
-PLcom/android/server/power/PowerManagerService;->startUidChangesInternal()V
PLcom/android/server/power/PowerManagerService;->systemReady(Lcom/android/internal/app/IAppOpsService;)V
-PLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V
-PLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V
-PLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V
-PLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V
PLcom/android/server/power/PowerManagerService;->updateLowPowerModeLocked()V
-PLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V
PLcom/android/server/power/PowerManagerService;->updateSettingsLocked()V
-PLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V
-PLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V
PLcom/android/server/power/PowerManagerService;->updateWakeLockDisabledStatesLocked()V
-PLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
-PLcom/android/server/power/PowerManagerService;->userActivityFromNative(JII)V
-PLcom/android/server/power/PowerManagerService;->userActivityInternal(JIII)V
-PLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(JIII)Z
PLcom/android/server/power/PowerManagerService;->wakeUpInternal(JLjava/lang/String;ILjava/lang/String;I)V
PLcom/android/server/power/PowerManagerService;->wakeUpNoUpdateLocked(JLjava/lang/String;ILjava/lang/String;I)Z
PLcom/android/server/power/WirelessChargerDetector$1;-><init>(Lcom/android/server/power/WirelessChargerDetector;)V
@@ -11814,7 +13401,6 @@ PLcom/android/server/print/PrintManagerService$PrintManagerImpl$1;-><init>(Lcom/
PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;-><init>(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)V
PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hadPrintService(Lcom/android/server/print/UserState;Ljava/lang/String;)Z
PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hasPrintService(Ljava/lang/String;)Z
-PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageAdded(Ljava/lang/String;I)V
PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;-><init>(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;I)V
PLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;->run()V
@@ -11882,7 +13468,6 @@ PLcom/android/server/print/UserState;->-wrap3(Lcom/android/server/print/UserStat
PLcom/android/server/print/UserState;-><init>(Landroid/content/Context;ILjava/lang/Object;Z)V
PLcom/android/server/print/UserState;->addServiceLocked(Lcom/android/server/print/RemotePrintService;)V
PLcom/android/server/print/UserState;->getInstalledComponents()Ljava/util/ArrayList;
-PLcom/android/server/print/UserState;->getPrintServices(I)Ljava/util/List;
PLcom/android/server/print/UserState;->handleDispatchPrintServicesChanged()V
PLcom/android/server/print/UserState;->increasePriority()V
PLcom/android/server/print/UserState;->onConfigurationChangedLocked()V
@@ -11911,7 +13496,6 @@ PLcom/android/server/search/SearchManagerService$Lifecycle;->onUnlockUser(I)V
PLcom/android/server/search/SearchManagerService$MyPackageMonitor;-><init>(Lcom/android/server/search/SearchManagerService;)V
PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onSomePackagesChanged()V
-PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->updateSearchables()V
PLcom/android/server/search/SearchManagerService;->-get0(Lcom/android/server/search/SearchManagerService;)Landroid/content/Context;
PLcom/android/server/search/SearchManagerService;->-get1(Lcom/android/server/search/SearchManagerService;)Landroid/util/SparseArray;
PLcom/android/server/search/SearchManagerService;->-wrap1(Lcom/android/server/search/SearchManagerService;I)V
@@ -11922,15 +13506,15 @@ PLcom/android/server/search/Searchables$1;-><init>()V
PLcom/android/server/search/Searchables;-><init>(Landroid/content/Context;I)V
PLcom/android/server/search/Searchables;->findGlobalSearchActivities()Ljava/util/List;
PLcom/android/server/search/Searchables;->findGlobalSearchActivity(Ljava/util/List;)Landroid/content/ComponentName;
-PLcom/android/server/search/Searchables;->findWebSearchActivity(Landroid/content/ComponentName;)Landroid/content/ComponentName;
PLcom/android/server/search/Searchables;->getDefaultGlobalSearchProvider(Ljava/util/List;)Landroid/content/ComponentName;
PLcom/android/server/search/Searchables;->getGlobalSearchProviderSetting()Ljava/lang/String;
-PLcom/android/server/search/Searchables;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
-PLcom/android/server/search/Searchables;->updateSearchableList()V
PLcom/android/server/security/KeyAttestationApplicationIdProviderService;-><init>(Landroid/content/Context;)V
PLcom/android/server/security/KeyChainSystemService$1;-><init>(Lcom/android/server/security/KeyChainSystemService;)V
+PLcom/android/server/security/KeyChainSystemService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/security/KeyChainSystemService;->-wrap0(Lcom/android/server/security/KeyChainSystemService;Landroid/content/Intent;Landroid/os/UserHandle;)V
PLcom/android/server/security/KeyChainSystemService;-><init>(Landroid/content/Context;)V
PLcom/android/server/security/KeyChainSystemService;->onStart()V
+PLcom/android/server/security/KeyChainSystemService;->startServiceInBackgroundAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
PLcom/android/server/soundtrigger/SoundTriggerDbHelper;-><init>(Landroid/content/Context;)V
PLcom/android/server/soundtrigger/SoundTriggerHelper$MyCallStateListener;-><init>(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V
PLcom/android/server/soundtrigger/SoundTriggerHelper;-><init>(Landroid/content/Context;)V
@@ -11952,40 +13536,22 @@ PLcom/android/server/statusbar/-$Lambda$-TUoAzP8agiJJX9P4eGDtNXdVZ4$1;-><init>(L
PLcom/android/server/statusbar/-$Lambda$-TUoAzP8agiJJX9P4eGDtNXdVZ4$1;->run()V
PLcom/android/server/statusbar/StatusBarManagerService$1;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionCancelled()V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionFinished()V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionPending()V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionStarting(JJ)V
PLcom/android/server/statusbar/StatusBarManagerService$1;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
PLcom/android/server/statusbar/StatusBarManagerService$1;->setWindowState(II)V
-PLcom/android/server/statusbar/StatusBarManagerService$1;->topAppWindowChanged(Z)V
PLcom/android/server/statusbar/StatusBarManagerService$2;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;I)V
PLcom/android/server/statusbar/StatusBarManagerService$2;->run()V
-PLcom/android/server/statusbar/StatusBarManagerService$3;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Z)V
-PLcom/android/server/statusbar/StatusBarManagerService$3;->run()V
-PLcom/android/server/statusbar/StatusBarManagerService$4;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Landroid/os/IBinder;IIZ)V
-PLcom/android/server/statusbar/StatusBarManagerService$4;->run()V
-PLcom/android/server/statusbar/StatusBarManagerService$5;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/statusbar/StatusBarManagerService$5;->run()V
PLcom/android/server/statusbar/StatusBarManagerService$6;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
PLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
PLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/statusbar/StatusBarManagerService$DisableRecord;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->-get0(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/internal/statusbar/IStatusBar;
-PLcom/android/server/statusbar/StatusBarManagerService;->-get2(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/notification/NotificationDelegate;
+PLcom/android/server/statusbar/StatusBarManagerService;->-get3(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/notification/NotificationDelegate;
PLcom/android/server/statusbar/StatusBarManagerService;->-set3(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/notification/NotificationDelegate;)Lcom/android/server/notification/NotificationDelegate;
-PLcom/android/server/statusbar/StatusBarManagerService;->-wrap0(Lcom/android/server/statusbar/StatusBarManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->-wrap2(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->-wrap3(Lcom/android/server/statusbar/StatusBarManagerService;Z)V
PLcom/android/server/statusbar/StatusBarManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/statusbar/StatusBarManagerService;->clearNotificationEffects()V
PLcom/android/server/statusbar/StatusBarManagerService;->disable(ILandroid/os/IBinder;Ljava/lang/String;)V
PLcom/android/server/statusbar/StatusBarManagerService;->disableForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V
-PLcom/android/server/statusbar/StatusBarManagerService;->disableLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V
-PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V
-PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarService()V
-PLcom/android/server/statusbar/StatusBarManagerService;->gatherDisableActionsLocked(II)I
-PLcom/android/server/statusbar/StatusBarManagerService;->lambda$-com_android_server_statusbar_StatusBarManagerService_23991()V
-PLcom/android/server/statusbar/StatusBarManagerService;->manageDisableListLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V
+PLcom/android/server/statusbar/StatusBarManagerService;->enforceExpandStatusBar()V
+PLcom/android/server/statusbar/StatusBarManagerService;->handleSystemKey(I)V
+PLcom/android/server/statusbar/StatusBarManagerService;->lambda$-com_android_server_statusbar_StatusBarManagerService_24751()V
PLcom/android/server/statusbar/StatusBarManagerService;->notifyBarAttachChanged()V
PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V
PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V
@@ -11993,10 +13559,6 @@ PLcom/android/server/statusbar/StatusBarManagerService;->onPanelHidden()V
PLcom/android/server/statusbar/StatusBarManagerService;->onPanelRevealed(ZI)V
PLcom/android/server/statusbar/StatusBarManagerService;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;Ljava/util/List;Ljava/util/List;[ILjava/util/List;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
PLcom/android/server/statusbar/StatusBarManagerService;->setIconVisibility(Ljava/lang/String;Z)V
-PLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V
-PLcom/android/server/statusbar/StatusBarManagerService;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->topAppWindowChanged(Z)V
-PLcom/android/server/statusbar/StatusBarManagerService;->updateUiVisibilityLocked(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V
PLcom/android/server/storage/CacheQuotaStrategy$1$1;-><init>(Lcom/android/server/storage/CacheQuotaStrategy$1;Landroid/os/IBinder;)V
PLcom/android/server/storage/CacheQuotaStrategy$1$1;->run()V
PLcom/android/server/storage/CacheQuotaStrategy$1;-><init>(Lcom/android/server/storage/CacheQuotaStrategy;)V
@@ -12010,43 +13572,32 @@ PLcom/android/server/storage/CacheQuotaStrategy;->createServiceConnection()V
PLcom/android/server/storage/CacheQuotaStrategy;->disconnectService()V
PLcom/android/server/storage/CacheQuotaStrategy;->getRequestFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/usage/CacheQuotaHint;
PLcom/android/server/storage/CacheQuotaStrategy;->getServiceComponentName()Landroid/content/ComponentName;
-PLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List;
PLcom/android/server/storage/CacheQuotaStrategy;->insertIntoQuotaMap(Ljava/lang/String;IIJ)V
PLcom/android/server/storage/CacheQuotaStrategy;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/storage/CacheQuotaStrategy;->pushProcessedQuotas(Ljava/util/List;)V
PLcom/android/server/storage/CacheQuotaStrategy;->readFromXml(Ljava/io/InputStream;)Landroid/util/Pair;
PLcom/android/server/storage/CacheQuotaStrategy;->recalculateQuotas()V
PLcom/android/server/storage/CacheQuotaStrategy;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;J)V
PLcom/android/server/storage/CacheQuotaStrategy;->setupQuotasFromFile()J
PLcom/android/server/storage/CacheQuotaStrategy;->writeXmlToFile(Ljava/util/List;)V
-PLcom/android/server/storage/DeviceStorageMonitorService$1;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;Landroid/os/Looper;)V
-PLcom/android/server/storage/DeviceStorageMonitorService$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$1;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$1;->getMemoryLowThreshold()J
+PLcom/android/server/storage/DeviceStorageMonitorService$1;->isMemoryLow()Z
PLcom/android/server/storage/DeviceStorageMonitorService$2;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
-PLcom/android/server/storage/DeviceStorageMonitorService$2;->getMemoryLowThreshold()J
-PLcom/android/server/storage/DeviceStorageMonitorService$2;->isMemoryLow()Z
-PLcom/android/server/storage/DeviceStorageMonitorService$3;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$3;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;Landroid/os/Looper;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$3;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/storage/DeviceStorageMonitorService$CacheFileDeletedObserver;-><init>()V
-PLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap0(III)Z
-PLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap1(III)Z
PLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>()V
PLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService$State;)V
-PLcom/android/server/storage/DeviceStorageMonitorService$State;->isEntering(III)Z
-PLcom/android/server/storage/DeviceStorageMonitorService$State;->isLeaving(III)Z
PLcom/android/server/storage/DeviceStorageMonitorService;->-wrap0(Lcom/android/server/storage/DeviceStorageMonitorService;)V
PLcom/android/server/storage/DeviceStorageMonitorService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/storage/DeviceStorageMonitorService;->check()V
PLcom/android/server/storage/DeviceStorageMonitorService;->findOrCreateState(Ljava/util/UUID;)Lcom/android/server/storage/DeviceStorageMonitorService$State;
-PLcom/android/server/storage/DeviceStorageMonitorService;->isBootImageOnDisk()Z
PLcom/android/server/storage/DeviceStorageMonitorService;->onStart()V
-PLcom/android/server/storage/DeviceStorageMonitorService;->updateBroadcasts(Landroid/os/storage/VolumeInfo;III)V
-PLcom/android/server/storage/DeviceStorageMonitorService;->updateNotifications(Landroid/os/storage/VolumeInfo;II)V
PLcom/android/server/storage/DiskStatsLoggingService;->schedule(Landroid/content/Context;)V
PLcom/android/server/telecom/TelecomLoaderService$1;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
PLcom/android/server/telecom/TelecomLoaderService$2;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
PLcom/android/server/telecom/TelecomLoaderService$3;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
PLcom/android/server/telecom/TelecomLoaderService$4;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Landroid/os/Handler;Landroid/net/Uri;Landroid/content/pm/PackageManagerInternal;Landroid/net/Uri;)V
PLcom/android/server/telecom/TelecomLoaderService$5;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Landroid/content/pm/PackageManagerInternal;)V
-PLcom/android/server/telecom/TelecomLoaderService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection$1;-><init>(Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;)V
PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;)V
@@ -12056,7 +13607,6 @@ PLcom/android/server/telecom/TelecomLoaderService;->-get1(Lcom/android/server/te
PLcom/android/server/telecom/TelecomLoaderService;->-get2(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray;
PLcom/android/server/telecom/TelecomLoaderService;->-get3(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray;
PLcom/android/server/telecom/TelecomLoaderService;->-get4(Lcom/android/server/telecom/TelecomLoaderService;)Ljava/lang/Object;
-PLcom/android/server/telecom/TelecomLoaderService;->-wrap1(Lcom/android/server/telecom/TelecomLoaderService;Landroid/content/pm/PackageManagerInternal;I)V
PLcom/android/server/telecom/TelecomLoaderService;-><init>(Landroid/content/Context;)V
PLcom/android/server/telecom/TelecomLoaderService;->connectToTelecom()V
PLcom/android/server/telecom/TelecomLoaderService;->onBootPhase(I)V
@@ -12064,7 +13614,31 @@ PLcom/android/server/telecom/TelecomLoaderService;->onStart()V
PLcom/android/server/telecom/TelecomLoaderService;->registerCarrierConfigChangedReceiver()V
PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppNotifier()V
PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppProviders()V
-PLcom/android/server/telecom/TelecomLoaderService;->updateSimCallManagerPermissions(Landroid/content/pm/PackageManagerInternal;I)V
+PLcom/android/server/timezone/IntentHelperImpl$Receiver;-><init>(Lcom/android/server/timezone/IntentHelper$Listener;Z)V
+PLcom/android/server/timezone/IntentHelperImpl$Receiver;-><init>(Lcom/android/server/timezone/IntentHelper$Listener;ZLcom/android/server/timezone/IntentHelperImpl$Receiver;)V
+PLcom/android/server/timezone/IntentHelperImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timezone/IntentHelperImpl;->enableReliabilityTriggering()V
+PLcom/android/server/timezone/IntentHelperImpl;->initialize(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/timezone/IntentHelper$Listener;)V
+PLcom/android/server/timezone/PackageStatusStorage;-><init>(Ljava/io/File;)V
+PLcom/android/server/timezone/PackageTracker;-><init>(Lcom/android/server/timezone/ClockHelper;Lcom/android/server/timezone/ConfigHelper;Lcom/android/server/timezone/PackageManagerHelper;Lcom/android/server/timezone/PackageStatusStorage;Lcom/android/server/timezone/IntentHelper;)V
+PLcom/android/server/timezone/PackageTracker;->create(Landroid/content/Context;)Lcom/android/server/timezone/PackageTracker;
+PLcom/android/server/timezone/PackageTracker;->start()V
+PLcom/android/server/timezone/PackageTracker;->throwIfDeviceSettingsOrAppsAreBad()V
+PLcom/android/server/timezone/PackageTracker;->throwRuntimeExceptionIfNullOrEmpty(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/timezone/PackageTrackerHelperImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timezone/PackageTrackerHelperImpl;->getCheckTimeAllowedMillis()I
+PLcom/android/server/timezone/PackageTrackerHelperImpl;->getDataAppPackageName()Ljava/lang/String;
+PLcom/android/server/timezone/PackageTrackerHelperImpl;->getFailedCheckRetryCount()I
+PLcom/android/server/timezone/PackageTrackerHelperImpl;->getUpdateAppPackageName()Ljava/lang/String;
+PLcom/android/server/timezone/PackageTrackerHelperImpl;->isPrivilegedApp(Ljava/lang/String;)Z
+PLcom/android/server/timezone/PackageTrackerHelperImpl;->isTrackingEnabled()Z
+PLcom/android/server/timezone/RulesManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timezone/RulesManagerService$Lifecycle;->onStart()V
+PLcom/android/server/timezone/RulesManagerService;->-wrap0(Landroid/content/Context;)Lcom/android/server/timezone/RulesManagerService;
+PLcom/android/server/timezone/RulesManagerService;-><init>(Lcom/android/server/timezone/PermissionHelper;Ljava/util/concurrent/Executor;Lcom/android/server/timezone/PackageTracker;Lcom/android/timezone/distro/installer/TimeZoneDistroInstaller;)V
+PLcom/android/server/timezone/RulesManagerService;->create(Landroid/content/Context;)Lcom/android/server/timezone/RulesManagerService;
+PLcom/android/server/timezone/RulesManagerService;->start()V
+PLcom/android/server/timezone/RulesManagerServiceHelperImpl;-><init>(Landroid/content/Context;)V
PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;->$m$0()V
PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;-><init>()V
PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;->run()V
@@ -12073,19 +13647,20 @@ PLcom/android/server/trust/TrustManagerService$1;-><init>(Lcom/android/server/tr
PLcom/android/server/trust/TrustManagerService$1;->clearAllFingerprints()V
PLcom/android/server/trust/TrustManagerService$1;->enforceListenerPermission()V
PLcom/android/server/trust/TrustManagerService$1;->enforceReportPermission()V
-PLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(I)Z
-PLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(I)Z
PLcom/android/server/trust/TrustManagerService$1;->isTrustUsuallyManaged(I)Z
-PLcom/android/server/trust/TrustManagerService$1;->lambda$-com_android_server_trust_TrustManagerService$1_34004()V
+PLcom/android/server/trust/TrustManagerService$1;->lambda$-com_android_server_trust_TrustManagerService$1_33892()V
PLcom/android/server/trust/TrustManagerService$1;->registerTrustListener(Landroid/app/trust/ITrustListener;)V
+PLcom/android/server/trust/TrustManagerService$1;->reportEnabledTrustAgentsChanged(I)V
PLcom/android/server/trust/TrustManagerService$1;->reportKeyguardShowingChanged()V
PLcom/android/server/trust/TrustManagerService$2;-><init>(Lcom/android/server/trust/TrustManagerService;)V
PLcom/android/server/trust/TrustManagerService$2;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/trust/TrustManagerService$3;-><init>(Lcom/android/server/trust/TrustManagerService;)V
PLcom/android/server/trust/TrustManagerService$3;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
+PLcom/android/server/trust/TrustManagerService$3;->onPackageDisappeared(Ljava/lang/String;I)V
PLcom/android/server/trust/TrustManagerService$3;->onSomePackagesChanged()V
PLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;)V
PLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService$Receiver;)V
+PLcom/android/server/trust/TrustManagerService$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/trust/TrustManagerService$Receiver;->register(Landroid/content/Context;)V
PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/content/Context;)V
PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
@@ -12095,9 +13670,9 @@ PLcom/android/server/trust/TrustManagerService;->-get2(Lcom/android/server/trust
PLcom/android/server/trust/TrustManagerService;->-get4(Lcom/android/server/trust/TrustManagerService;)Landroid/os/Handler;
PLcom/android/server/trust/TrustManagerService;->-get5(Lcom/android/server/trust/TrustManagerService;)Lcom/android/internal/widget/LockPatternUtils;
PLcom/android/server/trust/TrustManagerService;->-wrap2(Lcom/android/server/trust/TrustManagerService;I)Z
-PLcom/android/server/trust/TrustManagerService;->-wrap3(Lcom/android/server/trust/TrustManagerService;I)I
PLcom/android/server/trust/TrustManagerService;->-wrap4(Lcom/android/server/trust/TrustManagerService;Landroid/app/trust/ITrustListener;)V
PLcom/android/server/trust/TrustManagerService;->-wrap8(Lcom/android/server/trust/TrustManagerService;I)V
+PLcom/android/server/trust/TrustManagerService;->-wrap9(Lcom/android/server/trust/TrustManagerService;Ljava/lang/String;)V
PLcom/android/server/trust/TrustManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/trust/TrustManagerService;->addListener(Landroid/app/trust/ITrustListener;)V
PLcom/android/server/trust/TrustManagerService;->aggregateIsTrustManaged(I)Z
@@ -12105,7 +13680,6 @@ PLcom/android/server/trust/TrustManagerService;->aggregateIsTrusted(I)Z
PLcom/android/server/trust/TrustManagerService;->dispatchDeviceLocked(IZ)V
PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustChanged(ZII)V
PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustManagedChanged(ZI)V
-PLcom/android/server/trust/TrustManagerService;->getDefaultFactoryTrustAgent(Landroid/content/Context;)Landroid/content/ComponentName;
PLcom/android/server/trust/TrustManagerService;->isDeviceLockedInner(I)Z
PLcom/android/server/trust/TrustManagerService;->isTrustUsuallyManagedInternal(I)Z
PLcom/android/server/trust/TrustManagerService;->maybeEnableFactoryTrustAgents(Lcom/android/internal/widget/LockPatternUtils;I)V
@@ -12113,50 +13687,35 @@ PLcom/android/server/trust/TrustManagerService;->onBootPhase(I)V
PLcom/android/server/trust/TrustManagerService;->onStart()V
PLcom/android/server/trust/TrustManagerService;->onStartUser(I)V
PLcom/android/server/trust/TrustManagerService;->onUnlockUser(I)V
-PLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V
PLcom/android/server/trust/TrustManagerService;->refreshDeviceLockedForUser(I)V
-PLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I
+PLcom/android/server/trust/TrustManagerService;->removeAgentsOfPackage(Ljava/lang/String;)V
PLcom/android/server/trust/TrustManagerService;->setDeviceLockedForUser(IZ)V
+PLcom/android/server/trust/TrustManagerService;->updateDevicePolicyFeatures()V
PLcom/android/server/trust/TrustManagerService;->updateTrust(II)V
PLcom/android/server/trust/TrustManagerService;->updateTrustAll()V
PLcom/android/server/twilight/TwilightService$1;-><init>(Lcom/android/server/twilight/TwilightService;)V
PLcom/android/server/twilight/TwilightService$1;->getLastTwilightState()Lcom/android/server/twilight/TwilightState;
-PLcom/android/server/twilight/TwilightService$1;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V
-PLcom/android/server/twilight/TwilightService;->-get1(Lcom/android/server/twilight/TwilightService;)Landroid/util/ArrayMap;
PLcom/android/server/twilight/TwilightService;-><init>(Landroid/content/Context;)V
PLcom/android/server/twilight/TwilightService;->onBootPhase(I)V
PLcom/android/server/twilight/TwilightService;->onStart()V
-PLcom/android/server/usage/AppIdleHistory$PackageHistory;-><init>()V
-PLcom/android/server/usage/AppIdleHistory$PackageHistory;-><init>(Lcom/android/server/usage/AppIdleHistory$PackageHistory;)V
PLcom/android/server/usage/AppIdleHistory;-><init>(J)V
PLcom/android/server/usage/AppIdleHistory;-><init>(Ljava/io/File;J)V
-PLcom/android/server/usage/AppIdleHistory;->clearUsage(Ljava/lang/String;I)V
PLcom/android/server/usage/AppIdleHistory;->getElapsedTime(J)J
-PLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;J)Lcom/android/server/usage/AppIdleHistory$PackageHistory;
-PLcom/android/server/usage/AppIdleHistory;->getScreenOnTime(J)J
PLcom/android/server/usage/AppIdleHistory;->getScreenOnTimeFile()Ljava/io/File;
PLcom/android/server/usage/AppIdleHistory;->getUserFile(I)Ljava/io/File;
-PLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap;
-PLcom/android/server/usage/AppIdleHistory;->hasPassedThresholds(Lcom/android/server/usage/AppIdleHistory$PackageHistory;J)Z
-PLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V
PLcom/android/server/usage/AppIdleHistory;->readScreenOnTime()V
-PLcom/android/server/usage/AppIdleHistory;->reportUsage(Ljava/lang/String;IJ)V
-PLcom/android/server/usage/AppIdleHistory;->setIdle(Ljava/lang/String;IJ)V
PLcom/android/server/usage/AppIdleHistory;->setIdle(Ljava/lang/String;IZJ)V
PLcom/android/server/usage/AppIdleHistory;->setThresholds(JJ)V
-PLcom/android/server/usage/AppIdleHistory;->shiftHistoryToNow(Landroid/util/ArrayMap;J)V
PLcom/android/server/usage/AppIdleHistory;->updateDisplay(ZJ)V
+PLcom/android/server/usage/AppIdleHistory;->writeAppIdleDurations()V
+PLcom/android/server/usage/AppIdleHistory;->writeScreenOnTime()V
PLcom/android/server/usage/IntervalStats;-><init>()V
-PLcom/android/server/usage/IntervalStats;->buildEvent(Ljava/lang/String;Ljava/lang/String;)Landroid/app/usage/UsageEvents$Event;
-PLcom/android/server/usage/IntervalStats;->getCachedStringRef(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats;
-PLcom/android/server/usage/IntervalStats;->isStatefulEvent(I)Z
PLcom/android/server/usage/IntervalStats;->updateConfigurationStats(Landroid/content/res/Configuration;J)V
PLcom/android/server/usage/StorageStatsService$1;-><init>(Lcom/android/server/usage/StorageStatsService;)V
PLcom/android/server/usage/StorageStatsService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
PLcom/android/server/usage/StorageStatsService$H;-><init>(Lcom/android/server/usage/StorageStatsService;Landroid/os/Looper;)V
PLcom/android/server/usage/StorageStatsService$H;->getInitializedStrategy()Lcom/android/server/storage/CacheQuotaStrategy;
-PLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/usage/StorageStatsService$H;->recalculateQuotas(Lcom/android/server/storage/CacheQuotaStrategy;)V
PLcom/android/server/usage/StorageStatsService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/usage/StorageStatsService$Lifecycle;->onStart()V
@@ -12165,19 +13724,14 @@ PLcom/android/server/usage/StorageStatsService;->-get1(Lcom/android/server/usage
PLcom/android/server/usage/StorageStatsService;->-get2(Lcom/android/server/usage/StorageStatsService;)Lcom/android/server/pm/Installer;
PLcom/android/server/usage/StorageStatsService;->-wrap0(Lcom/android/server/usage/StorageStatsService;)V
PLcom/android/server/usage/StorageStatsService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/usage/StorageStatsService;->enforcePermission(ILjava/lang/String;)V
-PLcom/android/server/usage/StorageStatsService;->getAppIds(I)[I
-PLcom/android/server/usage/StorageStatsService;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J
PLcom/android/server/usage/StorageStatsService;->getDefaultFlags()I
+PLcom/android/server/usage/StorageStatsService;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J
+PLcom/android/server/usage/StorageStatsService;->getTotalBytes(Ljava/lang/String;Ljava/lang/String;)J
PLcom/android/server/usage/StorageStatsService;->invalidateMounts()V
-PLcom/android/server/usage/StorageStatsService;->isCacheQuotaCalculationsEnabled(Landroid/content/ContentResolver;)Z
-PLcom/android/server/usage/StorageStatsService;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z
PLcom/android/server/usage/StorageStatsService;->notifySignificantDelta()V
-PLcom/android/server/usage/StorageStatsService;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
PLcom/android/server/usage/StorageStatsService;->translate(Landroid/content/pm/PackageStats;)Landroid/app/usage/StorageStats;
PLcom/android/server/usage/UnixCalendar;-><init>(J)V
PLcom/android/server/usage/UnixCalendar;->addDays(I)V
-PLcom/android/server/usage/UnixCalendar;->getTimeInMillis()J
PLcom/android/server/usage/UnixCalendar;->setTimeInMillis(J)V
PLcom/android/server/usage/UsageStatsDatabase$1;-><init>(Lcom/android/server/usage/UsageStatsDatabase;)V
PLcom/android/server/usage/UsageStatsDatabase$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
@@ -12189,17 +13743,17 @@ PLcom/android/server/usage/UsageStatsDatabase;->getLatestUsageStats(I)Lcom/andro
PLcom/android/server/usage/UsageStatsDatabase;->indexFilesLocked()V
PLcom/android/server/usage/UsageStatsDatabase;->init(J)V
PLcom/android/server/usage/UsageStatsDatabase;->isNewUpdate()Z
+PLcom/android/server/usage/UsageStatsDatabase;->putUsageStats(ILcom/android/server/usage/IntervalStats;)V
PLcom/android/server/usage/UsageStatsDatabase;->queryUsageStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List;
PLcom/android/server/usage/UsageStatsService$1;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService$1;->onDisplayChanged(I)V
PLcom/android/server/usage/UsageStatsService$2;-><init>(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService$2;->onUidGone(IZ)V
PLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$BinderService;)V
PLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$DeviceStateReceiver;)V
-PLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/usage/UsageStatsService$H;-><init>(Lcom/android/server/usage/UsageStatsService;Landroid/os/Looper;)V
-PLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$LocalService;)V
PLcom/android/server/usage/UsageStatsService$LocalService;->addAppIdleStateChangeListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V
@@ -12207,8 +13761,6 @@ PLcom/android/server/usage/UsageStatsService$LocalService;->getIdleUidsForUser(I
PLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdleParoleOn()Z
PLcom/android/server/usage/UsageStatsService$LocalService;->queryUsageStatsForUser(IIJJZ)Ljava/util/List;
PLcom/android/server/usage/UsageStatsService$LocalService;->reportConfigurationChange(Landroid/content/res/Configuration;I)V
-PLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;II)V
PLcom/android/server/usage/UsageStatsService$LocalService;->reportShortcutUsage(Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/usage/UsageStatsService$PackageReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService$PackageReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$PackageReceiver;)V
@@ -12219,70 +13771,56 @@ PLcom/android/server/usage/UsageStatsService$SettingsObserver;->updateSettings()
PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V
PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$UserActionsReceiver;)V
PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/usage/UsageStatsService;->-get0()Ljava/io/File;
PLcom/android/server/usage/UsageStatsService;->-get1(Lcom/android/server/usage/UsageStatsService;)Lcom/android/server/usage/AppIdleHistory;
PLcom/android/server/usage/UsageStatsService;->-get2(Lcom/android/server/usage/UsageStatsService;)Ljava/lang/Object;
-PLcom/android/server/usage/UsageStatsService;->-get4(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseIntArray;
-PLcom/android/server/usage/UsageStatsService;->-wrap0(Lcom/android/server/usage/UsageStatsService;Ljava/lang/String;IIJ)Z
-PLcom/android/server/usage/UsageStatsService;->-wrap2(Lcom/android/server/usage/UsageStatsService;II)Z
+PLcom/android/server/usage/UsageStatsService;->-wrap1(Lcom/android/server/usage/UsageStatsService;)Z
PLcom/android/server/usage/UsageStatsService;-><init>(Landroid/content/Context;)V
PLcom/android/server/usage/UsageStatsService;->addListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V
-PLcom/android/server/usage/UsageStatsService;->checkIdleStates(I)Z
PLcom/android/server/usage/UsageStatsService;->cleanUpRemovedUsersLocked()V
-PLcom/android/server/usage/UsageStatsService;->clearAppIdleForPackage(Ljava/lang/String;I)V
PLcom/android/server/usage/UsageStatsService;->clearCarrierPrivilegedApps()V
-PLcom/android/server/usage/UsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V
PLcom/android/server/usage/UsageStatsService;->fetchCarrierPrivilegedAppsLA()V
-PLcom/android/server/usage/UsageStatsService;->forceIdleState(Ljava/lang/String;IZ)V
-PLcom/android/server/usage/UsageStatsService;->getAppId(Ljava/lang/String;)I
-PLcom/android/server/usage/UsageStatsService;->getIdleUidsForUser(I)[I
-PLcom/android/server/usage/UsageStatsService;->getUserDataAndInitializeIfNeededLocked(IJ)Lcom/android/server/usage/UserUsageStatsService;
-PLcom/android/server/usage/UsageStatsService;->informListeners(Ljava/lang/String;IZ)V
+PLcom/android/server/usage/UsageStatsService;->flushToDisk()V
+PLcom/android/server/usage/UsageStatsService;->flushToDiskLocked()V
PLcom/android/server/usage/UsageStatsService;->informParoleStateChanged()V
-PLcom/android/server/usage/UsageStatsService;->isActiveDeviceAdmin(Ljava/lang/String;I)Z
-PLcom/android/server/usage/UsageStatsService;->isAppIdleFilteredOrParoled(Ljava/lang/String;IJZ)Z
-PLcom/android/server/usage/UsageStatsService;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z
PLcom/android/server/usage/UsageStatsService;->isCarrierApp(Ljava/lang/String;)Z
PLcom/android/server/usage/UsageStatsService;->isDisplayOn()Z
-PLcom/android/server/usage/UsageStatsService;->isParoledOrCharging()Z
-PLcom/android/server/usage/UsageStatsService;->notifyBatteryStats(Ljava/lang/String;IZ)V
PLcom/android/server/usage/UsageStatsService;->onBootPhase(I)V
PLcom/android/server/usage/UsageStatsService;->onStart()V
PLcom/android/server/usage/UsageStatsService;->onStatsUpdated()V
PLcom/android/server/usage/UsageStatsService;->postCheckIdleStates(I)V
PLcom/android/server/usage/UsageStatsService;->postParoleStateChanged()V
PLcom/android/server/usage/UsageStatsService;->queryUsageStats(IIJJZ)Ljava/util/List;
-PLcom/android/server/usage/UsageStatsService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
PLcom/android/server/usage/UsageStatsService;->setAppIdleAsync(Ljava/lang/String;ZI)V
PLcom/android/server/usage/UsageStatsService;->setChargingState(Z)V
-PLcom/android/server/usage/UsageStatsService;->shouldObfuscateInstantAppsForCaller(II)Z
PLcom/android/server/usage/UsageStatsService;->validRange(JJJ)Z
PLcom/android/server/usage/UsageStatsXml;->parseBeginTime(Landroid/util/AtomicFile;)J
PLcom/android/server/usage/UsageStatsXml;->parseBeginTime(Ljava/io/File;)J
PLcom/android/server/usage/UsageStatsXml;->read(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V
PLcom/android/server/usage/UsageStatsXml;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsXml;->write(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsXml;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V
PLcom/android/server/usage/UsageStatsXmlV1;->loadConfigStats(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V
-PLcom/android/server/usage/UsageStatsXmlV1;->loadEvent(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V
-PLcom/android/server/usage/UsageStatsXmlV1;->loadUsageStats(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V
PLcom/android/server/usage/UserUsageStatsService$1;-><init>()V
PLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
PLcom/android/server/usage/UserUsageStatsService$2;-><init>()V
PLcom/android/server/usage/UserUsageStatsService;-><init>(Landroid/content/Context;ILjava/io/File;Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;)V
-PLcom/android/server/usage/UserUsageStatsService;->init(J)V
-PLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V
-PLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List;
+PLcom/android/server/usage/UserUsageStatsService;->persistActiveStats()V
PLcom/android/server/usage/UserUsageStatsService;->queryUsageStats(IJJ)Ljava/util/List;
PLcom/android/server/usage/UserUsageStatsService;->updateRolloverDeadline()V
+PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;->$m$0()V
+PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;->run()V
+PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;->$m$0()V
+PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;-><init>(BLjava/lang/Object;)V
+PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;->run()V
+PLcom/android/server/usb/-$Lambda$FKfu8uuaZxaSOkvg1oeLD5zHuwk;-><init>(Ljava/lang/Object;)V
PLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;)V
PLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;Lcom/android/server/usb/MtpNotificationManager$Receiver;)V
PLcom/android/server/usb/MtpNotificationManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;)V
PLcom/android/server/usb/UsbAlsaManager$1;-><init>(Lcom/android/server/usb/UsbAlsaManager;Ljava/lang/String;I)V
PLcom/android/server/usb/UsbAlsaManager$AlsaDevice;-><init>(Lcom/android/server/usb/UsbAlsaManager;III)V
-PLcom/android/server/usb/UsbAlsaManager$AlsaDevice;->toString()Ljava/lang/String;
PLcom/android/server/usb/UsbAlsaManager;-><init>(Landroid/content/Context;)V
-PLcom/android/server/usb/UsbAlsaManager;->alsaFileAdded(Ljava/lang/String;)V
PLcom/android/server/usb/UsbAlsaManager;->setPeripheralMidiState(ZII)V
-PLcom/android/server/usb/UsbAlsaManager;->systemReady()V
PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingHandler;-><init>(Lcom/android/server/usb/UsbDebuggingManager;Landroid/os/Looper;)V
PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread;-><init>(Lcom/android/server/usb/UsbDebuggingManager;)V
@@ -12296,21 +13834,19 @@ PLcom/android/server/usb/UsbDebuggingManager;->-set2(Lcom/android/server/usb/Usb
PLcom/android/server/usb/UsbDebuggingManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/usb/UsbDebuggingManager;->setAdbEnabled(Z)V
PLcom/android/server/usb/UsbDeviceManager$1;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/UsbDeviceManager$1;->onUEvent(Landroid/os/UEventObserver$UEvent;)V
PLcom/android/server/usb/UsbDeviceManager$2;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
PLcom/android/server/usb/UsbDeviceManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/usb/UsbDeviceManager$3;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
-PLcom/android/server/usb/UsbDeviceManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/usb/UsbDeviceManager$4;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
PLcom/android/server/usb/UsbDeviceManager$5;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
PLcom/android/server/usb/UsbDeviceManager$AdbSettingsObserver;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;-><init>(Lcom/android/server/usb/UsbDeviceManager;Landroid/os/Looper;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->applyAdbFunction(Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getDefaultFunctions()Ljava/lang/String;
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isNormalBoot()Z
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbStateChanged(Landroid/content/Intent;)Z
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbTransferAllowed()Z
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(IZ)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->setEnabledFunctions(Ljava/lang/String;ZZ)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->trySetEnabledFunctions(Ljava/lang/String;Z)Z
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateAdbNotification(Z)V
@@ -12319,7 +13855,6 @@ PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateHostState(Landroid/
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateMidiFunction()V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateState(Ljava/lang/String;)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbFunctions()V
-PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V
PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbStateBroadcastIfNeeded(Z)V
PLcom/android/server/usb/UsbDeviceManager;->-get1(Lcom/android/server/usb/UsbDeviceManager;)Z
PLcom/android/server/usb/UsbDeviceManager;->-get10(Lcom/android/server/usb/UsbDeviceManager;)I
@@ -12351,9 +13886,8 @@ PLcom/android/server/usb/UsbDeviceManager;->isTv()Z
PLcom/android/server/usb/UsbDeviceManager;->readOemUsbOverrideConfig()V
PLcom/android/server/usb/UsbDeviceManager;->setCurrentUser(ILcom/android/server/usb/UsbProfileGroupSettingsManager;)V
PLcom/android/server/usb/UsbDeviceManager;->systemReady()V
-PLcom/android/server/usb/UsbHostManager$1;-><init>(Lcom/android/server/usb/UsbHostManager;)V
-PLcom/android/server/usb/UsbHostManager$1;->run()V
-PLcom/android/server/usb/UsbHostManager;->-wrap0(Lcom/android/server/usb/UsbHostManager;)V
+PLcom/android/server/usb/UsbDeviceManager;->updateUserRestrictions()V
+PLcom/android/server/usb/UsbHostManager;->-com_android_server_usb_UsbHostManager-mthref-0()V
PLcom/android/server/usb/UsbHostManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;)V
PLcom/android/server/usb/UsbHostManager;->getDeviceList(Landroid/os/Bundle;)V
PLcom/android/server/usb/UsbHostManager;->setCurrentUserSettings(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
@@ -12361,8 +13895,6 @@ PLcom/android/server/usb/UsbHostManager;->setUsbDeviceConnectionHandler(Landroid
PLcom/android/server/usb/UsbHostManager;->systemReady()V
PLcom/android/server/usb/UsbPortManager$1;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/os/Looper;)V
PLcom/android/server/usb/UsbPortManager$1;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/usb/UsbPortManager$2;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/content/Intent;)V
-PLcom/android/server/usb/UsbPortManager$2;->run()V
PLcom/android/server/usb/UsbPortManager$DeathRecipient;-><init>(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/usb/UsbPortManager$HALCallback;-><init>(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/usb/UsbPortManager;)V
PLcom/android/server/usb/UsbPortManager$HALCallback;->notifyPortStatusChange_1_1(Ljava/util/ArrayList;I)V
@@ -12373,10 +13905,9 @@ PLcom/android/server/usb/UsbPortManager$RawPortInfo$1;-><init>()V
PLcom/android/server/usb/UsbPortManager$RawPortInfo;-><init>(Ljava/lang/String;IIZIZIZ)V
PLcom/android/server/usb/UsbPortManager$ServiceNotification;-><init>(Lcom/android/server/usb/UsbPortManager;)V
PLcom/android/server/usb/UsbPortManager$ServiceNotification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V
-PLcom/android/server/usb/UsbPortManager;->-get0(Lcom/android/server/usb/UsbPortManager;)Landroid/content/Context;
-PLcom/android/server/usb/UsbPortManager;->-get1(Lcom/android/server/usb/UsbPortManager;)Landroid/os/Handler;
-PLcom/android/server/usb/UsbPortManager;->-get2(Lcom/android/server/usb/UsbPortManager;)Ljava/lang/Object;
-PLcom/android/server/usb/UsbPortManager;->-get3(Lcom/android/server/usb/UsbPortManager;)Z
+PLcom/android/server/usb/UsbPortManager;->-get0(Lcom/android/server/usb/UsbPortManager;)Landroid/os/Handler;
+PLcom/android/server/usb/UsbPortManager;->-get1(Lcom/android/server/usb/UsbPortManager;)Ljava/lang/Object;
+PLcom/android/server/usb/UsbPortManager;->-get2(Lcom/android/server/usb/UsbPortManager;)Z
PLcom/android/server/usb/UsbPortManager;->-wrap0(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/usb/UsbPortManager;->-wrap1(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V
PLcom/android/server/usb/UsbPortManager;->-wrap2(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V
@@ -12384,28 +13915,23 @@ PLcom/android/server/usb/UsbPortManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/usb/UsbPortManager;->addOrUpdatePortLocked(Ljava/lang/String;IIZIZIZLcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/usb/UsbPortManager;->connectToProxy(Lcom/android/internal/util/IndentingPrintWriter;)V
PLcom/android/server/usb/UsbPortManager;->handlePortAddedLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usb/UsbPortManager;->handlePortChangedLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usb/UsbPortManager;->lambda$-com_android_server_usb_UsbPortManager_30586(Landroid/content/Intent;)V
PLcom/android/server/usb/UsbPortManager;->logAndPrint(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V
PLcom/android/server/usb/UsbPortManager;->sendPortChangedBroadcastLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;)V
PLcom/android/server/usb/UsbPortManager;->systemReady()V
PLcom/android/server/usb/UsbPortManager;->updatePortsLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager$1;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;-><init>(Ljava/lang/String;Landroid/os/UserHandle;Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager;->-get1(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)Landroid/os/UserHandle;
-PLcom/android/server/usb/UsbProfileGroupSettingsManager;->-get2(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)Landroid/os/UserManager;
-PLcom/android/server/usb/UsbProfileGroupSettingsManager;->-wrap1(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V
PLcom/android/server/usb/UsbProfileGroupSettingsManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/usb/UsbSettingsManager;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAdded(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAddedLocked(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Z
PLcom/android/server/usb/UsbProfileGroupSettingsManager;->readSettingsLocked()V
PLcom/android/server/usb/UsbProfileGroupSettingsManager;->upgradeSingleUserLocked()V
PLcom/android/server/usb/UsbService$1;-><init>(Lcom/android/server/usb/UsbService;)V
+PLcom/android/server/usb/UsbService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/usb/UsbService$Lifecycle;-><init>(Landroid/content/Context;)V
PLcom/android/server/usb/UsbService$Lifecycle;->onBootPhase(I)V
PLcom/android/server/usb/UsbService$Lifecycle;->onStart()V
+PLcom/android/server/usb/UsbService;->-get0(Lcom/android/server/usb/UsbService;)Lcom/android/server/usb/UsbDeviceManager;
PLcom/android/server/usb/UsbService;-><init>(Landroid/content/Context;)V
PLcom/android/server/usb/UsbService;->bootCompleted()V
PLcom/android/server/usb/UsbService;->getDeviceList(Landroid/os/Bundle;)V
@@ -12418,6 +13944,7 @@ PLcom/android/server/voiceinteraction/DatabaseHelper;->getKeyphraseSoundModel(II
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onSomePackagesChanged()V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Landroid/os/Handler;)V
@@ -12437,7 +13964,7 @@ PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceIntera
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onLockscreenShown()V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->shouldEnableService(Landroid/content/res/Resources;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->shouldEnableService(Landroid/content/Context;)Z
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeeded(Z)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededLocked(Z)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->systemRunning(Z)V
@@ -12455,6 +13982,8 @@ PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;->onS
PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;ILandroid/content/ComponentName;)V
PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->startLocked()V
PLcom/android/server/vr/EnabledComponentsObserver$1;-><init>(Lcom/android/server/vr/EnabledComponentsObserver;)V
+PLcom/android/server/vr/EnabledComponentsObserver$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageDisappeared(Ljava/lang/String;I)V
PLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageModified(Ljava/lang/String;)V
PLcom/android/server/vr/EnabledComponentsObserver$1;->onSomePackagesChanged()V
PLcom/android/server/vr/EnabledComponentsObserver;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/util/Collection;)V
@@ -12462,21 +13991,17 @@ PLcom/android/server/vr/EnabledComponentsObserver;->build(Landroid/content/Conte
PLcom/android/server/vr/EnabledComponentsObserver;->getCurrentProfileIds()[I
PLcom/android/server/vr/EnabledComponentsObserver;->getEnabled(I)Landroid/util/ArraySet;
PLcom/android/server/vr/EnabledComponentsObserver;->isValid(Landroid/content/ComponentName;I)I
-PLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNames(Landroid/content/pm/PackageManager;ILjava/lang/String;Ljava/lang/String;)Landroid/util/ArraySet;
PLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesForUser(I)Landroid/util/ArraySet;
-PLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet;
PLcom/android/server/vr/EnabledComponentsObserver;->onPackagesChanged()V
PLcom/android/server/vr/EnabledComponentsObserver;->onUsersChanged()V
-PLcom/android/server/vr/EnabledComponentsObserver;->rebuildAll()V
-PLcom/android/server/vr/EnabledComponentsObserver;->sendSettingChanged()V
PLcom/android/server/vr/SettingsObserver$1;-><init>(Lcom/android/server/vr/SettingsObserver;Ljava/lang/String;)V
PLcom/android/server/vr/SettingsObserver$2;-><init>(Lcom/android/server/vr/SettingsObserver;Landroid/os/Handler;Landroid/net/Uri;)V
PLcom/android/server/vr/SettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/net/Uri;Ljava/lang/String;)V
PLcom/android/server/vr/SettingsObserver;->addListener(Lcom/android/server/vr/SettingsObserver$SettingChangeListener;)V
PLcom/android/server/vr/SettingsObserver;->build(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;)Lcom/android/server/vr/SettingsObserver;
PLcom/android/server/vr/Vr2dDisplay$1;-><init>(Lcom/android/server/vr/Vr2dDisplay;)V
-PLcom/android/server/vr/Vr2dDisplay;-><init>(Landroid/hardware/display/DisplayManager;Landroid/app/ActivityManagerInternal;Landroid/service/vr/IVrManager;)V
-PLcom/android/server/vr/Vr2dDisplay;->init(Landroid/content/Context;)V
+PLcom/android/server/vr/Vr2dDisplay;-><init>(Landroid/hardware/display/DisplayManager;Landroid/app/ActivityManagerInternal;Landroid/view/WindowManagerInternal;Landroid/service/vr/IVrManager;)V
+PLcom/android/server/vr/Vr2dDisplay;->init(Landroid/content/Context;Z)V
PLcom/android/server/vr/Vr2dDisplay;->startDebugOnlyBroadcastReceiver(Landroid/content/Context;)V
PLcom/android/server/vr/Vr2dDisplay;->startVrModeListener()V
PLcom/android/server/vr/VrManagerInternal;-><init>()V
@@ -12486,53 +14011,51 @@ PLcom/android/server/vr/VrManagerService$3;-><init>(Lcom/android/server/vr/VrMan
PLcom/android/server/vr/VrManagerService$3;->getVrModeState()Z
PLcom/android/server/vr/VrManagerService$3;->registerListener(Landroid/service/vr/IVrStateCallbacks;)V
PLcom/android/server/vr/VrManagerService$3;->registerPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V
+PLcom/android/server/vr/VrManagerService$3;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V
+PLcom/android/server/vr/VrManagerService$4;-><init>(Lcom/android/server/vr/VrManagerService;)V
+PLcom/android/server/vr/VrManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/vr/VrManagerService$LocalService;-><init>(Lcom/android/server/vr/VrManagerService;)V
PLcom/android/server/vr/VrManagerService$LocalService;-><init>(Lcom/android/server/vr/VrManagerService;Lcom/android/server/vr/VrManagerService$LocalService;)V
PLcom/android/server/vr/VrManagerService$LocalService;->addPersistentVrModeStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V
PLcom/android/server/vr/VrManagerService$LocalService;->isCurrentVrListener(Ljava/lang/String;I)Z
PLcom/android/server/vr/VrManagerService$LocalService;->onScreenStateChanged(Z)V
PLcom/android/server/vr/VrManagerService$LocalService;->onSleepStateChanged(Z)V
-PLcom/android/server/vr/VrManagerService$LocalService;->setVrMode(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V
+PLcom/android/server/vr/VrManagerService$LocalService;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
PLcom/android/server/vr/VrManagerService$NotificationAccessManager;-><init>(Lcom/android/server/vr/VrManagerService;)V
PLcom/android/server/vr/VrManagerService$NotificationAccessManager;-><init>(Lcom/android/server/vr/VrManagerService;Lcom/android/server/vr/VrManagerService$NotificationAccessManager;)V
-PLcom/android/server/vr/VrManagerService$NotificationAccessManager;->update(Ljava/util/Collection;)V
-PLcom/android/server/vr/VrManagerService$VrState;-><init>(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V
-PLcom/android/server/vr/VrManagerService;->-wrap0(Lcom/android/server/vr/VrManagerService;)Z
-PLcom/android/server/vr/VrManagerService;->-wrap1(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)Z
+PLcom/android/server/vr/VrManagerService;->-wrap1(Lcom/android/server/vr/VrManagerService;)Z
PLcom/android/server/vr/VrManagerService;->-wrap10(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V
-PLcom/android/server/vr/VrManagerService;->-wrap11(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;)V
-PLcom/android/server/vr/VrManagerService;->-wrap18(Lcom/android/server/vr/VrManagerService;Z)V
+PLcom/android/server/vr/VrManagerService;->-wrap11(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V
+PLcom/android/server/vr/VrManagerService;->-wrap12(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;)V
+PLcom/android/server/vr/VrManagerService;->-wrap14(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V
PLcom/android/server/vr/VrManagerService;->-wrap19(Lcom/android/server/vr/VrManagerService;Z)V
-PLcom/android/server/vr/VrManagerService;->-wrap20(Lcom/android/server/vr/VrManagerService;ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V
-PLcom/android/server/vr/VrManagerService;->-wrap4(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IPersistentVrStateCallbacks;)V
-PLcom/android/server/vr/VrManagerService;->-wrap5(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V
-PLcom/android/server/vr/VrManagerService;->-wrap8(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;)V
-PLcom/android/server/vr/VrManagerService;->-wrap9(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V
+PLcom/android/server/vr/VrManagerService;->-wrap2(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)Z
+PLcom/android/server/vr/VrManagerService;->-wrap20(Lcom/android/server/vr/VrManagerService;Z)V
+PLcom/android/server/vr/VrManagerService;->-wrap21(Lcom/android/server/vr/VrManagerService;)V
+PLcom/android/server/vr/VrManagerService;->-wrap22(Lcom/android/server/vr/VrManagerService;ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
+PLcom/android/server/vr/VrManagerService;->-wrap5(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IPersistentVrStateCallbacks;)V
+PLcom/android/server/vr/VrManagerService;->-wrap6(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V
+PLcom/android/server/vr/VrManagerService;->-wrap9(Lcom/android/server/vr/VrManagerService;[Ljava/lang/String;)V
PLcom/android/server/vr/VrManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/vr/VrManagerService;->addPersistentStateCallback(Landroid/service/vr/IPersistentVrStateCallbacks;)V
PLcom/android/server/vr/VrManagerService;->addStateCallback(Landroid/service/vr/IVrStateCallbacks;)V
PLcom/android/server/vr/VrManagerService;->consumeAndApplyPendingStateLocked()V
PLcom/android/server/vr/VrManagerService;->consumeAndApplyPendingStateLocked(Z)V
-PLcom/android/server/vr/VrManagerService;->enforceCallerPermission(Ljava/lang/String;)V
-PLcom/android/server/vr/VrManagerService;->formatSettings(Ljava/util/Collection;)Ljava/lang/String;
-PLcom/android/server/vr/VrManagerService;->getNotificationListeners(Landroid/content/ContentResolver;I)Landroid/util/ArraySet;
+PLcom/android/server/vr/VrManagerService;->enforceCallerPermissionAnyOf([Ljava/lang/String;)V
PLcom/android/server/vr/VrManagerService;->getVrMode()Z
PLcom/android/server/vr/VrManagerService;->grantCoarseLocationPermissionIfNeeded(Ljava/lang/String;I)V
PLcom/android/server/vr/VrManagerService;->grantNotificationListenerAccess(Ljava/lang/String;I)V
PLcom/android/server/vr/VrManagerService;->grantNotificationPolicyAccess(Ljava/lang/String;)V
PLcom/android/server/vr/VrManagerService;->isCurrentVrListener(Ljava/lang/String;I)Z
-PLcom/android/server/vr/VrManagerService;->isDefaultAllowed(Ljava/lang/String;)Z
PLcom/android/server/vr/VrManagerService;->isPermissionUserUpdated(Ljava/lang/String;Ljava/lang/String;I)Z
PLcom/android/server/vr/VrManagerService;->onBootPhase(I)V
-PLcom/android/server/vr/VrManagerService;->onEnabledComponentChanged()V
PLcom/android/server/vr/VrManagerService;->onStart()V
PLcom/android/server/vr/VrManagerService;->onStartUser(I)V
-PLcom/android/server/vr/VrManagerService;->setPersistentModeAndNotifyListenersLocked(Z)V
+PLcom/android/server/vr/VrManagerService;->removeStateCallback(Landroid/service/vr/IVrStateCallbacks;)V
PLcom/android/server/vr/VrManagerService;->setScreenOn(Z)V
PLcom/android/server/vr/VrManagerService;->setSleepState(Z)V
-PLcom/android/server/vr/VrManagerService;->setVrMode(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)V
-PLcom/android/server/vr/VrManagerService;->setVrModeAllowedLocked(Z)V
-PLcom/android/server/vr/VrManagerService;->updateCurrentVrServiceLocked(ZLandroid/content/ComponentName;ILandroid/content/ComponentName;)Z
+PLcom/android/server/vr/VrManagerService;->setUserUnlocked()V
+PLcom/android/server/vr/VrManagerService;->updateVrModeAllowedLocked()V
PLcom/android/server/wallpaper/-$Lambda$ZWcNEw3ZwVVSi_pP2mGGLvztkS0;-><init>(BLjava/lang/Object;)V
PLcom/android/server/wallpaper/WallpaperManagerService$1;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
PLcom/android/server/wallpaper/WallpaperManagerService$2;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
@@ -12545,7 +14068,10 @@ PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onStart()V
PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onUnlockUser(I)V
PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->doPackagesChangedLocked(ZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V
PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onSomePackagesChanged()V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Landroid/app/WallpaperInfo;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;)V
@@ -12556,37 +14082,39 @@ PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;-><init>(IL
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->cropExists()Z
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->sourceExists()Z
PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->dataForEvent(ZZ)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;
-PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->onEvent(ILjava/lang/String;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap0(I)Ljava/io/File;
+PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap4(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V
PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap5(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
PLcom/android/server/wallpaper/WallpaperManagerService;-><init>(Landroid/content/Context;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->attachServiceLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->bindWallpaperComponentLocked(Landroid/content/ComponentName;ZZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;->checkPermission(Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->emptyCallbackList(Landroid/os/RemoteCallbackList;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->enforceCallingOrSelfPermissionAndAppOp(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->ensureSaneWallpaperData(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->extractColors(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->getAttributeInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
PLcom/android/server/wallpaper/WallpaperManagerService;->getHeightHint()I
PLcom/android/server/wallpaper/WallpaperManagerService;->getMaximumSizeDimension()I
-PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaper(Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperColors(I)Landroid/app/WallpaperColors;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperColors(II)Landroid/app/WallpaperColors;
PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperDir(I)Ljava/io/File;
-PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperIdForUser(II)I
PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperInfo(I)Landroid/app/WallpaperInfo;
PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperSafeLocked(II)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;
PLcom/android/server/wallpaper/WallpaperManagerService;->getWidthHint()I
PLcom/android/server/wallpaper/WallpaperManagerService;->isWallpaperSupported(Ljava/lang/String;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;->loadSettingsLocked(IZ)V
PLcom/android/server/wallpaper/WallpaperManagerService;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile;
+PLcom/android/server/wallpaper/WallpaperManagerService;->migrateFromOld()V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChanged(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V
PLcom/android/server/wallpaper/WallpaperManagerService;->onUnlockUser(I)V
PLcom/android/server/wallpaper/WallpaperManagerService;->parseWallpaperAttributes(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Z)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V
PLcom/android/server/wallpaper/WallpaperManagerService;->saveSettingsLocked(I)V
PLcom/android/server/wallpaper/WallpaperManagerService;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z
PLcom/android/server/wallpaper/WallpaperManagerService;->switchUser(ILandroid/os/IRemoteCallback;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->switchWallpaper(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)V
PLcom/android/server/wallpaper/WallpaperManagerService;->systemReady()V
+PLcom/android/server/wallpaper/WallpaperManagerService;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V
PLcom/android/server/wallpaper/WallpaperManagerService;->writeWallpaperAttributes(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
PLcom/android/server/webkit/SystemImpl$LazyHolder;->-get0()Lcom/android/server/webkit/SystemImpl;
PLcom/android/server/webkit/SystemImpl;-><init>()V
@@ -12613,8 +14141,10 @@ PLcom/android/server/webkit/WebViewUpdateService$BinderService;->isMultiProcessE
PLcom/android/server/webkit/WebViewUpdateService$BinderService;->notifyRelroCreationCompleted()V
PLcom/android/server/webkit/WebViewUpdateService$BinderService;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
PLcom/android/server/webkit/WebViewUpdateService;->-get0(Lcom/android/server/webkit/WebViewUpdateService;)Lcom/android/server/webkit/WebViewUpdateServiceImpl;
+PLcom/android/server/webkit/WebViewUpdateService;->-wrap0(Landroid/content/Intent;)Ljava/lang/String;
PLcom/android/server/webkit/WebViewUpdateService;-><init>(Landroid/content/Context;)V
PLcom/android/server/webkit/WebViewUpdateService;->onStart()V
+PLcom/android/server/webkit/WebViewUpdateService;->packageNameFromIntent(Landroid/content/Intent;)Ljava/lang/String;
PLcom/android/server/webkit/WebViewUpdateService;->prepareWebViewInSystemServer()V
PLcom/android/server/webkit/WebViewUpdateServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/webkit/SystemInterface;)V
PLcom/android/server/webkit/WebViewUpdateServiceImpl;->existsValidNonFallbackProvider([Landroid/webkit/WebViewProviderInfo;)Z
@@ -12624,9 +14154,11 @@ PLcom/android/server/webkit/WebViewUpdateServiceImpl;->handleNewUser(I)V
PLcom/android/server/webkit/WebViewUpdateServiceImpl;->isDisabledForAllUsers(Ljava/util/List;)Z
PLcom/android/server/webkit/WebViewUpdateServiceImpl;->isMultiProcessEnabled()Z
PLcom/android/server/webkit/WebViewUpdateServiceImpl;->notifyRelroCreationCompleted()V
+PLcom/android/server/webkit/WebViewUpdateServiceImpl;->packageStateChanged(Ljava/lang/String;II)V
PLcom/android/server/webkit/WebViewUpdateServiceImpl;->prepareWebViewInSystemServer()V
PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackState([Landroid/webkit/WebViewProviderInfo;)V
PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackStateOnBoot()V
+PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackStateOnPackageChange(Ljava/lang/String;I)V
PLcom/android/server/webkit/WebViewUpdateServiceImpl;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
PLcom/android/server/webkit/WebViewUpdater$ProviderAndPackageInfo;-><init>(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)V
PLcom/android/server/webkit/WebViewUpdater;-><init>(Landroid/content/Context;Lcom/android/server/webkit/SystemInterface;)V
@@ -12638,45 +14170,46 @@ PLcom/android/server/webkit/WebViewUpdater;->isInstalledAndEnabledForAllUsers(Lj
PLcom/android/server/webkit/WebViewUpdater;->isValidProvider(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)Z
PLcom/android/server/webkit/WebViewUpdater;->notifyRelroCreationCompleted()V
PLcom/android/server/webkit/WebViewUpdater;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/webkit/WebViewUpdater;->packageStateChanged(Ljava/lang/String;I)V
PLcom/android/server/webkit/WebViewUpdater;->prepareWebViewInSystemServer()V
PLcom/android/server/webkit/WebViewUpdater;->providerHasValidSignature(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;Lcom/android/server/webkit/SystemInterface;)Z
PLcom/android/server/webkit/WebViewUpdater;->validityResult(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)I
PLcom/android/server/webkit/WebViewUpdater;->versionCodeGE(II)Z
PLcom/android/server/webkit/WebViewUpdater;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
PLcom/android/server/webkit/WebViewUpdater;->webViewIsReadyLocked()Z
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->$m$0()V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->run()V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$8;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$8;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$8;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;-><init>(Ljava/lang/Object;)V
PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V
+PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;->$m$0()V
+PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;-><init>(ILjava/lang/Object;)V
+PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;->binderDied()V
PLcom/android/server/wifi/-$Lambda$YuIVlKWZZmb4gGMvJqVJEVQ4abs;-><init>(Ljava/lang/Object;)V
PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$1;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V
PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$1;-><init>(Ljava/lang/Object;)V
@@ -12730,26 +14263,22 @@ PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$9;->onValues(Land
PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V
PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;-><init>(Ljava/lang/Object;)V
PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V
+PLcom/android/server/wifi/AggressiveConnectedScore;-><init>(Landroid/content/Context;Lcom/android/server/wifi/Clock;)V
+PLcom/android/server/wifi/AggressiveConnectedScore;->reset()V
PLcom/android/server/wifi/BackupManagerProxy;-><init>()V
PLcom/android/server/wifi/BaseWifiDiagnostics;-><init>(Lcom/android/server/wifi/WifiNative;)V
+PLcom/android/server/wifi/BaseWifiDiagnostics;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/wifi/ByteBufferReader;->readInteger(Ljava/nio/ByteBuffer;Ljava/nio/ByteOrder;I)J
+PLcom/android/server/wifi/CarrierNetworkConfig$1;-><init>(Lcom/android/server/wifi/CarrierNetworkConfig;)V
+PLcom/android/server/wifi/CarrierNetworkConfig;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wifi/CarrierNetworkConfig;->updateNetworkConfig(Landroid/content/Context;)V
PLcom/android/server/wifi/Clock;-><init>()V
-PLcom/android/server/wifi/Clock;->getElapsedSinceBootMillis()J
-PLcom/android/server/wifi/Clock;->getUptimeSinceBootMillis()J
-PLcom/android/server/wifi/Clock;->getWallClockMillis()J
-PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;-><init>()V
-PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;->fromScanResult(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;
-PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;->fromWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;
-PLcom/android/server/wifi/ConfigurationMap$ScanResultMatchInfo;->hashCode()I
PLcom/android/server/wifi/ConfigurationMap;-><init>(Landroid/os/UserManager;)V
PLcom/android/server/wifi/ConfigurationMap;->clear()V
-PLcom/android/server/wifi/ConfigurationMap;->getByScanResultForCurrentUser(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration;
-PLcom/android/server/wifi/ConfigurationMap;->getForCurrentUser(I)Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/ConfigurationMap;->put(Landroid/net/wifi/WifiConfiguration;)Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/ConfigurationMap;->sizeForAllUsers()I
PLcom/android/server/wifi/ConfigurationMap;->valuesForAllUsers()Ljava/util/Collection;
-PLcom/android/server/wifi/ConfigurationMap;->valuesForCurrentUser()Ljava/util/Collection;
+PLcom/android/server/wifi/ConnectedScore;-><init>(Lcom/android/server/wifi/Clock;)V
PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;-><init>()V
PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V
PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->getName()Ljava/lang/String;
@@ -12759,13 +14288,10 @@ PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->serializeData(Lorg/xm
PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->setSsidList(Ljava/util/Set;)V
PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->supportShareData()Z
PLcom/android/server/wifi/DummyLogMessage;-><init>()V
-PLcom/android/server/wifi/DummyLogMessage;->c(J)Lcom/android/server/wifi/WifiLog$LogMessage;
PLcom/android/server/wifi/DummyLogMessage;->c(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
PLcom/android/server/wifi/DummyLogMessage;->c(Z)Lcom/android/server/wifi/WifiLog$LogMessage;
-PLcom/android/server/wifi/DummyLogMessage;->flush()V
PLcom/android/server/wifi/FakeWifiLog;-><init>()V
PLcom/android/server/wifi/FakeWifiLog;->i(Ljava/lang/String;)V
-PLcom/android/server/wifi/FakeWifiLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
PLcom/android/server/wifi/FrameworkFacade;-><init>()V
PLcom/android/server/wifi/FrameworkFacade;->getBatteryService()Lcom/android/internal/app/IBatteryStats;
PLcom/android/server/wifi/FrameworkFacade;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
@@ -12793,7 +14319,6 @@ PLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->hashCode()I
PLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->trigger()V
PLcom/android/server/wifi/HalDeviceManager$ManagerStatusListenerProxy;-><init>(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;Landroid/os/Looper;)V
PLcom/android/server/wifi/HalDeviceManager$ManagerStatusListenerProxy;->action()V
-PLcom/android/server/wifi/HalDeviceManager$Mutable;-><init>()V
PLcom/android/server/wifi/HalDeviceManager$WifiChipInfo;-><init>(Lcom/android/server/wifi/HalDeviceManager;)V
PLcom/android/server/wifi/HalDeviceManager$WifiChipInfo;-><init>(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;)V
PLcom/android/server/wifi/HalDeviceManager$WifiEventCallback;-><init>(Lcom/android/server/wifi/HalDeviceManager;)V
@@ -12803,9 +14328,8 @@ PLcom/android/server/wifi/HalDeviceManager$WifiEventCallback;->onStop()V
PLcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;-><init>(Lcom/android/server/wifi/HalDeviceManager;)V
PLcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;-><init>(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;)V
PLcom/android/server/wifi/HalDeviceManager;->-get0()[I
-PLcom/android/server/wifi/HalDeviceManager;->-set0(Lcom/android/server/wifi/HalDeviceManager;Landroid/hardware/wifi/V1_0/IWifi;)Landroid/hardware/wifi/V1_0/IWifi;
+PLcom/android/server/wifi/HalDeviceManager;->-get1(Lcom/android/server/wifi/HalDeviceManager;)Ljava/lang/Object;
PLcom/android/server/wifi/HalDeviceManager;->-wrap1(Lcom/android/server/wifi/HalDeviceManager;)V
-PLcom/android/server/wifi/HalDeviceManager;->-wrap2(Lcom/android/server/wifi/HalDeviceManager;)V
PLcom/android/server/wifi/HalDeviceManager;-><init>()V
PLcom/android/server/wifi/HalDeviceManager;->canIfaceComboSupportRequest(Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;Landroid/hardware/wifi/V1_0/IWifiChip$ChipMode;[II)Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;
PLcom/android/server/wifi/HalDeviceManager;->compareIfaceCreationData(Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;)Z
@@ -12818,12 +14342,10 @@ PLcom/android/server/wifi/HalDeviceManager;->dispatchAvailableForRequestListener
PLcom/android/server/wifi/HalDeviceManager;->dispatchAvailableForRequestListenersForType(I[Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;)V
PLcom/android/server/wifi/HalDeviceManager;->executeChipReconfiguration(Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;I)Landroid/hardware/wifi/V1_0/IWifiIface;
PLcom/android/server/wifi/HalDeviceManager;->expandIfaceCombos(Landroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;)[[I
-PLcom/android/server/wifi/HalDeviceManager;->getAllChipInfo()[Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;
PLcom/android/server/wifi/HalDeviceManager;->getChip(Landroid/hardware/wifi/V1_0/IWifiIface;)Landroid/hardware/wifi/V1_0/IWifiChip;
PLcom/android/server/wifi/HalDeviceManager;->getName(Landroid/hardware/wifi/V1_0/IWifiIface;)Ljava/lang/String;
PLcom/android/server/wifi/HalDeviceManager;->getServiceManagerMockable()Landroid/hidl/manager/V1_0/IServiceManager;
PLcom/android/server/wifi/HalDeviceManager;->getSupportedIfaceTypes()Ljava/util/Set;
-PLcom/android/server/wifi/HalDeviceManager;->getSupportedIfaceTypesInternal(Landroid/hardware/wifi/V1_0/IWifiChip;)Ljava/util/Set;
PLcom/android/server/wifi/HalDeviceManager;->getWifiServiceMockable()Landroid/hardware/wifi/V1_0/IWifi;
PLcom/android/server/wifi/HalDeviceManager;->initIServiceManagerIfNecessary()V
PLcom/android/server/wifi/HalDeviceManager;->initIWifiChipDebugListeners()V
@@ -12835,18 +14357,18 @@ PLcom/android/server/wifi/HalDeviceManager;->isStarted()Z
PLcom/android/server/wifi/HalDeviceManager;->isSupported()Z
PLcom/android/server/wifi/HalDeviceManager;->isSupportedInternal()Z
PLcom/android/server/wifi/HalDeviceManager;->isWifiStarted()Z
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_13565(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/lang/String;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_16041(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_32051(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33050(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33716(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_34497(Landroid/util/MutableBoolean;Landroid/util/MutableBoolean;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_35435(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_36264(Landroid/util/MutableBoolean;Ljava/lang/String;[Lcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_37240(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_39040(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_40846(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_68740(Lcom/android/server/wifi/HalDeviceManager$Mutable;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_13579(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/lang/String;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_16055(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_32182(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33181(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33847(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_34628(Landroid/util/MutableBoolean;Landroid/util/MutableBoolean;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_35566(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_36395(Landroid/util/MutableBoolean;Ljava/lang/String;[Lcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_37371(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_39171(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_40977(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_68871(Lcom/android/server/wifi/HalDeviceManager$Mutable;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V
PLcom/android/server/wifi/HalDeviceManager;->managerStatusListenerDispatch()V
PLcom/android/server/wifi/HalDeviceManager;->registerStatusListener(Lcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;Landroid/os/Looper;)V
PLcom/android/server/wifi/HalDeviceManager;->start()Z
@@ -12857,19 +14379,20 @@ PLcom/android/server/wifi/HalDeviceManager;->validateInterfaceCache([Lcom/androi
PLcom/android/server/wifi/LastMileLogger;-><init>(Lcom/android/server/wifi/WifiInjector;)V
PLcom/android/server/wifi/LastMileLogger;-><init>(Lcom/android/server/wifi/WifiInjector;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/wifi/LastMileLogger;->disableTracing()V
+PLcom/android/server/wifi/LastMileLogger;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/wifi/LastMileLogger;->dumpInternal(Ljava/io/PrintWriter;Ljava/lang/String;[B)V
PLcom/android/server/wifi/LastMileLogger;->enableTracing()V
PLcom/android/server/wifi/LastMileLogger;->ensureFailSafeIsArmed()Z
PLcom/android/server/wifi/LastMileLogger;->readTrace()[B
PLcom/android/server/wifi/LastMileLogger;->reportConnectionEvent(JB)V
+PLcom/android/server/wifi/LegacyConnectedScore;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;)V
+PLcom/android/server/wifi/LegacyConnectedScore;->reset()V
PLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
PLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(Z)Lcom/android/server/wifi/WifiLog$LogMessage;
-PLcom/android/server/wifi/LogcatLog;->-get0()Z
PLcom/android/server/wifi/LogcatLog;-><init>(Ljava/lang/String;)V
PLcom/android/server/wifi/LogcatLog;->enableVerboseLogging(I)V
PLcom/android/server/wifi/LogcatLog;->err(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
PLcom/android/server/wifi/LogcatLog;->i(Ljava/lang/String;)V
-PLcom/android/server/wifi/LogcatLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
-PLcom/android/server/wifi/LogcatLog;->tC(Ljava/lang/String;)V
PLcom/android/server/wifi/LogcatLog;->wC(Ljava/lang/String;)V
PLcom/android/server/wifi/NetworkListStoreData;-><init>()V
PLcom/android/server/wifi/NetworkListStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V
@@ -12885,11 +14408,29 @@ PLcom/android/server/wifi/NetworkListStoreData;->serializeNetworkList(Lorg/xmlpu
PLcom/android/server/wifi/NetworkListStoreData;->setSharedConfigurations(Ljava/util/List;)V
PLcom/android/server/wifi/NetworkListStoreData;->setUserConfigurations(Ljava/util/List;)V
PLcom/android/server/wifi/NetworkListStoreData;->supportShareData()Z
+PLcom/android/server/wifi/OpenNetworkNotificationBuilder;-><init>(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;)V
+PLcom/android/server/wifi/OpenNetworkNotifier$1;-><init>(Lcom/android/server/wifi/OpenNetworkNotifier;)V
+PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;-><init>(Lcom/android/server/wifi/OpenNetworkNotifier;Landroid/os/Handler;)V
+PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;->getValue()Z
+PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;->register()V
+PLcom/android/server/wifi/OpenNetworkNotifier;->-get0(Lcom/android/server/wifi/OpenNetworkNotifier;)Landroid/content/Context;
+PLcom/android/server/wifi/OpenNetworkNotifier;->-get1(Lcom/android/server/wifi/OpenNetworkNotifier;)Lcom/android/server/wifi/FrameworkFacade;
+PLcom/android/server/wifi/OpenNetworkNotifier;->-set0(Lcom/android/server/wifi/OpenNetworkNotifier;Z)Z
+PLcom/android/server/wifi/OpenNetworkNotifier;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/OpenNetworkRecommender;)V
+PLcom/android/server/wifi/OpenNetworkNotifier;->clearPendingNotification(Z)V
+PLcom/android/server/wifi/OpenNetworkNotifier;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/wifi/OpenNetworkNotifier;->handleScreenStateChanged(Z)V
+PLcom/android/server/wifi/OpenNetworkRecommender;-><init>()V
PLcom/android/server/wifi/RttService$RttServiceImpl$1;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;)V
PLcom/android/server/wifi/RttService$RttServiceImpl$2;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;)V
PLcom/android/server/wifi/RttService$RttServiceImpl$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/Looper;)V
-PLcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V
+PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;->getDescription(I)Ljava/lang/String;
+PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wifi/RttService$RttServiceImpl$ClientInfo;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;Lcom/android/internal/util/AsyncChannel;ILjava/lang/String;)V
+PLcom/android/server/wifi/RttService$RttServiceImpl$ClientInfo;->cleanup()V
+PLcom/android/server/wifi/RttService$RttServiceImpl$RttDeathListener;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/IBinder;Landroid/os/Messenger;)V
+PLcom/android/server/wifi/RttService$RttServiceImpl$RttDeathListener;->binderDied()V
PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$DefaultState;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V
PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V
@@ -12897,49 +14438,34 @@ PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState
PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$InitiatorEnabledState;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V
PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$ResponderEnabledState;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V
-PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-get1(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)Lcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler;
-PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-get2(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)Landroid/net/wifi/IWificond;
-PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-set0(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;Landroid/net/wifi/IClientInterface;)Landroid/net/wifi/IClientInterface;
-PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-set1(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;Lcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler;)Lcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler;
-PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->-set2(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;Landroid/net/wifi/IWificond;)Landroid/net/wifi/IWificond;
PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;-><init>(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/Looper;)V
-PLcom/android/server/wifi/RttService$RttServiceImpl;->-get0(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/util/ArrayMap;
-PLcom/android/server/wifi/RttService$RttServiceImpl;->-get2(Lcom/android/server/wifi/RttService$RttServiceImpl;)Ljava/lang/Object;
-PLcom/android/server/wifi/RttService$RttServiceImpl;->-get4(Lcom/android/server/wifi/RttService$RttServiceImpl;)Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;
-PLcom/android/server/wifi/RttService$RttServiceImpl;->-get5(Lcom/android/server/wifi/RttService$RttServiceImpl;)Lcom/android/server/wifi/WifiInjector;
+PLcom/android/server/wifi/RttService$RttServiceImpl;->-get0(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/util/SparseArray;
+PLcom/android/server/wifi/RttService$RttServiceImpl;->-get1(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/util/ArrayMap;
+PLcom/android/server/wifi/RttService$RttServiceImpl;->-get2(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/content/Context;
+PLcom/android/server/wifi/RttService$RttServiceImpl;->-get3(Lcom/android/server/wifi/RttService$RttServiceImpl;)Ljava/lang/Object;
+PLcom/android/server/wifi/RttService$RttServiceImpl;->-get4(Lcom/android/server/wifi/RttService$RttServiceImpl;)Ljava/util/Queue;
+PLcom/android/server/wifi/RttService$RttServiceImpl;->-get5(Lcom/android/server/wifi/RttService$RttServiceImpl;)Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;
PLcom/android/server/wifi/RttService$RttServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/WifiInjector;)V
+PLcom/android/server/wifi/RttService$RttServiceImpl;->getMessenger(Landroid/os/IBinder;[I)Landroid/os/Messenger;
+PLcom/android/server/wifi/RttService$RttServiceImpl;->lambda$-com_android_server_wifi_RttService$RttServiceImpl_1874(I)V
PLcom/android/server/wifi/RttService$RttServiceImpl;->startService()V
PLcom/android/server/wifi/RttService;-><init>(Landroid/content/Context;)V
PLcom/android/server/wifi/RttService;->onBootPhase(I)V
PLcom/android/server/wifi/RttService;->onStart()V
PLcom/android/server/wifi/SIMAccessor;-><init>(Landroid/content/Context;)V
PLcom/android/server/wifi/SavedNetworkEvaluator;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;Lcom/android/server/wifi/WifiConnectivityHelper;)V
-PLcom/android/server/wifi/SavedNetworkEvaluator;->calculateBssidScore(Landroid/net/wifi/ScanResult;Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;Ljava/lang/StringBuffer;)I
-PLcom/android/server/wifi/SavedNetworkEvaluator;->evaluateNetworks(Ljava/util/List;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;ZZLjava/util/List;)Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/SavedNetworkEvaluator;->getName()Ljava/lang/String;
PLcom/android/server/wifi/SavedNetworkEvaluator;->localLog(Ljava/lang/String;)V
PLcom/android/server/wifi/SavedNetworkEvaluator;->update(Ljava/util/List;)V
-PLcom/android/server/wifi/SavedNetworkEvaluator;->updateSavedNetworkSelectionStatus()V
-PLcom/android/server/wifi/ScanDetail;-><init>(Landroid/net/wifi/ScanResult;Lcom/android/server/wifi/hotspot2/NetworkDetail;)V
-PLcom/android/server/wifi/ScanDetail;->getBSSIDString()Ljava/lang/String;
-PLcom/android/server/wifi/ScanDetail;->getNetworkDetail()Lcom/android/server/wifi/hotspot2/NetworkDetail;
-PLcom/android/server/wifi/ScanDetail;->getSSID()Ljava/lang/String;
-PLcom/android/server/wifi/ScanDetail;->getSeen()J
-PLcom/android/server/wifi/ScanDetail;->setSeen()J
PLcom/android/server/wifi/ScanDetailCache;-><init>(Landroid/net/wifi/WifiConfiguration;II)V
-PLcom/android/server/wifi/ScanDetailCache;->get(Ljava/lang/String;)Landroid/net/wifi/ScanResult;
-PLcom/android/server/wifi/ScanDetailCache;->getScanDetail(Ljava/lang/String;)Lcom/android/server/wifi/ScanDetail;
-PLcom/android/server/wifi/ScanDetailCache;->getVisibility(J)Landroid/net/wifi/WifiConfiguration$Visibility;
-PLcom/android/server/wifi/ScanDetailCache;->put(Lcom/android/server/wifi/ScanDetail;)V
PLcom/android/server/wifi/ScanDetailCache;->size()I
-PLcom/android/server/wifi/ScanDetailCache;->values()Ljava/util/Collection;
+PLcom/android/server/wifi/ScanResultMatchInfo;->fromWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ScanResultMatchInfo;
PLcom/android/server/wifi/ScoredNetworkEvaluator$1;-><init>(Lcom/android/server/wifi/ScoredNetworkEvaluator;Landroid/os/Handler;Lcom/android/server/wifi/FrameworkFacade;Landroid/content/Context;)V
PLcom/android/server/wifi/ScoredNetworkEvaluator$1;->onChange(Z)V
PLcom/android/server/wifi/ScoredNetworkEvaluator;->-set0(Lcom/android/server/wifi/ScoredNetworkEvaluator;Z)Z
PLcom/android/server/wifi/ScoredNetworkEvaluator;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;Landroid/net/NetworkScoreManager;Lcom/android/server/wifi/WifiConfigManager;Landroid/util/LocalLog;Landroid/net/wifi/WifiNetworkScoreCache;)V
PLcom/android/server/wifi/ScoredNetworkEvaluator;->update(Ljava/util/List;)V
-PLcom/android/server/wifi/ScoredNetworkEvaluator;->updateNetworkScoreCache(Ljava/util/List;)V
-PLcom/android/server/wifi/SelfRecovery;-><init>(Lcom/android/server/wifi/WifiController;)V
+PLcom/android/server/wifi/SelfRecovery;-><init>(Lcom/android/server/wifi/WifiController;Lcom/android/server/wifi/Clock;)V
PLcom/android/server/wifi/StateChangeResult;-><init>(ILandroid/net/wifi/WifiSsid;Ljava/lang/String;Landroid/net/wifi/SupplicantState;)V
PLcom/android/server/wifi/StateChangeResult;->toString()Ljava/lang/String;
PLcom/android/server/wifi/StateMachineDeathRecipient;-><init>(Lcom/android/internal/util/StateMachine;I)V
@@ -12986,11 +14512,11 @@ PLcom/android/server/wifi/SupplicantStaIfaceHal;->initSupplicantStaIface()Z
PLcom/android/server/wifi/SupplicantStaIfaceHal;->initialize()Z
PLcom/android/server/wifi/SupplicantStaIfaceHal;->isInitializationComplete()Z
PLcom/android/server/wifi/SupplicantStaIfaceHal;->isInitializationStarted()Z
-PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_11270(Ljava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_12381(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V
-PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_27007(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;)V
-PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_31299(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_47753(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V
+PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_11878(Ljava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_12989(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V
+PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_28917(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;)V
+PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_33278(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_50243(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V
PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToServiceManagerDeath()Z
PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToSupplicantDeath()Z
PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToSupplicantStaIfaceDeath()Z
@@ -13080,6 +14606,7 @@ PLcom/android/server/wifi/SupplicantStateTracker;->-set1(Lcom/android/server/wif
PLcom/android/server/wifi/SupplicantStateTracker;->-wrap2(Lcom/android/server/wifi/SupplicantStateTracker;Landroid/net/wifi/SupplicantState;ZI)V
PLcom/android/server/wifi/SupplicantStateTracker;->-wrap3(Lcom/android/server/wifi/SupplicantStateTracker;Lcom/android/server/wifi/StateChangeResult;)V
PLcom/android/server/wifi/SupplicantStateTracker;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/FrameworkFacade;Landroid/os/Handler;)V
+PLcom/android/server/wifi/SupplicantStateTracker;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/SupplicantStateTracker;->enableVerboseLogging(I)V
PLcom/android/server/wifi/SupplicantStateTracker;->getSupplicantStateName()Ljava/lang/String;
PLcom/android/server/wifi/SupplicantStateTracker;->sendSupplicantStateChangedBroadcast(Landroid/net/wifi/SupplicantState;ZI)V
@@ -13094,33 +14621,23 @@ PLcom/android/server/wifi/WifiApConfigStore;-><init>(Landroid/content/Context;Lc
PLcom/android/server/wifi/WifiApConfigStore;-><init>(Landroid/content/Context;Lcom/android/server/wifi/BackupManagerProxy;Ljava/lang/String;)V
PLcom/android/server/wifi/WifiApConfigStore;->loadApConfiguration(Ljava/lang/String;)Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/WifiBackupRestore;-><init>(Lcom/android/server/wifi/util/WifiPermissionsUtil;)V
+PLcom/android/server/wifi/WifiBackupRestore;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiBackupRestore;->enableVerboseLogging(I)V
PLcom/android/server/wifi/WifiCertManager;-><init>(Landroid/content/Context;)V
PLcom/android/server/wifi/WifiCertManager;-><init>(Landroid/content/Context;Ljava/lang/String;)V
PLcom/android/server/wifi/WifiCertManager;->readConfigFile()[B
PLcom/android/server/wifi/WifiConfigManager$1;-><init>()V
PLcom/android/server/wifi/WifiConfigManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/Clock;Landroid/os/UserManager;Landroid/telephony/TelephonyManager;Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/WifiConfigStore;Lcom/android/server/wifi/WifiConfigStoreLegacy;Lcom/android/server/wifi/util/WifiPermissionsUtil;Lcom/android/server/wifi/util/WifiPermissionsWrapper;Lcom/android/server/wifi/NetworkListStoreData;Lcom/android/server/wifi/DeletedEphemeralSsidsStoreData;)V
-PLcom/android/server/wifi/WifiConfigManager;->addToChannelSetForNetworkFromScanDetailCache(Ljava/util/Set;Lcom/android/server/wifi/ScanDetailCache;JJI)Z
-PLcom/android/server/wifi/WifiConfigManager;->attemptNetworkLinking(Landroid/net/wifi/WifiConfiguration;)V
PLcom/android/server/wifi/WifiConfigManager;->clearInternalData()V
PLcom/android/server/wifi/WifiConfigManager;->clearLastSelectedNetwork()V
-PLcom/android/server/wifi/WifiConfigManager;->clearNetworkCandidateScanResult(I)Z
-PLcom/android/server/wifi/WifiConfigManager;->createExternalWifiConfiguration(Landroid/net/wifi/WifiConfiguration;Z)Landroid/net/wifi/WifiConfiguration;
+PLcom/android/server/wifi/WifiConfigManager;->clearRecentFailureReason(I)V
+PLcom/android/server/wifi/WifiConfigManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiConfigManager;->enableVerboseLogging(I)V
PLcom/android/server/wifi/WifiConfigManager;->fetchChannelSetForNetworkForPartialScan(IJI)Ljava/util/Set;
-PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration;
-PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetail(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration;
-PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetailAndCache(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkWithPassword(I)Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworks()Ljava/util/List;
-PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworks(ZZ)Ljava/util/List;
-PLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration;
-PLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetworks()Ljava/util/Collection;
-PLcom/android/server/wifi/WifiConfigManager;->getLastSelectedNetwork()I
PLcom/android/server/wifi/WifiConfigManager;->getLastSelectedNetworkConfigKey()Ljava/lang/String;
-PLcom/android/server/wifi/WifiConfigManager;->getOrCreateScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ScanDetailCache;
PLcom/android/server/wifi/WifiConfigManager;->getSavedNetworks()Ljava/util/List;
-PLcom/android/server/wifi/WifiConfigManager;->getScanDetailCacheForNetwork(I)Lcom/android/server/wifi/ScanDetailCache;
PLcom/android/server/wifi/WifiConfigManager;->handleUserUnlock(I)V
PLcom/android/server/wifi/WifiConfigManager;->handleUserUnlockOrSwitch(I)V
PLcom/android/server/wifi/WifiConfigManager;->loadFromStore()Z
@@ -13128,23 +14645,16 @@ PLcom/android/server/wifi/WifiConfigManager;->loadFromUserStoreAfterUnlockOrSwit
PLcom/android/server/wifi/WifiConfigManager;->loadInternalData(Ljava/util/List;Ljava/util/List;Ljava/util/Set;)V
PLcom/android/server/wifi/WifiConfigManager;->loadInternalDataFromSharedStore(Ljava/util/List;)V
PLcom/android/server/wifi/WifiConfigManager;->loadInternalDataFromUserStore(Ljava/util/List;Ljava/util/Set;)V
-PLcom/android/server/wifi/WifiConfigManager;->maskPasswordsInWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)V
PLcom/android/server/wifi/WifiConfigManager;->migrateFromLegacyStore()Z
PLcom/android/server/wifi/WifiConfigManager;->needsUnlockedKeyStore()Z
PLcom/android/server/wifi/WifiConfigManager;->resetSimNetworks(Z)V
-PLcom/android/server/wifi/WifiConfigManager;->retrieveHiddenNetworkList()Ljava/util/List;
-PLcom/android/server/wifi/WifiConfigManager;->saveToScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;Lcom/android/server/wifi/ScanDetail;)V
PLcom/android/server/wifi/WifiConfigManager;->saveToStore(Z)Z
PLcom/android/server/wifi/WifiConfigManager;->sendConfiguredNetworkChangedBroadcast(Landroid/net/wifi/WifiConfiguration;I)V
PLcom/android/server/wifi/WifiConfigManager;->sendConfiguredNetworksChangedBroadcast()V
-PLcom/android/server/wifi/WifiConfigManager;->setNetworkCandidateScanResult(ILandroid/net/wifi/ScanResult;I)Z
PLcom/android/server/wifi/WifiConfigManager;->setNetworkStatus(Landroid/net/wifi/WifiConfiguration;I)V
PLcom/android/server/wifi/WifiConfigManager;->setNetworkValidatedInternetAccess(IZ)Z
PLcom/android/server/wifi/WifiConfigManager;->setOnSavedNetworkUpdateListener(Lcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;)V
-PLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(I)Z
-PLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(Landroid/net/wifi/WifiConfiguration;)Z
PLcom/android/server/wifi/WifiConfigManager;->updateNetworkAfterConnect(I)Z
-PLcom/android/server/wifi/WifiConfigManager;->updateScanDetailCacheFromWifiInfo(Landroid/net/wifi/WifiInfo;)V
PLcom/android/server/wifi/WifiConfigStore$1;-><init>(Lcom/android/server/wifi/WifiConfigStore;)V
PLcom/android/server/wifi/WifiConfigStore$1;->onAlarm()V
PLcom/android/server/wifi/WifiConfigStore$StoreFile;-><init>(Ljava/io/File;)V
@@ -13164,7 +14674,6 @@ PLcom/android/server/wifi/WifiConfigStore;->parseDocumentStartAndVersionFromXml(
PLcom/android/server/wifi/WifiConfigStore;->read()V
PLcom/android/server/wifi/WifiConfigStore;->registerStoreData(Lcom/android/server/wifi/WifiConfigStore$StoreData;)Z
PLcom/android/server/wifi/WifiConfigStore;->resetStoreData(Z)V
-PLcom/android/server/wifi/WifiConfigStore;->serializeData(Z)[B
PLcom/android/server/wifi/WifiConfigStore;->startBufferedWriteAlarm()V
PLcom/android/server/wifi/WifiConfigStore;->stopBufferedWriteAlarm()V
PLcom/android/server/wifi/WifiConfigStore;->switchUserStoreAndRead(Lcom/android/server/wifi/WifiConfigStore$StoreFile;)V
@@ -13173,27 +14682,20 @@ PLcom/android/server/wifi/WifiConfigStore;->writeBufferedData()V
PLcom/android/server/wifi/WifiConfigStoreLegacy;-><init>(Lcom/android/server/wifi/WifiNetworkHistory;Lcom/android/server/wifi/WifiNative;Lcom/android/server/net/IpConfigStore;Lcom/android/server/wifi/hotspot2/LegacyPasspointConfigParser;)V
PLcom/android/server/wifi/WifiConfigStoreLegacy;->areStoresPresent()Z
PLcom/android/server/wifi/WifiConfigurationUtil$WifiConfigurationComparator;-><init>()V
-PLcom/android/server/wifi/WifiConfigurationUtil;->hasAnyValidWepKey([Ljava/lang/String;)Z
-PLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForEapNetwork(Landroid/net/wifi/WifiConfiguration;)Z
-PLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForOpenNetwork(Landroid/net/wifi/WifiConfiguration;)Z
-PLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForPskNetwork(Landroid/net/wifi/WifiConfiguration;)Z
-PLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForWepNetwork(Landroid/net/wifi/WifiConfiguration;)Z
PLcom/android/server/wifi/WifiConfigurationUtil;->isSameNetwork(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;)Z
PLcom/android/server/wifi/WifiConfigurationUtil;->isVisibleToAnyProfile(Landroid/net/wifi/WifiConfiguration;Ljava/util/List;)Z
PLcom/android/server/wifi/WifiConnectivityHelper;-><init>(Lcom/android/server/wifi/WifiNative;)V
PLcom/android/server/wifi/WifiConnectivityHelper;->getFirmwareRoamingInfo()Z
PLcom/android/server/wifi/WifiConnectivityHelper;->getMaxNumBlacklistBssid()I
-PLcom/android/server/wifi/WifiConnectivityHelper;->isFirmwareRoamingSupported()Z
PLcom/android/server/wifi/WifiConnectivityHelper;->setFirmwareRoamingConfiguration(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
PLcom/android/server/wifi/WifiConnectivityManager$1;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V
PLcom/android/server/wifi/WifiConnectivityManager$2;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V
+PLcom/android/server/wifi/WifiConnectivityManager$2;->onAlarm()V
PLcom/android/server/wifi/WifiConnectivityManager$3;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V
PLcom/android/server/wifi/WifiConnectivityManager$3;->onAlarm()V
PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V
PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;)V
PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->clearScanDetails()V
-PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V
-PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V
PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onSuccess()V
PLcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;)V
PLcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;)V
@@ -13201,41 +14703,34 @@ PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;-><init>(Lcom/
PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;)V
PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;->resetLowRssiNetworkRetryDelay()V
PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;-><init>(Lcom/android/server/wifi/WifiConnectivityManager;Z)V
-PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V
PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V
PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onSuccess()V
-PLcom/android/server/wifi/WifiConnectivityManager;->-get1(Lcom/android/server/wifi/WifiConnectivityManager;)Z
+PLcom/android/server/wifi/WifiConnectivityManager;->-get10(Lcom/android/server/wifi/WifiConnectivityManager;)Lcom/android/server/wifi/WifiMetrics;
PLcom/android/server/wifi/WifiConnectivityManager;->-get2(Lcom/android/server/wifi/WifiConnectivityManager;)Z
-PLcom/android/server/wifi/WifiConnectivityManager;->-get6(Lcom/android/server/wifi/WifiConnectivityManager;)Z
PLcom/android/server/wifi/WifiConnectivityManager;->-get7(Lcom/android/server/wifi/WifiConnectivityManager;)Z
-PLcom/android/server/wifi/WifiConnectivityManager;->-get8(Lcom/android/server/wifi/WifiConnectivityManager;)Z
PLcom/android/server/wifi/WifiConnectivityManager;->-wrap0(Lcom/android/server/wifi/WifiConnectivityManager;Ljava/util/List;Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiConnectivityManager;->-wrap2(Lcom/android/server/wifi/WifiConnectivityManager;)V
-PLcom/android/server/wifi/WifiConnectivityManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiScanner;Lcom/android/server/wifi/WifiConfigManager;Landroid/net/wifi/WifiInfo;Lcom/android/server/wifi/WifiNetworkSelector;Lcom/android/server/wifi/WifiConnectivityHelper;Lcom/android/server/wifi/WifiLastResortWatchdog;Lcom/android/server/wifi/WifiMetrics;Landroid/os/Looper;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;ZLcom/android/server/wifi/FrameworkFacade;Lcom/android/server/wifi/SavedNetworkEvaluator;Lcom/android/server/wifi/ScoredNetworkEvaluator;Lcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;)V
-PLcom/android/server/wifi/WifiConnectivityManager;->buildBssidBlacklist()Ljava/util/HashSet;
+PLcom/android/server/wifi/WifiConnectivityManager;->-wrap7(Lcom/android/server/wifi/WifiConnectivityManager;)V
+PLcom/android/server/wifi/WifiConnectivityManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiScanner;Lcom/android/server/wifi/WifiConfigManager;Landroid/net/wifi/WifiInfo;Lcom/android/server/wifi/WifiNetworkSelector;Lcom/android/server/wifi/WifiConnectivityHelper;Lcom/android/server/wifi/WifiLastResortWatchdog;Lcom/android/server/wifi/OpenNetworkNotifier;Lcom/android/server/wifi/WifiMetrics;Landroid/os/Looper;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;ZLcom/android/server/wifi/FrameworkFacade;Lcom/android/server/wifi/SavedNetworkEvaluator;Lcom/android/server/wifi/ScoredNetworkEvaluator;Lcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;)V
PLcom/android/server/wifi/WifiConnectivityManager;->cancelPeriodicScanTimer()V
PLcom/android/server/wifi/WifiConnectivityManager;->clearBssidBlacklist()V
-PLcom/android/server/wifi/WifiConnectivityManager;->connectToNetwork(Landroid/net/wifi/WifiConfiguration;)V
+PLcom/android/server/wifi/WifiConnectivityManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiConnectivityManager;->enable(Z)V
PLcom/android/server/wifi/WifiConnectivityManager;->getScanBand(Z)I
PLcom/android/server/wifi/WifiConnectivityManager;->handleConnectionStateChanged(I)V
-PLcom/android/server/wifi/WifiConnectivityManager;->handleScanResults(Ljava/util/List;Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiConnectivityManager;->handleScreenStateChanged(Z)V
-PLcom/android/server/wifi/WifiConnectivityManager;->localLog(Ljava/lang/String;)V
PLcom/android/server/wifi/WifiConnectivityManager;->noteConnectionAttempt(Ljava/lang/Long;)V
PLcom/android/server/wifi/WifiConnectivityManager;->periodicScanTimerHandler()V
PLcom/android/server/wifi/WifiConnectivityManager;->refreshBssidBlacklist()V
PLcom/android/server/wifi/WifiConnectivityManager;->resetLastPeriodicSingleScanTimeStamp()V
PLcom/android/server/wifi/WifiConnectivityManager;->schedulePeriodicScanTimer(I)V
PLcom/android/server/wifi/WifiConnectivityManager;->scheduleWatchdogTimer()V
-PLcom/android/server/wifi/WifiConnectivityManager;->setScanChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)Z
PLcom/android/server/wifi/WifiConnectivityManager;->setUntrustedConnectionAllowed(Z)V
PLcom/android/server/wifi/WifiConnectivityManager;->setWifiEnabled(Z)V
PLcom/android/server/wifi/WifiConnectivityManager;->start()V
PLcom/android/server/wifi/WifiConnectivityManager;->startConnectivityScan(Z)V
PLcom/android/server/wifi/WifiConnectivityManager;->startPeriodicScan(Z)V
PLcom/android/server/wifi/WifiConnectivityManager;->startPeriodicSingleScan()V
-PLcom/android/server/wifi/WifiConnectivityManager;->startSingleScan(Z)V
PLcom/android/server/wifi/WifiConnectivityManager;->stateToString(I)Ljava/lang/String;
PLcom/android/server/wifi/WifiConnectivityManager;->stop()V
PLcom/android/server/wifi/WifiConnectivityManager;->stopConnectivityScan()V
@@ -13244,6 +14739,7 @@ PLcom/android/server/wifi/WifiConnectivityManager;->trackBssid(Ljava/lang/String
PLcom/android/server/wifi/WifiConnectivityManager;->updateBssidBlacklist(Ljava/lang/String;ZI)Z
PLcom/android/server/wifi/WifiConnectivityManager;->updateFirmwareRoamingConfiguration()V
PLcom/android/server/wifi/WifiConnectivityManager;->updateRunningState()V
+PLcom/android/server/wifi/WifiConnectivityManager;->watchdogHandler()V
PLcom/android/server/wifi/WifiController$1;-><init>(Lcom/android/server/wifi/WifiController;)V
PLcom/android/server/wifi/WifiController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wifi/WifiController$2;-><init>(Lcom/android/server/wifi/WifiController;Landroid/os/Handler;)V
@@ -13252,10 +14748,8 @@ PLcom/android/server/wifi/WifiController$4;-><init>(Lcom/android/server/wifi/Wif
PLcom/android/server/wifi/WifiController$ApEnabledState;-><init>(Lcom/android/server/wifi/WifiController;)V
PLcom/android/server/wifi/WifiController$ApStaDisabledState;-><init>(Lcom/android/server/wifi/WifiController;)V
PLcom/android/server/wifi/WifiController$DefaultState;-><init>(Lcom/android/server/wifi/WifiController;)V
-PLcom/android/server/wifi/WifiController$DefaultState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiController$DeviceActiveState;-><init>(Lcom/android/server/wifi/WifiController;)V
PLcom/android/server/wifi/WifiController$DeviceActiveState;->enter()V
-PLcom/android/server/wifi/WifiController$DeviceActiveState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiController$DeviceInactiveState;-><init>(Lcom/android/server/wifi/WifiController;)V
PLcom/android/server/wifi/WifiController$EcmState;-><init>(Lcom/android/server/wifi/WifiController;)V
PLcom/android/server/wifi/WifiController$FullHighPerfLockHeldState;-><init>(Lcom/android/server/wifi/WifiController;)V
@@ -13268,7 +14762,6 @@ PLcom/android/server/wifi/WifiController$StaDisabledWithScanState;->enter()V
PLcom/android/server/wifi/WifiController$StaDisabledWithScanState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiController$StaEnabledState;-><init>(Lcom/android/server/wifi/WifiController;)V
PLcom/android/server/wifi/WifiController$StaEnabledState;->enter()V
-PLcom/android/server/wifi/WifiController$StaEnabledState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiController;->-get12(Lcom/android/server/wifi/WifiController;)J
PLcom/android/server/wifi/WifiController;->-get13(Lcom/android/server/wifi/WifiController;)Z
PLcom/android/server/wifi/WifiController;->-get14(Lcom/android/server/wifi/WifiController;)Lcom/android/server/wifi/WifiSettingsStore;
@@ -13281,6 +14774,7 @@ PLcom/android/server/wifi/WifiController;->-set2(Lcom/android/server/wifi/WifiCo
PLcom/android/server/wifi/WifiController;->-wrap2(Lcom/android/server/wifi/WifiController;Ljava/lang/String;)V
PLcom/android/server/wifi/WifiController;->-wrap3(Lcom/android/server/wifi/WifiController;Ljava/lang/String;)V
PLcom/android/server/wifi/WifiController;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiStateMachine;Lcom/android/server/wifi/WifiSettingsStore;Lcom/android/server/wifi/WifiLockManager;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;)V
+PLcom/android/server/wifi/WifiController;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiController;->initializeAndRegisterForSettingsChange(Landroid/os/Looper;)V
PLcom/android/server/wifi/WifiController;->readStayAwakeConditions()V
PLcom/android/server/wifi/WifiController;->readWifiIdleTime()V
@@ -13291,23 +14785,26 @@ PLcom/android/server/wifi/WifiController;->registerForWifiIdleTimeChange(Landroi
PLcom/android/server/wifi/WifiController;->registerForWifiSleepPolicyChange(Landroid/os/Handler;)V
PLcom/android/server/wifi/WifiCountryCode;-><init>(Lcom/android/server/wifi/WifiNative;Ljava/lang/String;Z)V
PLcom/android/server/wifi/WifiCountryCode;->enableVerboseLogging(I)V
+PLcom/android/server/wifi/WifiCountryCode;->getCountryCodeSentToDriver()Ljava/lang/String;
PLcom/android/server/wifi/WifiCountryCode;->pickCountryCode()Ljava/lang/String;
PLcom/android/server/wifi/WifiCountryCode;->setCountryCodeNative(Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiCountryCode;->setReadyForChange(Z)V
PLcom/android/server/wifi/WifiCountryCode;->simCardRemoved()V
PLcom/android/server/wifi/WifiCountryCode;->updateCountryCode()V
PLcom/android/server/wifi/WifiDiagnostics$1;-><init>(Lcom/android/server/wifi/WifiDiagnostics;)V
-PLcom/android/server/wifi/WifiDiagnostics$1;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V
PLcom/android/server/wifi/WifiDiagnostics$2;-><init>(Lcom/android/server/wifi/WifiDiagnostics;)V
-PLcom/android/server/wifi/WifiDiagnostics$2;->compare(Lcom/android/server/wifi/WifiNative$FateReport;Lcom/android/server/wifi/WifiNative$FateReport;)I
-PLcom/android/server/wifi/WifiDiagnostics$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/wifi/WifiDiagnostics$BugReport;-><init>(Lcom/android/server/wifi/WifiDiagnostics;)V
PLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;-><init>(Lcom/android/server/wifi/WifiDiagnostics;I)V
-PLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->size()I
+PLcom/android/server/wifi/WifiDiagnostics;->-wrap0(Lcom/android/server/wifi/WifiDiagnostics;[B)Ljava/lang/String;
PLcom/android/server/wifi/WifiDiagnostics;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/WifiStateMachine;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/BuildProperties;Lcom/android/server/wifi/LastMileLogger;)V
+PLcom/android/server/wifi/WifiDiagnostics;->captureBugReportData(I)V
PLcom/android/server/wifi/WifiDiagnostics;->clearVerboseLogs()V
+PLcom/android/server/wifi/WifiDiagnostics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/wifi/WifiDiagnostics;->dumpPacketFates(Ljava/io/PrintWriter;)V
PLcom/android/server/wifi/WifiDiagnostics;->enableVerboseLoggingForDogfood()Z
PLcom/android/server/wifi/WifiDiagnostics;->fetchPacketFates()Ljava/util/ArrayList;
PLcom/android/server/wifi/WifiDiagnostics;->fetchRingBuffers()Z
+PLcom/android/server/wifi/WifiDiagnostics;->isVerboseLoggingEnabled()Z
PLcom/android/server/wifi/WifiDiagnostics;->reportConnectionEvent(JB)V
PLcom/android/server/wifi/WifiDiagnostics;->resizeRingBuffers()V
PLcom/android/server/wifi/WifiDiagnostics;->startLogging(Z)V
@@ -13336,7 +14833,6 @@ PLcom/android/server/wifi/WifiInjector;->getWifiMetrics()Lcom/android/server/wif
PLcom/android/server/wifi/WifiInjector;->getWifiMonitor()Lcom/android/server/wifi/WifiMonitor;
PLcom/android/server/wifi/WifiInjector;->getWifiMulticastLockManager()Lcom/android/server/wifi/WifiMulticastLockManager;
PLcom/android/server/wifi/WifiInjector;->getWifiNative()Lcom/android/server/wifi/WifiNative;
-PLcom/android/server/wifi/WifiInjector;->getWifiNotificationController()Lcom/android/server/wifi/WifiNotificationController;
PLcom/android/server/wifi/WifiInjector;->getWifiP2pMonitor()Lcom/android/server/wifi/p2p/WifiP2pMonitor;
PLcom/android/server/wifi/WifiInjector;->getWifiP2pNative()Lcom/android/server/wifi/p2p/WifiP2pNative;
PLcom/android/server/wifi/WifiInjector;->getWifiPermissionsUtil()Lcom/android/server/wifi/util/WifiPermissionsUtil;
@@ -13359,19 +14855,11 @@ PLcom/android/server/wifi/WifiLastResortWatchdog;->clearAllFailureCounts()V
PLcom/android/server/wifi/WifiLastResortWatchdog;->connectedStateTransition(Z)V
PLcom/android/server/wifi/WifiLastResortWatchdog;->enableVerboseLogging(I)V
PLcom/android/server/wifi/WifiLastResortWatchdog;->setWatchdogTriggerEnabled(Z)V
-PLcom/android/server/wifi/WifiLastResortWatchdog;->updateAvailableNetworks(Ljava/util/List;)V
-PLcom/android/server/wifi/WifiLockManager$WifiLock;-><init>(Lcom/android/server/wifi/WifiLockManager;ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)V
PLcom/android/server/wifi/WifiLockManager$WifiLock;->getBinder()Landroid/os/IBinder;
-PLcom/android/server/wifi/WifiLockManager$WifiLock;->unlinkDeathRecipient()V
PLcom/android/server/wifi/WifiLockManager;-><init>(Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;)V
-PLcom/android/server/wifi/WifiLockManager;->acquireWifiLock(ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)Z
-PLcom/android/server/wifi/WifiLockManager;->addLock(Lcom/android/server/wifi/WifiLockManager$WifiLock;)Z
+PLcom/android/server/wifi/WifiLockManager;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/wifi/WifiLockManager;->enableVerboseLogging(I)V
-PLcom/android/server/wifi/WifiLockManager;->findLockByBinder(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock;
PLcom/android/server/wifi/WifiLockManager;->isValidLockMode(I)Z
-PLcom/android/server/wifi/WifiLockManager;->releaseLock(Landroid/os/IBinder;)Z
-PLcom/android/server/wifi/WifiLockManager;->releaseWifiLock(Landroid/os/IBinder;)Z
-PLcom/android/server/wifi/WifiLockManager;->removeLock(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock;
PLcom/android/server/wifi/WifiMetrics$1;-><init>(Lcom/android/server/wifi/WifiMetrics;Landroid/os/Looper;)V
PLcom/android/server/wifi/WifiMetrics$1;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-get1(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;)Ljava/lang/String;
@@ -13385,8 +14873,10 @@ PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set4(Lcom/android/serve
PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set5(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;I)I
PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;-><init>(Lcom/android/server/wifi/WifiMetrics;)V
PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;-><init>(Lcom/android/server/wifi/WifiMetrics;Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;)V
+PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->toString()Ljava/lang/String;
PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->-get0(Lcom/android/server/wifi/WifiMetrics$RouterFingerPrint;)Lcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint;
PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;-><init>(Lcom/android/server/wifi/WifiMetrics;)V
+PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->toString()Ljava/lang/String;
PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->updateFromWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)V
PLcom/android/server/wifi/WifiMetrics;->-get0(Lcom/android/server/wifi/WifiMetrics;)Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;
PLcom/android/server/wifi/WifiMetrics;->-get1(Lcom/android/server/wifi/WifiMetrics;)Ljava/lang/Object;
@@ -13396,28 +14886,32 @@ PLcom/android/server/wifi/WifiMetrics;->-wrap1(Lcom/android/server/wifi/WifiMetr
PLcom/android/server/wifi/WifiMetrics;-><init>(Lcom/android/server/wifi/Clock;Landroid/os/Looper;Lcom/android/server/wifi/aware/WifiAwareMetrics;)V
PLcom/android/server/wifi/WifiMetrics;->addStaEvent(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;)V
PLcom/android/server/wifi/WifiMetrics;->bitSetToInt(Ljava/util/BitSet;)I
+PLcom/android/server/wifi/WifiMetrics;->configInfoToString(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo;)Ljava/lang/String;
PLcom/android/server/wifi/WifiMetrics;->createConfigInfo(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo;
PLcom/android/server/wifi/WifiMetrics;->endConnectionEvent(II)V
PLcom/android/server/wifi/WifiMetrics;->getHandler()Landroid/os/Handler;
-PLcom/android/server/wifi/WifiMetrics;->handlePollResult(Landroid/net/wifi/WifiInfo;)V
+PLcom/android/server/wifi/WifiMetrics;->getScanReturnEntry(I)I
+PLcom/android/server/wifi/WifiMetrics;->getSystemStateCount(IZ)I
PLcom/android/server/wifi/WifiMetrics;->incrementNonEmptyScanResultCount()V
PLcom/android/server/wifi/WifiMetrics;->incrementOneshotScanCount()V
-PLcom/android/server/wifi/WifiMetrics;->incrementRssiPollRssiCount(I)V
-PLcom/android/server/wifi/WifiMetrics;->incrementScanReturnEntry(II)V
-PLcom/android/server/wifi/WifiMetrics;->incrementWifiScoreCount(I)V
-PLcom/android/server/wifi/WifiMetrics;->incrementWifiSystemScanStateCount(IZ)V
PLcom/android/server/wifi/WifiMetrics;->logStaEvent(I)V
PLcom/android/server/wifi/WifiMetrics;->logStaEvent(IILandroid/net/wifi/WifiConfiguration;)V
PLcom/android/server/wifi/WifiMetrics;->logStaEvent(ILandroid/net/wifi/WifiConfiguration;)V
-PLcom/android/server/wifi/WifiMetrics;->maybeIncrementRssiDeltaCount(I)V
PLcom/android/server/wifi/WifiMetrics;->processMessage(Landroid/os/Message;)V
PLcom/android/server/wifi/WifiMetrics;->setConnectionScanDetail(Lcom/android/server/wifi/ScanDetail;)V
+PLcom/android/server/wifi/WifiMetrics;->setPasspointManager(Lcom/android/server/wifi/hotspot2/PasspointManager;)V
PLcom/android/server/wifi/WifiMetrics;->setScreenState(Z)V
+PLcom/android/server/wifi/WifiMetrics;->setWifiConfigManager(Lcom/android/server/wifi/WifiConfigManager;)V
+PLcom/android/server/wifi/WifiMetrics;->setWifiNetworkSelector(Lcom/android/server/wifi/WifiNetworkSelector;)V
PLcom/android/server/wifi/WifiMetrics;->setWifiState(I)V
+PLcom/android/server/wifi/WifiMetrics;->staEventToString(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;)Ljava/lang/String;
PLcom/android/server/wifi/WifiMetrics;->startConnectionEvent(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V
+PLcom/android/server/wifi/WifiMetrics;->supplicantStateChangesBitmaskToString(I)Ljava/lang/String;
PLcom/android/server/wifi/WifiMetrics;->supplicantStateToBit(Landroid/net/wifi/SupplicantState;)I
PLcom/android/server/wifi/WifiMetrics;->updateMetricsFromNetworkDetail(Lcom/android/server/wifi/hotspot2/NetworkDetail;)V
PLcom/android/server/wifi/WifiMetrics;->updateMetricsFromScanResult(Landroid/net/wifi/ScanResult;)V
+PLcom/android/server/wifi/WifiMetrics;->updateSavedNetworks(Ljava/util/List;)V
+PLcom/android/server/wifi/WifiMetrics;->updateSavedPasspointProfiles(II)V
PLcom/android/server/wifi/WifiMonitor;-><init>(Lcom/android/server/wifi/WifiInjector;)V
PLcom/android/server/wifi/WifiMonitor;->broadcastAssociatedBssidEvent(Ljava/lang/String;Ljava/lang/String;)V
PLcom/android/server/wifi/WifiMonitor;->broadcastNetworkConnectionEvent(Ljava/lang/String;ILjava/lang/String;)V
@@ -13427,12 +14921,8 @@ PLcom/android/server/wifi/WifiMonitor;->broadcastSupplicantDisconnectionEvent(Lj
PLcom/android/server/wifi/WifiMonitor;->broadcastSupplicantStateChangeEvent(Ljava/lang/String;ILandroid/net/wifi/WifiSsid;Ljava/lang/String;Landroid/net/wifi/SupplicantState;)V
PLcom/android/server/wifi/WifiMonitor;->enableVerboseLogging(I)V
PLcom/android/server/wifi/WifiMonitor;->ensureConnectedLocked()Z
-PLcom/android/server/wifi/WifiMonitor;->isMonitoring(Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiMonitor;->registerHandler(Ljava/lang/String;ILandroid/os/Handler;)V
-PLcom/android/server/wifi/WifiMonitor;->sendMessage(Landroid/os/Handler;Landroid/os/Message;)V
-PLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;I)V
PLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;IIILjava/lang/Object;)V
-PLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;Landroid/os/Message;)V
PLcom/android/server/wifi/WifiMonitor;->setMonitoring(Ljava/lang/String;Z)V
PLcom/android/server/wifi/WifiMonitor;->setMonitoringNone()V
PLcom/android/server/wifi/WifiMonitor;->startMonitoring(Ljava/lang/String;Z)V
@@ -13442,21 +14932,25 @@ PLcom/android/server/wifi/WifiMulticastLockManager$Multicaster;->getUid()I
PLcom/android/server/wifi/WifiMulticastLockManager$Multicaster;->unlinkDeathRecipient()V
PLcom/android/server/wifi/WifiMulticastLockManager;-><init>(Lcom/android/server/wifi/WifiMulticastLockManager$FilterController;Lcom/android/internal/app/IBatteryStats;)V
PLcom/android/server/wifi/WifiMulticastLockManager;->acquireLock(Landroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/wifi/WifiMulticastLockManager;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/wifi/WifiMulticastLockManager;->enableVerboseLogging(I)V
PLcom/android/server/wifi/WifiMulticastLockManager;->releaseLock()V
PLcom/android/server/wifi/WifiMulticastLockManager;->removeMulticasterLocked(II)V
PLcom/android/server/wifi/WifiNative$BucketSettings;-><init>()V
PLcom/android/server/wifi/WifiNative$ChannelSettings;-><init>()V
-PLcom/android/server/wifi/WifiNative$FateReport;-><init>(BJB[B)V
-PLcom/android/server/wifi/WifiNative$FateReport;->convertDriverTimestampUSecToWallclockMSec(J)J
-PLcom/android/server/wifi/WifiNative$RingBufferStatus;-><init>()V
+PLcom/android/server/wifi/WifiNative$FateReport;->getTableHeader()Ljava/lang/String;
PLcom/android/server/wifi/WifiNative$RoamingCapabilities;-><init>()V
PLcom/android/server/wifi/WifiNative$RoamingConfig;-><init>()V
PLcom/android/server/wifi/WifiNative$RxFateReport;-><init>(BJB[B)V
+PLcom/android/server/wifi/WifiNative$RxFateReport;->directionToString()Ljava/lang/String;
+PLcom/android/server/wifi/WifiNative$RxFateReport;->fateToString()Ljava/lang/String;
+PLcom/android/server/wifi/WifiNative$RxFateReport;->toTableRowString()Ljava/lang/String;
PLcom/android/server/wifi/WifiNative$ScanCapabilities;-><init>()V
PLcom/android/server/wifi/WifiNative$ScanSettings;-><init>()V
-PLcom/android/server/wifi/WifiNative$SignalPollResult;-><init>()V
PLcom/android/server/wifi/WifiNative$TxFateReport;-><init>(BJB[B)V
+PLcom/android/server/wifi/WifiNative$TxFateReport;->directionToString()Ljava/lang/String;
+PLcom/android/server/wifi/WifiNative$TxFateReport;->fateToString()Ljava/lang/String;
+PLcom/android/server/wifi/WifiNative$TxFateReport;->toTableRowString()Ljava/lang/String;
PLcom/android/server/wifi/WifiNative;-><init>(Ljava/lang/String;Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/SupplicantStaIfaceHal;Lcom/android/server/wifi/WificondControl;)V
PLcom/android/server/wifi/WifiNative;->configureNeighborDiscoveryOffload(Z)Z
PLcom/android/server/wifi/WifiNative;->configureRoaming(Lcom/android/server/wifi/WifiNative$RoamingConfig;)Z
@@ -13468,22 +14962,22 @@ PLcom/android/server/wifi/WifiNative;->enableSupplicant()Z
PLcom/android/server/wifi/WifiNative;->enableVerboseLogging(I)V
PLcom/android/server/wifi/WifiNative;->getApfCapabilities()Landroid/net/apf/ApfCapabilities;
PLcom/android/server/wifi/WifiNative;->getBgScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z
-PLcom/android/server/wifi/WifiNative;->getChannelsForBand(I)[I
PLcom/android/server/wifi/WifiNative;->getDriverVersion()Ljava/lang/String;
PLcom/android/server/wifi/WifiNative;->getFirmwareVersion()Ljava/lang/String;
PLcom/android/server/wifi/WifiNative;->getFrameworkNetworkId(I)I
PLcom/android/server/wifi/WifiNative;->getInterfaceName()Ljava/lang/String;
PLcom/android/server/wifi/WifiNative;->getMacAddress()Ljava/lang/String;
+PLcom/android/server/wifi/WifiNative;->getRingBufferData(Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiNative;->getRingBufferStatus()[Lcom/android/server/wifi/WifiNative$RingBufferStatus;
PLcom/android/server/wifi/WifiNative;->getRoamingCapabilities(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;)Z
PLcom/android/server/wifi/WifiNative;->getRxPktFates([Lcom/android/server/wifi/WifiNative$RxFateReport;)Z
-PLcom/android/server/wifi/WifiNative;->getScanResults()Ljava/util/ArrayList;
PLcom/android/server/wifi/WifiNative;->getSupportedFeatureSet()I
PLcom/android/server/wifi/WifiNative;->getSupportedLoggerFeatureSet()I
PLcom/android/server/wifi/WifiNative;->getTxPktFates([Lcom/android/server/wifi/WifiNative$TxFateReport;)Z
-PLcom/android/server/wifi/WifiNative;->getWifiLinkLayerStats(Ljava/lang/String;)Landroid/net/wifi/WifiLinkLayerStats;
+PLcom/android/server/wifi/WifiNative;->getWlanWakeReasonCount()Landroid/net/wifi/WifiWakeReasonAndCounts;
PLcom/android/server/wifi/WifiNative;->initializeVendorHal(Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;)Z
PLcom/android/server/wifi/WifiNative;->installPacketFilter([B)Z
+PLcom/android/server/wifi/WifiNative;->readKernelLog()Ljava/lang/String;
PLcom/android/server/wifi/WifiNative;->removeAllNetworks()Z
PLcom/android/server/wifi/WifiNative;->scan(Ljava/util/Set;Ljava/util/Set;)Z
PLcom/android/server/wifi/WifiNative;->setBluetoothCoexistenceMode(I)Z
@@ -13504,8 +14998,7 @@ PLcom/android/server/wifi/WifiNative;->setScanningMacOui([B)Z
PLcom/android/server/wifi/WifiNative;->setSerialNumber(Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiNative;->setSupplicantLogLevel(Z)V
PLcom/android/server/wifi/WifiNative;->setSuspendOptimizations(Z)Z
-PLcom/android/server/wifi/WifiNative;->setupForClientMode()Landroid/net/wifi/IClientInterface;
-PLcom/android/server/wifi/WifiNative;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult;
+PLcom/android/server/wifi/WifiNative;->setupForClientMode()Landroid/util/Pair;
PLcom/android/server/wifi/WifiNative;->startHalIfNecessary(Z)Z
PLcom/android/server/wifi/WifiNative;->startLoggingRingBuffer(IIIILjava/lang/String;)Z
PLcom/android/server/wifi/WifiNative;->startPktFateMonitoring()Z
@@ -13513,57 +15006,24 @@ PLcom/android/server/wifi/WifiNative;->stopFilteringMulticastV4Packets()Z
PLcom/android/server/wifi/WifiNative;->stopFilteringMulticastV6Packets()Z
PLcom/android/server/wifi/WifiNative;->stopHalIfNecessary()V
PLcom/android/server/wifi/WifiNative;->stopRssiMonitoring()I
-PLcom/android/server/wifi/WifiNative;->tearDown()Z
+PLcom/android/server/wifi/WifiNative;->tearDown()V
PLcom/android/server/wifi/WifiNetworkHistory;-><init>(Landroid/content/Context;Lcom/android/server/net/DelayedDiskWrite;)V
PLcom/android/server/wifi/WifiNetworkSelector;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;)V
-PLcom/android/server/wifi/WifiNetworkSelector;->getFilteredScanDetails()Ljava/util/List;
-PLcom/android/server/wifi/WifiNetworkSelector;->isCurrentNetworkSufficient(Landroid/net/wifi/WifiInfo;)Z
-PLcom/android/server/wifi/WifiNetworkSelector;->isNetworkSelectionNeeded(Ljava/util/List;Landroid/net/wifi/WifiInfo;ZZ)Z
-PLcom/android/server/wifi/WifiNetworkSelector;->localLog(Ljava/lang/String;)V
+PLcom/android/server/wifi/WifiNetworkSelector;->getConnectableScanDetails()Ljava/util/List;
PLcom/android/server/wifi/WifiNetworkSelector;->overrideCandidateWithUserConnectChoice(Landroid/net/wifi/WifiConfiguration;)Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/WifiNetworkSelector;->registerNetworkEvaluator(Lcom/android/server/wifi/WifiNetworkSelector$NetworkEvaluator;I)Z
-PLcom/android/server/wifi/WifiNetworkSelector;->selectNetwork(Ljava/util/List;Ljava/util/HashSet;Landroid/net/wifi/WifiInfo;ZZZ)Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/WifiNetworkSelector;->toNetworkString(Landroid/net/wifi/WifiConfiguration;)Ljava/lang/String;
-PLcom/android/server/wifi/WifiNetworkSelector;->toScanId(Landroid/net/wifi/ScanResult;)Ljava/lang/String;
-PLcom/android/server/wifi/WifiNotificationController$1;->-getandroid-net-NetworkInfo$DetailedStateSwitchesValues()[I
-PLcom/android/server/wifi/WifiNotificationController$1;-><init>(Lcom/android/server/wifi/WifiNotificationController;)V
-PLcom/android/server/wifi/WifiNotificationController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/wifi/WifiNotificationController$NotificationEnabledSettingObserver;-><init>(Lcom/android/server/wifi/WifiNotificationController;Landroid/os/Handler;)V
-PLcom/android/server/wifi/WifiNotificationController$NotificationEnabledSettingObserver;->getValue()Z
-PLcom/android/server/wifi/WifiNotificationController$NotificationEnabledSettingObserver;->register()V
-PLcom/android/server/wifi/WifiNotificationController;->-get0(Lcom/android/server/wifi/WifiNotificationController;)Landroid/content/Context;
-PLcom/android/server/wifi/WifiNotificationController;->-get1(Lcom/android/server/wifi/WifiNotificationController;)Landroid/net/NetworkInfo$DetailedState;
-PLcom/android/server/wifi/WifiNotificationController;->-get2(Lcom/android/server/wifi/WifiNotificationController;)Lcom/android/server/wifi/FrameworkFacade;
-PLcom/android/server/wifi/WifiNotificationController;->-get3(Lcom/android/server/wifi/WifiNotificationController;)Landroid/net/NetworkInfo;
-PLcom/android/server/wifi/WifiNotificationController;->-get4(Lcom/android/server/wifi/WifiNotificationController;)Lcom/android/server/wifi/WifiInjector;
-PLcom/android/server/wifi/WifiNotificationController;->-get5(Lcom/android/server/wifi/WifiNotificationController;)Landroid/net/wifi/WifiScanner;
-PLcom/android/server/wifi/WifiNotificationController;->-set0(Lcom/android/server/wifi/WifiNotificationController;Landroid/net/NetworkInfo$DetailedState;)Landroid/net/NetworkInfo$DetailedState;
-PLcom/android/server/wifi/WifiNotificationController;->-set1(Lcom/android/server/wifi/WifiNotificationController;Landroid/net/NetworkInfo;)Landroid/net/NetworkInfo;
-PLcom/android/server/wifi/WifiNotificationController;->-set2(Lcom/android/server/wifi/WifiNotificationController;Z)Z
-PLcom/android/server/wifi/WifiNotificationController;->-set3(Lcom/android/server/wifi/WifiNotificationController;Landroid/net/wifi/WifiScanner;)Landroid/net/wifi/WifiScanner;
-PLcom/android/server/wifi/WifiNotificationController;->-set4(Lcom/android/server/wifi/WifiNotificationController;I)I
-PLcom/android/server/wifi/WifiNotificationController;->-wrap0(Lcom/android/server/wifi/WifiNotificationController;Landroid/net/NetworkInfo;Ljava/util/List;)V
-PLcom/android/server/wifi/WifiNotificationController;->-wrap1(Lcom/android/server/wifi/WifiNotificationController;)V
-PLcom/android/server/wifi/WifiNotificationController;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;Landroid/app/Notification$Builder;Lcom/android/server/wifi/WifiInjector;)V
-PLcom/android/server/wifi/WifiNotificationController;->checkAndSetNotification(Landroid/net/NetworkInfo;Ljava/util/List;)V
-PLcom/android/server/wifi/WifiNotificationController;->resetNotification()V
-PLcom/android/server/wifi/WifiNotificationController;->setNotificationVisible(ZIZI)V
PLcom/android/server/wifi/WifiScoreReport;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;)V
-PLcom/android/server/wifi/WifiScoreReport;->calculateAndReportScore(Landroid/net/wifi/WifiInfo;Landroid/net/NetworkAgent;ILcom/android/server/wifi/WifiMetrics;)V
-PLcom/android/server/wifi/WifiScoreReport;->calculateScore(Landroid/net/wifi/WifiInfo;I)I
+PLcom/android/server/wifi/WifiScoreReport;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiScoreReport;->enableVerboseLogging(Z)V
-PLcom/android/server/wifi/WifiScoreReport;->isHomeNetwork(Landroid/net/wifi/WifiInfo;)Z
-PLcom/android/server/wifi/WifiScoreReport;->logLinkMetrics(Landroid/net/wifi/WifiInfo;)V
-PLcom/android/server/wifi/WifiScoreReport;->multiBandScanResults(Landroid/net/wifi/WifiInfo;)Z
PLcom/android/server/wifi/WifiScoreReport;->reset()V
-PLcom/android/server/wifi/WifiScoreReport;->updateScoringState(Landroid/net/wifi/WifiInfo;I)V
PLcom/android/server/wifi/WifiService;-><init>(Landroid/content/Context;)V
PLcom/android/server/wifi/WifiService;->onBootPhase(I)V
PLcom/android/server/wifi/WifiService;->onStart()V
PLcom/android/server/wifi/WifiService;->onUnlockUser(I)V
PLcom/android/server/wifi/WifiServiceImpl$1;-><init>(Lcom/android/server/wifi/WifiServiceImpl;)V
-PLcom/android/server/wifi/WifiServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wifi/WifiServiceImpl$2;-><init>(Lcom/android/server/wifi/WifiServiceImpl;)V
+PLcom/android/server/wifi/WifiServiceImpl$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wifi/WifiServiceImpl$3;-><init>(Lcom/android/server/wifi/WifiServiceImpl;)V
PLcom/android/server/wifi/WifiServiceImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wifi/WifiServiceImpl$4;-><init>(Lcom/android/server/wifi/WifiServiceImpl;)V
@@ -13583,20 +15043,15 @@ PLcom/android/server/wifi/WifiServiceImpl;->-get4(Lcom/android/server/wifi/WifiS
PLcom/android/server/wifi/WifiServiceImpl;->-set0(Lcom/android/server/wifi/WifiServiceImpl;Lcom/android/internal/util/AsyncChannel;)Lcom/android/internal/util/AsyncChannel;
PLcom/android/server/wifi/WifiServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiInjector;Lcom/android/internal/util/AsyncChannel;)V
PLcom/android/server/wifi/WifiServiceImpl;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V
-PLcom/android/server/wifi/WifiServiceImpl;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
PLcom/android/server/wifi/WifiServiceImpl;->checkAndStartWifi()V
-PLcom/android/server/wifi/WifiServiceImpl;->checkNetworkSettingsPermission()Z
+PLcom/android/server/wifi/WifiServiceImpl;->checkNetworkSettingsPermission(II)Z
+PLcom/android/server/wifi/WifiServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiServiceImpl;->enableVerboseLoggingInternal(I)V
-PLcom/android/server/wifi/WifiServiceImpl;->enforceAccessPermission()V
PLcom/android/server/wifi/WifiServiceImpl;->enforceChangePermission()V
PLcom/android/server/wifi/WifiServiceImpl;->enforceMulticastChangePermission()V
-PLcom/android/server/wifi/WifiServiceImpl;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/wifi/WifiServiceImpl;->getDhcpInfo()Landroid/net/DhcpInfo;
-PLcom/android/server/wifi/WifiServiceImpl;->getScanResults(Ljava/lang/String;)Ljava/util/List;
PLcom/android/server/wifi/WifiServiceImpl;->getSupportedFeatures()I
PLcom/android/server/wifi/WifiServiceImpl;->getVerboseLoggingLevel()I
PLcom/android/server/wifi/WifiServiceImpl;->getWifiApEnabledState()I
-PLcom/android/server/wifi/WifiServiceImpl;->getWifiEnabledState()I
PLcom/android/server/wifi/WifiServiceImpl;->getWifiServiceMessenger()Landroid/os/Messenger;
PLcom/android/server/wifi/WifiServiceImpl;->handleUserUnlock(I)V
PLcom/android/server/wifi/WifiServiceImpl;->isRequestFromBackground(Ljava/lang/String;)Z
@@ -13606,21 +15061,20 @@ PLcom/android/server/wifi/WifiServiceImpl;->registerForBroadcasts()V
PLcom/android/server/wifi/WifiServiceImpl;->registerForPackageOrUserRemoval()V
PLcom/android/server/wifi/WifiServiceImpl;->registerForScanModeChange()V
PLcom/android/server/wifi/WifiServiceImpl;->releaseMulticastLock()V
-PLcom/android/server/wifi/WifiServiceImpl;->releaseWifiLock(Landroid/os/IBinder;)Z
-PLcom/android/server/wifi/WifiServiceImpl;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo;
-PLcom/android/server/wifi/WifiServiceImpl;->requestActivityInfo(Landroid/os/ResultReceiver;)V
PLcom/android/server/wifi/WifiServiceImpl;->setWifiEnabled(Ljava/lang/String;Z)Z
PLcom/android/server/wifi/WifiServiceImpl;->startScan(Landroid/net/wifi/ScanSettings;Landroid/os/WorkSource;Ljava/lang/String;)V
PLcom/android/server/wifi/WifiServiceImpl;->updateBackgroundThrottleInterval()V
PLcom/android/server/wifi/WifiServiceImpl;->updateBackgroundThrottlingWhitelist()V
PLcom/android/server/wifi/WifiSettingsStore;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wifi/WifiSettingsStore;->getLocationModeSetting(Landroid/content/Context;)I
+PLcom/android/server/wifi/WifiSettingsStore;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiSettingsStore;->getPersistedAirplaneModeOn()Z
PLcom/android/server/wifi/WifiSettingsStore;->getPersistedScanAlwaysAvailable()Z
PLcom/android/server/wifi/WifiSettingsStore;->getPersistedWifiState()I
PLcom/android/server/wifi/WifiSettingsStore;->getWifiSavedState()I
+PLcom/android/server/wifi/WifiSettingsStore;->handleAirplaneModeToggled()Z
PLcom/android/server/wifi/WifiSettingsStore;->handleWifiToggled(Z)Z
PLcom/android/server/wifi/WifiSettingsStore;->isAirplaneModeOn()Z
+PLcom/android/server/wifi/WifiSettingsStore;->isAirplaneSensitive()Z
PLcom/android/server/wifi/WifiSettingsStore;->isScanAlwaysAvailable()Z
PLcom/android/server/wifi/WifiSettingsStore;->isWifiToggleEnabled()Z
PLcom/android/server/wifi/WifiSettingsStore;->persistWifiState(I)V
@@ -13630,17 +15084,13 @@ PLcom/android/server/wifi/WifiStateMachine$2;-><init>(Lcom/android/server/wifi/W
PLcom/android/server/wifi/WifiStateMachine$3;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wifi/WifiStateMachine$4;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
-PLcom/android/server/wifi/WifiStateMachine$4;->onFullResult(Landroid/net/wifi/ScanResult;)V
PLcom/android/server/wifi/WifiStateMachine$4;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V
PLcom/android/server/wifi/WifiStateMachine$4;->onSuccess()V
PLcom/android/server/wifi/WifiStateMachine$ConnectModeState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->enter()V
-PLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiStateMachine$ConnectedState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$ConnectedState;->enter()V
-PLcom/android/server/wifi/WifiStateMachine$ConnectedState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiStateMachine$DefaultState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
-PLcom/android/server/wifi/WifiStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;->enter()V
PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;->exit()V
@@ -13660,7 +15110,6 @@ PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->onProvisioningSuc
PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->setNeighborDiscoveryOffload(Z)V
PLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->enter()V
-PLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;->enter()V
PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;->processMessage(Landroid/os/Message;)Z
@@ -13671,82 +15120,74 @@ PLcom/android/server/wifi/WifiStateMachine$ScanModeState;->processMessage(Landro
PLcom/android/server/wifi/WifiStateMachine$SoftApState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->enter()V
-PLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;->initializeWpsDetails()V
PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiStateMachine$SupplicantStoppingState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;-><init>(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V
-PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V
PLcom/android/server/wifi/WifiStateMachine$WaitForP2pDisableState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;-><init>(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;)V
PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;->networkStatus(ILjava/lang/String;)V
PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;->setSignalStrengthThresholds([I)V
PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;-><init>(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V
-PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V
+PLcom/android/server/wifi/WifiStateMachine$WifiPhoneStateListener;-><init>(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;)V
PLcom/android/server/wifi/WifiStateMachine$WpsRunningState;-><init>(Lcom/android/server/wifi/WifiStateMachine;)V
-PLcom/android/server/wifi/WifiStateMachine;->-get0(Lcom/android/server/wifi/WifiStateMachine;)I
PLcom/android/server/wifi/WifiStateMachine;->-get10(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/StateMachineDeathRecipient;
PLcom/android/server/wifi/WifiStateMachine;->-get11(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
-PLcom/android/server/wifi/WifiStateMachine;->-get14(Lcom/android/server/wifi/WifiStateMachine;)Z
PLcom/android/server/wifi/WifiStateMachine;->-get17(Lcom/android/server/wifi/WifiStateMachine;)Z
+PLcom/android/server/wifi/WifiStateMachine;->-get18(Lcom/android/server/wifi/WifiStateMachine;)Z
PLcom/android/server/wifi/WifiStateMachine;->-get2(Lcom/android/server/wifi/WifiStateMachine;)Z
-PLcom/android/server/wifi/WifiStateMachine;->-get20(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
-PLcom/android/server/wifi/WifiStateMachine;->-get21(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/ip/IpManager;
-PLcom/android/server/wifi/WifiStateMachine;->-get23(Lcom/android/server/wifi/WifiStateMachine;)Z
-PLcom/android/server/wifi/WifiStateMachine;->-get24(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
-PLcom/android/server/wifi/WifiStateMachine;->-get26(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get27(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/LinkProperties;
-PLcom/android/server/wifi/WifiStateMachine;->-get28(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;
-PLcom/android/server/wifi/WifiStateMachine;->-get29(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkCapabilities;
+PLcom/android/server/wifi/WifiStateMachine;->-get21(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
+PLcom/android/server/wifi/WifiStateMachine;->-get22(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/ip/IpManager;
+PLcom/android/server/wifi/WifiStateMachine;->-get24(Lcom/android/server/wifi/WifiStateMachine;)Z
+PLcom/android/server/wifi/WifiStateMachine;->-get25(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
+PLcom/android/server/wifi/WifiStateMachine;->-get27(Lcom/android/server/wifi/WifiStateMachine;)I
+PLcom/android/server/wifi/WifiStateMachine;->-get28(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/LinkProperties;
PLcom/android/server/wifi/WifiStateMachine;->-get3(Lcom/android/server/wifi/WifiStateMachine;)Ljava/util/Queue;
-PLcom/android/server/wifi/WifiStateMachine;->-get30(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkInfo;
-PLcom/android/server/wifi/WifiStateMachine;->-get31(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkMisc;
-PLcom/android/server/wifi/WifiStateMachine;->-get32(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get33(Lcom/android/server/wifi/WifiStateMachine;)Landroid/os/INetworkManagementService;
-PLcom/android/server/wifi/WifiStateMachine;->-get34(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
-PLcom/android/server/wifi/WifiStateMachine;->-get35(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get36(Lcom/android/server/wifi/WifiStateMachine;)Ljava/util/concurrent/atomic/AtomicBoolean;
-PLcom/android/server/wifi/WifiStateMachine;->-get37(Lcom/android/server/wifi/WifiStateMachine;)Z
-PLcom/android/server/wifi/WifiStateMachine;->-get39(Lcom/android/server/wifi/WifiStateMachine;)I
+PLcom/android/server/wifi/WifiStateMachine;->-get30(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkCapabilities;
+PLcom/android/server/wifi/WifiStateMachine;->-get31(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkInfo;
+PLcom/android/server/wifi/WifiStateMachine;->-get32(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkMisc;
+PLcom/android/server/wifi/WifiStateMachine;->-get33(Lcom/android/server/wifi/WifiStateMachine;)I
+PLcom/android/server/wifi/WifiStateMachine;->-get34(Lcom/android/server/wifi/WifiStateMachine;)Landroid/os/INetworkManagementService;
+PLcom/android/server/wifi/WifiStateMachine;->-get35(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
+PLcom/android/server/wifi/WifiStateMachine;->-get36(Lcom/android/server/wifi/WifiStateMachine;)I
+PLcom/android/server/wifi/WifiStateMachine;->-get37(Lcom/android/server/wifi/WifiStateMachine;)Ljava/util/concurrent/atomic/AtomicBoolean;
+PLcom/android/server/wifi/WifiStateMachine;->-get38(Lcom/android/server/wifi/WifiStateMachine;)Z
PLcom/android/server/wifi/WifiStateMachine;->-get4(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/IClientInterface;
PLcom/android/server/wifi/WifiStateMachine;->-get40(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get41(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
-PLcom/android/server/wifi/WifiStateMachine;->-get42(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/PropertyService;
-PLcom/android/server/wifi/WifiStateMachine;->-get45(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get46(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
-PLcom/android/server/wifi/WifiStateMachine;->-get47(Lcom/android/server/wifi/WifiStateMachine;)Z
+PLcom/android/server/wifi/WifiStateMachine;->-get42(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
+PLcom/android/server/wifi/WifiStateMachine;->-get43(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/PropertyService;
+PLcom/android/server/wifi/WifiStateMachine;->-get47(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
+PLcom/android/server/wifi/WifiStateMachine;->-get48(Lcom/android/server/wifi/WifiStateMachine;)Z
PLcom/android/server/wifi/WifiStateMachine;->-get5(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/Clock;
-PLcom/android/server/wifi/WifiStateMachine;->-get50(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
PLcom/android/server/wifi/WifiStateMachine;->-get51(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
-PLcom/android/server/wifi/WifiStateMachine;->-get52(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/SupplicantStateTracker;
-PLcom/android/server/wifi/WifiStateMachine;->-get54(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get56(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get57(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
+PLcom/android/server/wifi/WifiStateMachine;->-get52(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
+PLcom/android/server/wifi/WifiStateMachine;->-get53(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/SupplicantStateTracker;
+PLcom/android/server/wifi/WifiStateMachine;->-get55(Lcom/android/server/wifi/WifiStateMachine;)I
+PLcom/android/server/wifi/WifiStateMachine;->-get57(Lcom/android/server/wifi/WifiStateMachine;)I
PLcom/android/server/wifi/WifiStateMachine;->-get58(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
-PLcom/android/server/wifi/WifiStateMachine;->-get59(Lcom/android/server/wifi/WifiStateMachine;)Z
+PLcom/android/server/wifi/WifiStateMachine;->-get59(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String;
PLcom/android/server/wifi/WifiStateMachine;->-get6(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State;
-PLcom/android/server/wifi/WifiStateMachine;->-get61(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get63(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;
-PLcom/android/server/wifi/WifiStateMachine;->-get64(Lcom/android/server/wifi/WifiStateMachine;)Z
-PLcom/android/server/wifi/WifiStateMachine;->-get66(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConfigManager;
-PLcom/android/server/wifi/WifiStateMachine;->-get68(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConnectivityManager;
-PLcom/android/server/wifi/WifiStateMachine;->-get69(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/BaseWifiDiagnostics;
+PLcom/android/server/wifi/WifiStateMachine;->-get60(Lcom/android/server/wifi/WifiStateMachine;)Z
+PLcom/android/server/wifi/WifiStateMachine;->-get62(Lcom/android/server/wifi/WifiStateMachine;)I
+PLcom/android/server/wifi/WifiStateMachine;->-get64(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;
+PLcom/android/server/wifi/WifiStateMachine;->-get67(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConfigManager;
+PLcom/android/server/wifi/WifiStateMachine;->-get69(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConnectivityManager;
PLcom/android/server/wifi/WifiStateMachine;->-get7(Lcom/android/server/wifi/WifiStateMachine;)I
-PLcom/android/server/wifi/WifiStateMachine;->-get70(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiInfo;
-PLcom/android/server/wifi/WifiStateMachine;->-get71(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiInjector;
-PLcom/android/server/wifi/WifiStateMachine;->-get73(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMetrics;
-PLcom/android/server/wifi/WifiStateMachine;->-get74(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMonitor;
-PLcom/android/server/wifi/WifiStateMachine;->-get75(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative;
-PLcom/android/server/wifi/WifiStateMachine;->-get76(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/AsyncChannel;
-PLcom/android/server/wifi/WifiStateMachine;->-get77(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/Object;
-PLcom/android/server/wifi/WifiStateMachine;->-get78(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiScanner;
-PLcom/android/server/wifi/WifiStateMachine;->-get79(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiScoreReport;
+PLcom/android/server/wifi/WifiStateMachine;->-get70(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/BaseWifiDiagnostics;
+PLcom/android/server/wifi/WifiStateMachine;->-get72(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiInjector;
+PLcom/android/server/wifi/WifiStateMachine;->-get75(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMonitor;
+PLcom/android/server/wifi/WifiStateMachine;->-get76(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative;
+PLcom/android/server/wifi/WifiStateMachine;->-get77(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/AsyncChannel;
+PLcom/android/server/wifi/WifiStateMachine;->-get78(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/Object;
+PLcom/android/server/wifi/WifiStateMachine;->-get79(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiScanner;
PLcom/android/server/wifi/WifiStateMachine;->-get8(Lcom/android/server/wifi/WifiStateMachine;)Landroid/content/Context;
-PLcom/android/server/wifi/WifiStateMachine;->-get80(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateTracker;
-PLcom/android/server/wifi/WifiStateMachine;->-get83(Lcom/android/server/wifi/WifiStateMachine;)Z
+PLcom/android/server/wifi/WifiStateMachine;->-get81(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateTracker;
+PLcom/android/server/wifi/WifiStateMachine;->-get85(Lcom/android/server/wifi/WifiStateMachine;)Z
PLcom/android/server/wifi/WifiStateMachine;->-get9(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiCountryCode;
PLcom/android/server/wifi/WifiStateMachine;->-set1(Lcom/android/server/wifi/WifiStateMachine;J)J
PLcom/android/server/wifi/WifiStateMachine;->-set10(Lcom/android/server/wifi/WifiStateMachine;Z)Z
@@ -13773,47 +15214,45 @@ PLcom/android/server/wifi/WifiStateMachine;->-set7(Lcom/android/server/wifi/Wifi
PLcom/android/server/wifi/WifiStateMachine;->-set8(Lcom/android/server/wifi/WifiStateMachine;Z)Z
PLcom/android/server/wifi/WifiStateMachine;->-set9(Lcom/android/server/wifi/WifiStateMachine;Z)Z
PLcom/android/server/wifi/WifiStateMachine;->-wrap0(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;)Landroid/net/wifi/SupplicantState;
-PLcom/android/server/wifi/WifiStateMachine;->-wrap10(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z
-PLcom/android/server/wifi/WifiStateMachine;->-wrap11(Lcom/android/server/wifi/WifiStateMachine;I)I
-PLcom/android/server/wifi/WifiStateMachine;->-wrap14(Lcom/android/server/wifi/WifiStateMachine;I)Ljava/lang/String;
-PLcom/android/server/wifi/WifiStateMachine;->-wrap18(Lcom/android/server/wifi/WifiStateMachine;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap10(Lcom/android/server/wifi/WifiStateMachine;)Z
+PLcom/android/server/wifi/WifiStateMachine;->-wrap11(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z
+PLcom/android/server/wifi/WifiStateMachine;->-wrap12(Lcom/android/server/wifi/WifiStateMachine;I)I
PLcom/android/server/wifi/WifiStateMachine;->-wrap19(Lcom/android/server/wifi/WifiStateMachine;)V
PLcom/android/server/wifi/WifiStateMachine;->-wrap21(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/DhcpResults;)V
PLcom/android/server/wifi/WifiStateMachine;->-wrap25(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;)V
PLcom/android/server/wifi/WifiStateMachine;->-wrap27(Lcom/android/server/wifi/WifiStateMachine;)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap29(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;Lcom/android/internal/util/State;)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap33(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;II)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap34(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;ILjava/lang/Object;)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap35(Lcom/android/server/wifi/WifiStateMachine;II)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap36(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap37(Lcom/android/server/wifi/WifiStateMachine;)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap38(Lcom/android/server/wifi/WifiStateMachine;Ljava/lang/String;)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap40(Lcom/android/server/wifi/WifiStateMachine;Z)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap41(Lcom/android/server/wifi/WifiStateMachine;)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap43(Lcom/android/server/wifi/WifiStateMachine;IZ)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap45(Lcom/android/server/wifi/WifiStateMachine;I)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap46(Lcom/android/server/wifi/WifiStateMachine;)V
-PLcom/android/server/wifi/WifiStateMachine;->-wrap47(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/LinkProperties;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap33(Lcom/android/server/wifi/WifiStateMachine;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap35(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;II)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap36(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;ILjava/lang/Object;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap37(Lcom/android/server/wifi/WifiStateMachine;II)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap38(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap39(Lcom/android/server/wifi/WifiStateMachine;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap40(Lcom/android/server/wifi/WifiStateMachine;Ljava/lang/String;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap42(Lcom/android/server/wifi/WifiStateMachine;Z)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap43(Lcom/android/server/wifi/WifiStateMachine;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap45(Lcom/android/server/wifi/WifiStateMachine;IZ)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap47(Lcom/android/server/wifi/WifiStateMachine;I)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap48(Lcom/android/server/wifi/WifiStateMachine;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap49(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/LinkProperties;)V
PLcom/android/server/wifi/WifiStateMachine;->-wrap5(Lcom/android/server/wifi/WifiStateMachine;)Z
-PLcom/android/server/wifi/WifiStateMachine;->-wrap7(Lcom/android/server/wifi/WifiStateMachine;I)Z
-PLcom/android/server/wifi/WifiStateMachine;->-wrap8(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/NetworkInfo$DetailedState;)Z
-PLcom/android/server/wifi/WifiStateMachine;->-wrap9(Lcom/android/server/wifi/WifiStateMachine;)Z
-PLcom/android/server/wifi/WifiStateMachine;-><init>(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;Landroid/os/Looper;Landroid/os/UserManager;Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/BackupManagerProxy;Lcom/android/server/wifi/WifiCountryCode;Lcom/android/server/wifi/WifiNative;)V
+PLcom/android/server/wifi/WifiStateMachine;->-wrap8(Lcom/android/server/wifi/WifiStateMachine;I)Z
+PLcom/android/server/wifi/WifiStateMachine;->-wrap9(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/NetworkInfo$DetailedState;)Z
+PLcom/android/server/wifi/WifiStateMachine;-><init>(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;Landroid/os/Looper;Landroid/os/UserManager;Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/BackupManagerProxy;Lcom/android/server/wifi/WifiCountryCode;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WrongPasswordNotifier;)V
PLcom/android/server/wifi/WifiStateMachine;->checkAndSetConnectivityInstance()V
PLcom/android/server/wifi/WifiStateMachine;->clearANQPCache()V
PLcom/android/server/wifi/WifiStateMachine;->clearTargetBssid(Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiStateMachine;->configureVerboseHalLogging(Z)V
PLcom/android/server/wifi/WifiStateMachine;->doNetworkStatus(I)V
+PLcom/android/server/wifi/WifiStateMachine;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/wifi/WifiStateMachine;->dumpIpManager(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiStateMachine;->enableRssiPolling(Z)V
PLcom/android/server/wifi/WifiStateMachine;->enableVerboseLogging(I)V
-PLcom/android/server/wifi/WifiStateMachine;->fetchRssiLinkSpeedAndFrequencyNative()V
PLcom/android/server/wifi/WifiStateMachine;->getAdditionalWifiServiceInterfaces()V
PLcom/android/server/wifi/WifiStateMachine;->getCurrentScanResult()Landroid/net/wifi/ScanResult;
PLcom/android/server/wifi/WifiStateMachine;->getCurrentWifiConfiguration()Landroid/net/wifi/WifiConfiguration;
PLcom/android/server/wifi/WifiStateMachine;->getLinkPropertiesSummary(Landroid/net/LinkProperties;)Ljava/lang/String;
-PLcom/android/server/wifi/WifiStateMachine;->getLogRecString(Landroid/os/Message;)Ljava/lang/String;
PLcom/android/server/wifi/WifiStateMachine;->getNetworkDetailedState()Landroid/net/NetworkInfo$DetailedState;
-PLcom/android/server/wifi/WifiStateMachine;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats;
+PLcom/android/server/wifi/WifiStateMachine;->getWifiScoreReport()Lcom/android/server/wifi/WifiScoreReport;
PLcom/android/server/wifi/WifiStateMachine;->handleIPv4Success(Landroid/net/DhcpResults;)V
PLcom/android/server/wifi/WifiStateMachine;->handlePostDhcpSetup()V
PLcom/android/server/wifi/WifiStateMachine;->handlePreDhcpSetup()V
@@ -13824,18 +15263,16 @@ PLcom/android/server/wifi/WifiStateMachine;->handleSupplicantStateChange(Landroi
PLcom/android/server/wifi/WifiStateMachine;->handleUserUnlock(I)V
PLcom/android/server/wifi/WifiStateMachine;->hasConnectionRequests()Z
PLcom/android/server/wifi/WifiStateMachine;->isConnected()Z
-PLcom/android/server/wifi/WifiStateMachine;->isDisconnected()Z
PLcom/android/server/wifi/WifiStateMachine;->isLinkDebouncing()Z
PLcom/android/server/wifi/WifiStateMachine;->isSupplicantTransientState()Z
PLcom/android/server/wifi/WifiStateMachine;->log(Ljava/lang/String;)V
-PLcom/android/server/wifi/WifiStateMachine;->logStateAndMessage(Landroid/os/Message;Lcom/android/internal/util/State;)V
PLcom/android/server/wifi/WifiStateMachine;->logd(Ljava/lang/String;)V
PLcom/android/server/wifi/WifiStateMachine;->lookupFrameworkNetworkId(I)I
PLcom/android/server/wifi/WifiStateMachine;->maybeRegisterNetworkFactory()V
+PLcom/android/server/wifi/WifiStateMachine;->maybeRegisterPhoneListener()V
PLcom/android/server/wifi/WifiStateMachine;->obtainMessageWithWhatAndArg2(Landroid/os/Message;I)Landroid/os/Message;
PLcom/android/server/wifi/WifiStateMachine;->p2pSendMessage(I)Z
PLcom/android/server/wifi/WifiStateMachine;->p2pSendMessage(II)Z
-PLcom/android/server/wifi/WifiStateMachine;->recordLogRec(Landroid/os/Message;)Z
PLcom/android/server/wifi/WifiStateMachine;->registerConnected()V
PLcom/android/server/wifi/WifiStateMachine;->reloadTlsNetworksAndReconnect()V
PLcom/android/server/wifi/WifiStateMachine;->replyToMessage(Landroid/os/Message;II)V
@@ -13853,15 +15290,13 @@ PLcom/android/server/wifi/WifiStateMachine;->setHighPerfModeEnabled(Z)V
PLcom/android/server/wifi/WifiStateMachine;->setNetworkDetailedState(Landroid/net/NetworkInfo$DetailedState;)Z
PLcom/android/server/wifi/WifiStateMachine;->setOperationalMode(I)V
PLcom/android/server/wifi/WifiStateMachine;->setRandomMacOui()Z
-PLcom/android/server/wifi/WifiStateMachine;->setScanResults()V
PLcom/android/server/wifi/WifiStateMachine;->setSupplicantLogLevel()V
PLcom/android/server/wifi/WifiStateMachine;->setSupplicantRunning(Z)V
PLcom/android/server/wifi/WifiStateMachine;->setSuspendOptimizations(IZ)V
PLcom/android/server/wifi/WifiStateMachine;->setSuspendOptimizationsNative(IZ)V
PLcom/android/server/wifi/WifiStateMachine;->setTargetBssid(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiStateMachine;->setWifiState(I)V
-PLcom/android/server/wifi/WifiStateMachine;->smToString(I)Ljava/lang/String;
-PLcom/android/server/wifi/WifiStateMachine;->smToString(Landroid/os/Message;)Ljava/lang/String;
+PLcom/android/server/wifi/WifiStateMachine;->shouldEvaluateWhetherToSendExplicitlySelected(Landroid/net/wifi/WifiConfiguration;)Z
PLcom/android/server/wifi/WifiStateMachine;->startConnectToNetwork(ILjava/lang/String;)V
PLcom/android/server/wifi/WifiStateMachine;->startFilteringMulticastPackets()V
PLcom/android/server/wifi/WifiStateMachine;->startScan(IILandroid/net/wifi/ScanSettings;Landroid/os/WorkSource;)V
@@ -13874,36 +15309,33 @@ PLcom/android/server/wifi/WifiStateMachine;->syncGetDhcpResults()Landroid/net/Dh
PLcom/android/server/wifi/WifiStateMachine;->syncGetLinkLayerStats(Lcom/android/internal/util/AsyncChannel;)Landroid/net/wifi/WifiLinkLayerStats;
PLcom/android/server/wifi/WifiStateMachine;->syncGetSupportedFeatures(Lcom/android/internal/util/AsyncChannel;)I
PLcom/android/server/wifi/WifiStateMachine;->syncGetWifiApState()I
-PLcom/android/server/wifi/WifiStateMachine;->syncGetWifiState()I
+PLcom/android/server/wifi/WifiStateMachine;->syncGetWifiStateByName()Ljava/lang/String;
PLcom/android/server/wifi/WifiStateMachine;->syncInitialize(Lcom/android/internal/util/AsyncChannel;)Z
PLcom/android/server/wifi/WifiStateMachine;->updateBatteryWorkSource(Landroid/os/WorkSource;)V
+PLcom/android/server/wifi/WifiStateMachine;->updateCapabilities()V
PLcom/android/server/wifi/WifiStateMachine;->updateCapabilities(Landroid/net/wifi/WifiConfiguration;)V
-PLcom/android/server/wifi/WifiStateMachine;->updateDefaultRouteMacAddress(I)Ljava/lang/String;
PLcom/android/server/wifi/WifiStateMachine;->updateLinkProperties(Landroid/net/LinkProperties;)V
+PLcom/android/server/wifi/WifiStateMachine;->updateWifiMetrics()V
PLcom/android/server/wifi/WifiStateTracker;-><init>(Lcom/android/internal/app/IBatteryStats;)V
PLcom/android/server/wifi/WifiStateTracker;->informWifiStateBatteryStats(I)V
PLcom/android/server/wifi/WifiStateTracker;->updateState(I)V
PLcom/android/server/wifi/WifiTrafficPoller$1;-><init>(Lcom/android/server/wifi/WifiTrafficPoller;)V
PLcom/android/server/wifi/WifiTrafficPoller$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wifi/WifiTrafficPoller$TrafficHandler;-><init>(Lcom/android/server/wifi/WifiTrafficPoller;Landroid/os/Looper;)V
-PLcom/android/server/wifi/WifiTrafficPoller$TrafficHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/wifi/WifiTrafficPoller;->-get0(Lcom/android/server/wifi/WifiTrafficPoller;)Ljava/util/List;
PLcom/android/server/wifi/WifiTrafficPoller;->-get1(Lcom/android/server/wifi/WifiTrafficPoller;)Z
-PLcom/android/server/wifi/WifiTrafficPoller;->-get3(Lcom/android/server/wifi/WifiTrafficPoller;)I
PLcom/android/server/wifi/WifiTrafficPoller;->-get4(Lcom/android/server/wifi/WifiTrafficPoller;)Z
PLcom/android/server/wifi/WifiTrafficPoller;->-set0(Lcom/android/server/wifi/WifiTrafficPoller;Z)Z
PLcom/android/server/wifi/WifiTrafficPoller;->-set1(Lcom/android/server/wifi/WifiTrafficPoller;Landroid/net/NetworkInfo;)Landroid/net/NetworkInfo;
PLcom/android/server/wifi/WifiTrafficPoller;->-set2(Lcom/android/server/wifi/WifiTrafficPoller;I)I
PLcom/android/server/wifi/WifiTrafficPoller;->-wrap0(Lcom/android/server/wifi/WifiTrafficPoller;)V
-PLcom/android/server/wifi/WifiTrafficPoller;->-wrap1(Lcom/android/server/wifi/WifiTrafficPoller;)V
PLcom/android/server/wifi/WifiTrafficPoller;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;)V
PLcom/android/server/wifi/WifiTrafficPoller;->addClient(Landroid/os/Messenger;)V
+PLcom/android/server/wifi/WifiTrafficPoller;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/WifiTrafficPoller;->evaluateTrafficStatsPolling()V
-PLcom/android/server/wifi/WifiTrafficPoller;->notifyOnDataActivity()V
-PLcom/android/server/wifi/WifiVendorHal$1AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
-PLcom/android/server/wifi/WifiVendorHal$4AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
PLcom/android/server/wifi/WifiVendorHal$5AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
PLcom/android/server/wifi/WifiVendorHal$6AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
+PLcom/android/server/wifi/WifiVendorHal$9AnswerBox;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
PLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
PLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;-><init>(Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/WifiVendorHal$ChipEventCallback;)V
PLcom/android/server/wifi/WifiVendorHal$HalDeviceManagerStatusListener;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
@@ -13913,50 +15345,42 @@ PLcom/android/server/wifi/WifiVendorHal$RttEventCallback;-><init>(Lcom/android/s
PLcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;-><init>(Lcom/android/server/wifi/WifiVendorHal;)V
PLcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;-><init>(Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;)V
PLcom/android/server/wifi/WifiVendorHal;->-get1(Lcom/android/server/wifi/WifiVendorHal;)Lcom/android/server/wifi/HalDeviceManager;
-PLcom/android/server/wifi/WifiVendorHal;->-get2(Lcom/android/server/wifi/WifiVendorHal;)Landroid/os/Handler;
-PLcom/android/server/wifi/WifiVendorHal;->-get3(Lcom/android/server/wifi/WifiVendorHal;)Lcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;
PLcom/android/server/wifi/WifiVendorHal;->-get7()Landroid/net/apf/ApfCapabilities;
-PLcom/android/server/wifi/WifiVendorHal;->-wrap3(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;)Lcom/android/server/wifi/WifiNative$RingBufferStatus;
PLcom/android/server/wifi/WifiVendorHal;-><init>(Lcom/android/server/wifi/HalDeviceManager;Landroid/os/Looper;)V
PLcom/android/server/wifi/WifiVendorHal;->boolResult(Z)Z
PLcom/android/server/wifi/WifiVendorHal;->configureNeighborDiscoveryOffload(Z)Z
PLcom/android/server/wifi/WifiVendorHal;->configureRoaming(Lcom/android/server/wifi/WifiNative$RoamingConfig;)Z
PLcom/android/server/wifi/WifiVendorHal;->enableLinkLayerStats()V
PLcom/android/server/wifi/WifiVendorHal;->enableVerboseLogging(Z)V
-PLcom/android/server/wifi/WifiVendorHal;->enter(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage;
PLcom/android/server/wifi/WifiVendorHal;->getApfCapabilities()Landroid/net/apf/ApfCapabilities;
PLcom/android/server/wifi/WifiVendorHal;->getBgScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z
-PLcom/android/server/wifi/WifiVendorHal;->getChannelsForBand(I)[I
PLcom/android/server/wifi/WifiVendorHal;->getDriverVersion()Ljava/lang/String;
PLcom/android/server/wifi/WifiVendorHal;->getFirmwareVersion()Ljava/lang/String;
+PLcom/android/server/wifi/WifiVendorHal;->getRingBufferData(Ljava/lang/String;)Z
PLcom/android/server/wifi/WifiVendorHal;->getRingBufferStatus()[Lcom/android/server/wifi/WifiNative$RingBufferStatus;
PLcom/android/server/wifi/WifiVendorHal;->getRoamingCapabilities(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;)Z
PLcom/android/server/wifi/WifiVendorHal;->getRxPktFates([Lcom/android/server/wifi/WifiNative$RxFateReport;)Z
-PLcom/android/server/wifi/WifiVendorHal;->getSupportedFeatureSet()I
PLcom/android/server/wifi/WifiVendorHal;->getSupportedLoggerFeatureSet()I
PLcom/android/server/wifi/WifiVendorHal;->getTxPktFates([Lcom/android/server/wifi/WifiNative$TxFateReport;)Z
-PLcom/android/server/wifi/WifiVendorHal;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats;
+PLcom/android/server/wifi/WifiVendorHal;->getWlanWakeReasonCount()Landroid/net/wifi/WifiWakeReasonAndCounts;
PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkPktFateFrameType(I)B
PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkRxPktFate(I)B
PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkTxPktFate(I)B
+PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkWakeReasons(Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)Landroid/net/wifi/WifiWakeReasonAndCounts;
PLcom/android/server/wifi/WifiVendorHal;->initialize(Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;)Z
PLcom/android/server/wifi/WifiVendorHal;->installPacketFilter([B)Z
-PLcom/android/server/wifi/WifiVendorHal;->intArrayFromArrayList(Ljava/util/ArrayList;)[I
+PLcom/android/server/wifi/WifiVendorHal;->intsFromArrayList(Ljava/util/ArrayList;)[I
PLcom/android/server/wifi/WifiVendorHal;->isVendorHalSupported()Z
PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_15968(Lcom/android/server/wifi/WifiNative$ScanCapabilities;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_25531(Lcom/android/server/wifi/WifiVendorHal$1AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_32084(Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_54711(Lcom/android/server/wifi/WifiVendorHal$4AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_57111(Lcom/android/server/wifi/WifiVendorHal$5AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_64028(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_66971(Lcom/android/server/wifi/WifiVendorHal$6AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_73803([Lcom/android/server/wifi/WifiNative$TxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_75590([Lcom/android/server/wifi/WifiNative$RxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
-PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_84658(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V
+PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_33324(Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_33628(Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V
+PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_58656(Lcom/android/server/wifi/WifiVendorHal$5AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V
+PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_65573(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V
+PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_68516(Lcom/android/server/wifi/WifiVendorHal$6AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_84576(Lcom/android/server/wifi/WifiVendorHal$9AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V
+PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_86203(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V
PLcom/android/server/wifi/WifiVendorHal;->makeRingBufferStatusArray(Ljava/util/ArrayList;)[Lcom/android/server/wifi/WifiNative$RingBufferStatus;
-PLcom/android/server/wifi/WifiVendorHal;->makeWifiBandFromFrameworkBand(I)I
PLcom/android/server/wifi/WifiVendorHal;->niceMethodName([Ljava/lang/StackTraceElement;I)Ljava/lang/String;
-PLcom/android/server/wifi/WifiVendorHal;->ok(Landroid/hardware/wifi/V1_0/WifiStatus;)Z
PLcom/android/server/wifi/WifiVendorHal;->registerChipCallback()Z
PLcom/android/server/wifi/WifiVendorHal;->registerRttEventCallback()Z
PLcom/android/server/wifi/WifiVendorHal;->registerStaIfaceCallback()Z
@@ -13967,48 +15391,33 @@ PLcom/android/server/wifi/WifiVendorHal;->startLoggingRingBuffer(IIIILjava/lang/
PLcom/android/server/wifi/WifiVendorHal;->startPktFateMonitoring()Z
PLcom/android/server/wifi/WifiVendorHal;->startVendorHal(Z)Z
PLcom/android/server/wifi/WifiVendorHal;->stopRssiMonitoring()I
-PLcom/android/server/wifi/WifiVendorHal;->wifiFeatureMaskFromStaCapabilities(I)I
+PLcom/android/server/wifi/WifiVendorHal;->wifiFeatureMaskFromChipCapabilities(I)I
PLcom/android/server/wifi/WificondControl$PnoScanEventHandler;-><init>(Lcom/android/server/wifi/WificondControl;)V
PLcom/android/server/wifi/WificondControl$PnoScanEventHandler;-><init>(Lcom/android/server/wifi/WificondControl;Lcom/android/server/wifi/WificondControl$PnoScanEventHandler;)V
PLcom/android/server/wifi/WificondControl$ScanEventHandler;-><init>(Lcom/android/server/wifi/WificondControl;)V
PLcom/android/server/wifi/WificondControl$ScanEventHandler;-><init>(Lcom/android/server/wifi/WificondControl;Lcom/android/server/wifi/WificondControl$ScanEventHandler;)V
-PLcom/android/server/wifi/WificondControl$ScanEventHandler;->OnScanResultReady()V
PLcom/android/server/wifi/WificondControl;->-get0(Lcom/android/server/wifi/WificondControl;)Ljava/lang/String;
PLcom/android/server/wifi/WificondControl;->-get1(Lcom/android/server/wifi/WificondControl;)Lcom/android/server/wifi/WifiMonitor;
-PLcom/android/server/wifi/WificondControl;-><init>(Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/WifiMonitor;)V
+PLcom/android/server/wifi/WificondControl;-><init>(Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/WifiMonitor;Lcom/android/server/wifi/CarrierNetworkConfig;)V
PLcom/android/server/wifi/WificondControl;->abortScan()V
PLcom/android/server/wifi/WificondControl;->enableSupplicant()Z
PLcom/android/server/wifi/WificondControl;->enableVerboseLogging(Z)V
-PLcom/android/server/wifi/WificondControl;->scan(Ljava/util/Set;Ljava/util/Set;)Z
PLcom/android/server/wifi/WificondControl;->setupDriverForClientMode()Landroid/net/wifi/IClientInterface;
-PLcom/android/server/wifi/WificondControl;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult;
PLcom/android/server/wifi/WificondControl;->tearDownInterfaces()Z
+PLcom/android/server/wifi/WrongPasswordNotifier;-><init>(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;)V
+PLcom/android/server/wifi/WrongPasswordNotifier;->onNewConnectionAttempt()V
PLcom/android/server/wifi/aware/WifiAwareMetrics$HistParms;-><init>(IIIII)V
PLcom/android/server/wifi/aware/WifiAwareMetrics;-><init>(Lcom/android/server/wifi/Clock;)V
+PLcom/android/server/wifi/aware/WifiAwareMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
PLcom/android/server/wifi/hotspot2/ANQPRequestManager;-><init>(Lcom/android/server/wifi/hotspot2/PasspointEventHandler;Lcom/android/server/wifi/Clock;)V
PLcom/android/server/wifi/hotspot2/AnqpCache;-><init>(Lcom/android/server/wifi/Clock;)V
+PLcom/android/server/wifi/hotspot2/AnqpCache;->dump(Ljava/io/PrintWriter;)V
PLcom/android/server/wifi/hotspot2/CertificateVerifier;-><init>()V
PLcom/android/server/wifi/hotspot2/LegacyPasspointConfigParser;-><init>()V
PLcom/android/server/wifi/hotspot2/NetworkDetail$Ant;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/wifi/hotspot2/NetworkDetail$Ant;->values()[Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant;
PLcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getAnqpDomainID()I
PLcom/android/server/wifi/hotspot2/NetworkDetail;->getAnt()Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant;
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getBSSIDString()Ljava/lang/String;
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq0()I
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq1()I
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getChannelWidth()I
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getDtimInterval()I
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getHESSID()J
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getHSRelease()Lcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease;
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getOsuProviders()[B
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->getSSID()Ljava/lang/String;
PLcom/android/server/wifi/hotspot2/NetworkDetail;->getWifiMode()I
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->is80211McResponderSupport()Z
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->isBeaconFrame()Z
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->isHiddenBeaconFrame()Z
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->isInterworking()Z
-PLcom/android/server/wifi/hotspot2/NetworkDetail;->toMACString(J)Ljava/lang/String;
PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;-><init>(Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;)V
PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V
PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->deserializeProviderList(Lorg/xmlpull/v1/XmlPullParser;I)Ljava/util/List;
@@ -14034,7 +15443,9 @@ PLcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;->setProvi
PLcom/android/server/wifi/hotspot2/PasspointManager;->-get2(Lcom/android/server/wifi/hotspot2/PasspointManager;)J
PLcom/android/server/wifi/hotspot2/PasspointManager;->-get3(Lcom/android/server/wifi/hotspot2/PasspointManager;)Ljava/util/Map;
PLcom/android/server/wifi/hotspot2/PasspointManager;->-set0(Lcom/android/server/wifi/hotspot2/PasspointManager;J)J
-PLcom/android/server/wifi/hotspot2/PasspointManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointObjectFactory;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/WifiConfigStore;)V
+PLcom/android/server/wifi/hotspot2/PasspointManager;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointObjectFactory;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/WifiConfigStore;Lcom/android/server/wifi/WifiMetrics;)V
+PLcom/android/server/wifi/hotspot2/PasspointManager;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/wifi/hotspot2/PasspointManager;->updateMetrics()V
PLcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;-><init>(Lcom/android/server/wifi/hotspot2/PasspointManager;Lcom/android/server/wifi/WifiConfigManager;Landroid/util/LocalLog;)V
PLcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;->update(Ljava/util/List;)V
PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;-><init>()V
@@ -14043,6 +15454,8 @@ PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makeAnqpCache(Lcom/a
PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makeCertificateVerifier()Lcom/android/server/wifi/hotspot2/CertificateVerifier;
PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makePasspointConfigStoreData(Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;)Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData;
PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makePasspointEventHandler(Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;)Lcom/android/server/wifi/hotspot2/PasspointEventHandler;
+PLcom/android/server/wifi/hotspot2/Utils;->hs2LogTag(Ljava/lang/Class;)Ljava/lang/String;
+PLcom/android/server/wifi/hotspot2/Utils;->toHMS(J)Ljava/lang/String;
PLcom/android/server/wifi/hotspot2/anqp/Constants$ANQPElementType;-><init>(Ljava/lang/String;I)V
PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$19;-><init>(BLjava/lang/Object;)V
PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$1;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V
@@ -14082,7 +15495,7 @@ PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->isInitializationComplete()
PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->isInitializationStarted()Z
PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_10685(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V
PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_35007(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V
-PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_67455(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V
+PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_67534(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V
PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_9579(Ljava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V
PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->linkToServiceManagerDeath()Z
PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->linkToSupplicantDeath()Z
@@ -14168,15 +15581,15 @@ PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->sendP2pStateC
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->sendThisDeviceChangedBroadcast()V
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->updatePersistentNetworks(Z)V
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->updateThisDevice(I)V
-PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get1()Ljava/lang/Boolean;
-PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get10(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/NetworkInfo;
-PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get16(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/wifi/p2p/WifiP2pDevice;
-PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get17(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Lcom/android/internal/util/AsyncChannel;
-PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get3(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Ljava/util/HashMap;
-PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get4(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/content/Context;
+PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get0()Ljava/lang/Boolean;
+PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get15(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/wifi/p2p/WifiP2pDevice;
+PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get16(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Lcom/android/internal/util/AsyncChannel;
+PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get2(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Ljava/util/HashMap;
+PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get3(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/content/Context;
+PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get5(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get6(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get7(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z
-PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get8(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z
+PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get9(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/NetworkInfo;
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set2(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Z)Z
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set6(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Ljava/lang/String;)Ljava/lang/String;
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set7(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;B)B
@@ -14188,6 +15601,7 @@ PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceAccessPermission()V
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceChangePermission()V
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceConnectivityInternalOrLocationHardwarePermission()V
PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->getP2pStateMachineMessenger()Landroid/os/Messenger;
+PLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;-><init>()V
PLcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList$1;-><init>(Lcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList;)V
PLcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList;-><init>(Lcom/android/server/wifi/scanner/BackgroundScanScheduler;)V
PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->-get2()[I
@@ -14198,43 +15612,20 @@ PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->getMaxBatch()I
PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->getMaxChannelsPerBucket()I
PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->setMaxApPerScan(I)V
PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->setMaxBuckets(I)V
-PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;-><init>(Lcom/android/server/wifi/scanner/ChannelHelper;)V
-PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)V
-PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Lcom/android/server/wifi/WifiNative$BucketSettings;)V
PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsSettings(Landroid/net/wifi/WifiScanner$ScanSettings;)Z
PLcom/android/server/wifi/scanner/ChannelHelper;-><init>()V
PLcom/android/server/wifi/scanner/HalChannelHelper;-><init>(Lcom/android/server/wifi/WifiNative;)V
-PLcom/android/server/wifi/scanner/HalChannelHelper;->updateChannels()V
PLcom/android/server/wifi/scanner/HalWifiScannerImpl;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiMonitor;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)V
PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getChannelHelper()Lcom/android/server/wifi/scanner/ChannelHelper;
PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getLatestSingleScanResults()Landroid/net/wifi/WifiScanner$ScanData;
PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z
PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->startSingleScan(Lcom/android/server/wifi/WifiNative$ScanSettings;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)Z
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;-><init>(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;)V
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addBand(I)V
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addChannel(I)V
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsBand(I)Z
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsChannel(I)Z
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->fillBucketSettings(Lcom/android/server/wifi/WifiNative$BucketSettings;I)V
PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->getScanFreqs()Ljava/util/Set;
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->isAllChannels()Z
PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->isEmpty()Z
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->-wrap0(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;I)I
PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;-><init>()V
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->copyChannels([Landroid/net/wifi/WifiScanner$ChannelSpec;I[I)V
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getAvailableScanChannels(I)[Landroid/net/wifi/WifiScanner$ChannelSpec;
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getBandFromChannel(I)I
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->isDfsChannel(I)Z
-PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->setBandChannels([I[I[I)V
-PLcom/android/server/wifi/scanner/ScanScheduleUtil;->filterResultsForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;[Landroid/net/wifi/WifiScanner$ScanData;Landroid/net/wifi/WifiScanner$ScanSettings;I)[Landroid/net/wifi/WifiScanner$ScanData;
-PLcom/android/server/wifi/scanner/ScanScheduleUtil;->isBucketMaybeScanned(II)Z
-PLcom/android/server/wifi/scanner/ScanScheduleUtil;->shouldReportFullScanResultForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;Landroid/net/wifi/ScanResult;ILandroid/net/wifi/WifiScanner$ScanSettings;I)Z
PLcom/android/server/wifi/scanner/WifiScannerImpl$1;-><init>()V
PLcom/android/server/wifi/scanner/WifiScannerImpl$1;->create(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)Lcom/android/server/wifi/scanner/WifiScannerImpl;
PLcom/android/server/wifi/scanner/WifiScannerImpl$2;-><init>()V
-PLcom/android/server/wifi/scanner/WifiScannerImpl$2;->compare(Landroid/net/wifi/ScanResult;Landroid/net/wifi/ScanResult;)I
PLcom/android/server/wifi/scanner/WifiScannerImpl;-><init>()V
PLcom/android/server/wifi/scanner/WifiScanningService;-><init>(Landroid/content/Context;)V
PLcom/android/server/wifi/scanner/WifiScanningService;->onBootPhase(I)V
@@ -14242,19 +15633,12 @@ PLcom/android/server/wifi/scanner/WifiScanningService;->onStart()V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$1;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Ljava/lang/String;Landroid/os/Looper;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;ILandroid/os/Messenger;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->getUid()I
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->register()V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->toString()Ljava/lang/String;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;ILandroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo;->reportEvent(IIILjava/lang/Object;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;->reportEvent(IILjava/lang/Object;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->addRequest(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->createMergedWorkSource()Landroid/os/WorkSource;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;->enter()V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z
@@ -14278,18 +15662,10 @@ PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachin
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Landroid/os/Looper;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->enter()V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->enter()V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->processMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->enter()V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->exit()V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->processMessage(Landroid/os/Message;)Z
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)[Landroid/net/wifi/ScanResult;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get4(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;
@@ -14297,25 +15673,13 @@ PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMac
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-set0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;Lcom/android/server/wifi/WifiNative$ScanSettings;)Lcom/android/server/wifi/WifiNative$ScanSettings;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;-><init>(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Landroid/os/Looper;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->activeScanSatisfies(Landroid/net/wifi/WifiScanner$ScanSettings;)Z
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onFullScanResult(Landroid/net/wifi/ScanResult;I)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onScanStatus(I)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->reportScanResults(Landroid/net/wifi/WifiScanner$ScanData;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendOpFailedToAllAndClear(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;ILjava/lang/String;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendScanResultBroadcast(Z)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->tryToStartNewScan()V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->validateScanRequest(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/net/wifi/WifiScanner$ScanSettings;Landroid/os/WorkSource;)Z
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/BackgroundScanScheduler;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get10(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get12(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get13(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get14(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get15(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get16(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/WifiMetrics;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/internal/app/IBatteryStats;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/ChannelHelper;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get5(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/util/ArrayMap;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get6(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/Clock;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get7(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/content/Context;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get8(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/FrameworkFacade;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get9(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/os/Looper;
@@ -14323,19 +15687,10 @@ PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set0(Lcom/android/s
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/ChannelHelper;)Lcom/android/server/wifi/scanner/ChannelHelper;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScannerImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl;
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;Landroid/os/WorkSource;)Landroid/os/WorkSource;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;I)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Ljava/lang/String;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/wifi/WifiInjector;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->computeWorkSource(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;Landroid/os/WorkSource;)Landroid/os/WorkSource;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeForLog([Landroid/net/wifi/WifiScanner$ScanData;)Ljava/lang/String;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeTo(Ljava/lang/StringBuilder;Landroid/net/wifi/WifiScanner$ScanSettings;)Ljava/lang/String;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->enforceLocationHardwarePermission(I)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->getMessenger()Landroid/os/Messenger;
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->isWorkSourceValid(Landroid/os/WorkSource;)Z
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->localLog(Ljava/lang/String;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logCallback(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILjava/lang/String;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logScanRequest(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;)V
-PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->replySucceeded(Landroid/os/Message;)V
+PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->loge(Ljava/lang/String;)V
PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->startService()V
PLcom/android/server/wifi/scanner/WificondScannerImpl$1;-><init>(Lcom/android/server/wifi/scanner/WificondScannerImpl;)V
PLcom/android/server/wifi/scanner/WificondScannerImpl$2;-><init>(Lcom/android/server/wifi/scanner/WificondScannerImpl;)V
@@ -14344,108 +15699,64 @@ PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer$1;-><init>(
PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;-><init>(Lcom/android/server/wifi/WifiNative;Landroid/app/AlarmManager;Landroid/os/Handler;Lcom/android/server/wifi/Clock;)V
PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;->forceStopPnoScan()V
PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;->stopPnoScanInternal()Z
-PLcom/android/server/wifi/scanner/WificondScannerImpl$LastScanSettings;-><init>(J)V
PLcom/android/server/wifi/scanner/WificondScannerImpl$LastScanSettings;->setSingleScan(ZLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)V
PLcom/android/server/wifi/scanner/WificondScannerImpl$ScanBuffer;-><init>(I)V
PLcom/android/server/wifi/scanner/WificondScannerImpl;-><init>(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiMonitor;Lcom/android/server/wifi/scanner/ChannelHelper;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)V
PLcom/android/server/wifi/scanner/WificondScannerImpl;->getLatestSingleScanResults()Landroid/net/wifi/WifiScanner$ScanData;
-PLcom/android/server/wifi/scanner/WificondScannerImpl;->handleMessage(Landroid/os/Message;)Z
PLcom/android/server/wifi/scanner/WificondScannerImpl;->isHwPnoScanRequired()Z
PLcom/android/server/wifi/scanner/WificondScannerImpl;->pauseHwPnoScan()V
-PLcom/android/server/wifi/scanner/WificondScannerImpl;->processPendingScans()V
PLcom/android/server/wifi/scanner/WificondScannerImpl;->startSingleScan(Lcom/android/server/wifi/WifiNative$ScanSettings;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)Z
-PLcom/android/server/wifi/util/BitMask;-><init>(I)V
PLcom/android/server/wifi/util/ByteArrayRingBuffer;-><init>(I)V
PLcom/android/server/wifi/util/ByteArrayRingBuffer;->resize(I)V
-PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;-><init>()V
-PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->cipherToString(I)Ljava/lang/String;
-PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->keyManagementToString(I)Ljava/lang/String;
-PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseRsnCipher(I)I
+PLcom/android/server/wifi/util/FrameParser;->decodeDhcpMessageType(S)Ljava/lang/String;
+PLcom/android/server/wifi/util/FrameParser;->decodeIeee80211StatusCode(S)Ljava/lang/String;
+PLcom/android/server/wifi/util/FrameParser;->parseArpPacket(Ljava/nio/ByteBuffer;)V
+PLcom/android/server/wifi/util/FrameParser;->parseAssociationResponse(Ljava/nio/ByteBuffer;)V
+PLcom/android/server/wifi/util/FrameParser;->parseAuthenticationFrame(Ljava/nio/ByteBuffer;)V
+PLcom/android/server/wifi/util/FrameParser;->parseDhcpPacket(Ljava/nio/ByteBuffer;)V
+PLcom/android/server/wifi/util/FrameParser;->parseIcmpV6Packet(Ljava/nio/ByteBuffer;)V
+PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlSubtype(B)B
+PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlType(B)B
+PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlVersion(B)B
+PLcom/android/server/wifi/util/FrameParser;->parseIpv6Packet(Ljava/nio/ByteBuffer;)V
+PLcom/android/server/wifi/util/FrameParser;->parseManagementFrame(Ljava/nio/ByteBuffer;)V
+PLcom/android/server/wifi/util/FrameParser;->parseUdpPacket(Ljava/nio/ByteBuffer;)V
PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseWpaCipher(I)I
-PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseWpaOneElement(Landroid/net/wifi/ScanResult$InformationElement;)V
-PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->protocolToString(I)Ljava/lang/String;
-PLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->is80211McRTTResponder()Z
-PLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
-PLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getCenterFreq0(I)I
-PLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getChannelWidth()I
-PLcom/android/server/wifi/util/InformationElementUtil$Interworking;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
-PLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->isValid()Z
-PLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V
-PLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq0()I
-PLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq1()I
-PLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getChannelWidth()I
-PLcom/android/server/wifi/util/InformationElementUtil$WifiMode;->determineMode(IIZZZ)I
PLcom/android/server/wifi/util/NativeUtil;->decodeSsid(Ljava/lang/String;)Ljava/util/ArrayList;
-PLcom/android/server/wifi/util/NativeUtil;->hexOrQuotedAsciiStringToBytes(Ljava/lang/String;)Ljava/util/ArrayList;
+PLcom/android/server/wifi/util/NativeUtil;->hexOrQuotedStringToBytes(Ljava/lang/String;)Ljava/util/ArrayList;
PLcom/android/server/wifi/util/NativeUtil;->hexStringToByteArray(Ljava/lang/String;)[B
PLcom/android/server/wifi/util/NativeUtil;->macAddressToByteArray(Ljava/lang/String;)[B
PLcom/android/server/wifi/util/NativeUtil;->stringToByteArray(Ljava/lang/String;)[B
PLcom/android/server/wifi/util/NativeUtil;->stringToByteArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
-PLcom/android/server/wifi/util/ScanResultUtil;->createQuotedSSID(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForEapNetwork(Landroid/net/wifi/ScanResult;)Z
-PLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForOpenNetwork(Landroid/net/wifi/ScanResult;)Z
-PLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForPskNetwork(Landroid/net/wifi/ScanResult;)Z
-PLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForWepNetwork(Landroid/net/wifi/ScanResult;)Z
-PLcom/android/server/wifi/util/ScanResultUtil;->toScanDetail(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ScanDetail;
-PLcom/android/server/wifi/util/TelephonyUtil;->getSimMethodForConfig(Landroid/net/wifi/WifiConfiguration;)I
-PLcom/android/server/wifi/util/TelephonyUtil;->isSimConfig(Landroid/net/wifi/WifiConfiguration;)Z
-PLcom/android/server/wifi/util/TelephonyUtil;->isSimEapMethod(I)Z
PLcom/android/server/wifi/util/WifiAsyncChannel;-><init>(Ljava/lang/String;)V
-PLcom/android/server/wifi/util/WifiAsyncChannel;->getOrInitLog()Lcom/android/server/wifi/WifiLog;
PLcom/android/server/wifi/util/WifiAsyncChannel;->replyToMessage(Landroid/os/Message;Landroid/os/Message;)V
-PLcom/android/server/wifi/util/WifiAsyncChannel;->sendMessageSynchronously(Landroid/os/Message;)Landroid/os/Message;
PLcom/android/server/wifi/util/WifiHandler;-><init>(Ljava/lang/String;Landroid/os/Looper;)V
-PLcom/android/server/wifi/util/WifiHandler;->getOrInitLog()Lcom/android/server/wifi/WifiLog;
-PLcom/android/server/wifi/util/WifiHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/wifi/util/WifiPermissionsUtil;-><init>(Lcom/android/server/wifi/util/WifiPermissionsWrapper;Landroid/content/Context;Lcom/android/server/wifi/WifiSettingsStore;Landroid/os/UserManager;Landroid/net/NetworkScoreManager;Lcom/android/server/wifi/WifiInjector;)V
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->canAccessScanResults(Ljava/lang/String;II)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->checkAppOpAllowed(ILjava/lang/String;I)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallerHasPeersMacAddressPermission(I)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallersLocationPermission(Ljava/lang/String;I)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->isCallerActiveNwScorer(I)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->isCurrentProfile(I)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyForeground(Ljava/lang/String;I)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyVersion(Ljava/lang/String;I)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->isLocationModeEnabled(Ljava/lang/String;)Z
-PLcom/android/server/wifi/util/WifiPermissionsUtil;->isScanAllowedbyApps(Ljava/lang/String;I)Z
PLcom/android/server/wifi/util/WifiPermissionsWrapper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCallingUserId(I)I
-PLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCurrentUser()I
-PLcom/android/server/wifi/util/WifiPermissionsWrapper;->getUidPermission(Ljava/lang/String;I)I
PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->-getandroid-net-IpConfiguration$IpAssignmentSwitchesValues()[I
PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->-getandroid-net-IpConfiguration$ProxySettingsSwitchesValues()[I
PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/net/IpConfiguration;
PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/IpConfiguration;)V
PLcom/android/server/wifi/util/XmlUtil$NetworkSelectionStatusXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;
PLcom/android/server/wifi/util/XmlUtil$NetworkSelectionStatusXmlUtil;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V
-PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/util/Pair;
PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->populateWepKeysFromXmlValue(Ljava/lang/Object;[Ljava/lang/String;)V
PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeCommonElementsToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V
-PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeToXmlForConfigStore(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V
PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeWepKeysToXml(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V
PLcom/android/server/wifi/util/XmlUtil;->gotoDocumentStart(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
PLcom/android/server/wifi/util/XmlUtil;->gotoEndTag(Lorg/xmlpull/v1/XmlPullParser;)V
PLcom/android/server/wifi/util/XmlUtil;->gotoNextSectionOrEnd(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;I)Z
PLcom/android/server/wifi/util/XmlUtil;->gotoNextSectionWithNameOrEnd(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Z
PLcom/android/server/wifi/util/XmlUtil;->isNextSectionEnd(Lorg/xmlpull/v1/XmlPullParser;I)Z
-PLcom/android/server/wifi/util/XmlUtil;->readCurrentValue(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;)Ljava/lang/Object;
PLcom/android/server/wifi/util/XmlUtil;->readNextValueWithName(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object;
PLcom/android/server/wifi/util/XmlUtil;->writeDocumentEnd(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V
PLcom/android/server/wifi/util/XmlUtil;->writeDocumentStart(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V
PLcom/android/server/wifi/util/XmlUtil;->writeNextSectionEnd(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V
PLcom/android/server/wifi/util/XmlUtil;->writeNextSectionStart(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V
-PLcom/android/server/wifi/util/XmlUtil;->writeNextValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/Object;)V
PLcom/android/server/wifi/wificond/ChannelSettings$1;-><init>()V
-PLcom/android/server/wifi/wificond/ChannelSettings;-><init>()V
-PLcom/android/server/wifi/wificond/ChannelSettings;->writeToParcel(Landroid/os/Parcel;I)V
PLcom/android/server/wifi/wificond/NativeScanResult$1;-><init>()V
-PLcom/android/server/wifi/wificond/NativeScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
PLcom/android/server/wifi/wificond/NativeScanResult$1;->newArray(I)[Lcom/android/server/wifi/wificond/NativeScanResult;
-PLcom/android/server/wifi/wificond/NativeScanResult$1;->newArray(I)[Ljava/lang/Object;
-PLcom/android/server/wifi/wificond/NativeScanResult;-><init>()V
PLcom/android/server/wifi/wificond/SingleScanSettings$1;-><init>()V
PLcom/android/server/wifi/wificond/SingleScanSettings;-><init>()V
-PLcom/android/server/wifi/wificond/SingleScanSettings;->writeToParcel(Landroid/os/Parcel;I)V
PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;->$m$0(Ljava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;-><init>(BZZLjava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;->accept(Ljava/lang/Object;)V
@@ -14456,401 +15767,225 @@ PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->$m$0(Ljava/lang/O
PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->$m$1(Ljava/lang/Object;Ljava/lang/Object;)I
PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;-><init>(BLjava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->$m$0(J)V
PLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;-><init>(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->doFrame(J)V
-PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$0(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$2(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$3(Ljava/lang/Object;)Z
PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;-><init>(B)V
-PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->$m$0(Ljava/lang/Object;)Z
PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->$m$1(Ljava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;-><init>(BII)V
-PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->$m$0(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;->$m$0(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;-><init>(ZLjava/lang/Object;)V
+PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;->accept(Ljava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;-><init>(ZZILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->apply(Ljava/lang/Object;)Z
PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;->$m$1(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object;
PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;-><init>(B)V
PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;->screenshot(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object;
PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$13(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$14(Ljava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$2(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$5(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;-><init>(BLjava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$12()V
-PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$13()V
-PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$14()V
+PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$11()V
PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$2()V
PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$3()V
PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$4()V
PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$5()V
-PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$6()V
-PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$7()V
-PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;-><init>(BLjava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->run()V
PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;->$m$0(Ljava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;-><init>(ZI)V
PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w;->$m$0()V
-PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w;-><init>(ZZZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w;->run()V
-PLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->$m$3(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;->$m$0()V
+PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;-><init>(ZZZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;->run()V
PLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;-><init>(B)V
-PLcom/android/server/wm/-$Lambda$jlKbn4GPn9-0nFmS_2KB8vTwgFI;->$m$0()V
-PLcom/android/server/wm/-$Lambda$jlKbn4GPn9-0nFmS_2KB8vTwgFI;->$m$2()V
-PLcom/android/server/wm/-$Lambda$jlKbn4GPn9-0nFmS_2KB8vTwgFI;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$jlKbn4GPn9-0nFmS_2KB8vTwgFI;->run()V
PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;->$m$0(Ljava/lang/Object;)Z
PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;-><init>()V
PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;->apply(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$0(Ljava/lang/Object;)Z
PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$1(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$2(Ljava/lang/Object;)Z
PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;-><init>(BLjava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$0(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$1(Ljava/lang/Object;)Z
PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;-><init>(BLjava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;->$m$0(Ljava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V
PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->$m$0(I)Ljava/io/File;
+PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;->$m$0(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;-><init>(BI)V
+PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;->test(Ljava/lang/Object;)Z
PLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;-><init>()V
-PLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->getSystemDirectoryForUser(I)Ljava/io/File;
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Landroid/os/Looper;)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V
+PLcom/android/server/wm/AccessibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/AccessibilityController;->hasCallbacksLocked()Z
+PLcom/android/server/wm/AccessibilityController;->onAppWindowTransitionLocked(Lcom/android/server/wm/WindowState;I)V
+PLcom/android/server/wm/AccessibilityController;->onRotationChangedLocked(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/AccessibilityController;->onWindowFocusChangedNotLocked()V
+PLcom/android/server/wm/AccessibilityController;->onWindowTransitionLocked(Lcom/android/server/wm/WindowState;I)V
+PLcom/android/server/wm/AccessibilityController;->performComputeChangedWindowsNotLocked()V
+PLcom/android/server/wm/AccessibilityController;->setWindowsForAccessibilityCallback(Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V
PLcom/android/server/wm/AppTokenList;-><init>()V
PLcom/android/server/wm/AppTransition$1;-><init>(Lcom/android/server/wm/AppTransition;)V
PLcom/android/server/wm/AppTransition$2;-><init>(Lcom/android/server/wm/AppTransition;)V
-PLcom/android/server/wm/AppTransition$2;->getInterpolation(F)F
-PLcom/android/server/wm/AppTransition;->-get1(Lcom/android/server/wm/AppTransition;)Landroid/view/animation/Interpolator;
PLcom/android/server/wm/AppTransition;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/AppTransition;->calculateClipRevealTransitionDuration(ZFFLandroid/graphics/Rect;)J
PLcom/android/server/wm/AppTransition;->canSkipFirstFrame()Z
PLcom/android/server/wm/AppTransition;->clear()V
-PLcom/android/server/wm/AppTransition;->createAspectScaledThumbnailEnterExitAnimationLocked(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZI)Landroid/view/animation/Animation;
-PLcom/android/server/wm/AppTransition;->createClipRevealAnimationLocked(IZLandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/view/animation/Animation;
-PLcom/android/server/wm/AppTransition;->createCurvedMotion(FFFF)Landroid/view/animation/Animation;
-PLcom/android/server/wm/AppTransition;->createThumbnailAspectScaleAnimationLocked(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/GraphicBuffer;III)Landroid/view/animation/Animation;
PLcom/android/server/wm/AppTransition;->fetchAppTransitionSpecsFromFuture()V
PLcom/android/server/wm/AppTransition;->freeze()V
-PLcom/android/server/wm/AppTransition;->getAppStackClipMode()I
-PLcom/android/server/wm/AppTransition;->getAppTransition()I
-PLcom/android/server/wm/AppTransition;->getAppTransitionThumbnailHeader(I)Landroid/graphics/GraphicBuffer;
-PLcom/android/server/wm/AppTransition;->getAspectScaleDuration()J
-PLcom/android/server/wm/AppTransition;->getAspectScaleInterpolator()Landroid/view/animation/Interpolator;
-PLcom/android/server/wm/AppTransition;->getCachedAnimations(Landroid/view/WindowManager$LayoutParams;)Lcom/android/server/AttributeCache$Entry;
PLcom/android/server/wm/AppTransition;->getCachedAnimations(Ljava/lang/String;I)Lcom/android/server/AttributeCache$Entry;
PLcom/android/server/wm/AppTransition;->getDefaultNextAppTransitionStartRect(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/AppTransition;->getNextAppTransitionStartRect(ILandroid/graphics/Rect;)V
-PLcom/android/server/wm/AppTransition;->getThumbnailTransitionState(Z)I
PLcom/android/server/wm/AppTransition;->getTransitFlags()I
-PLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/AppWindowAnimator;Lcom/android/server/wm/AppWindowAnimator;Landroid/util/ArraySet;Landroid/util/ArraySet;)I
PLcom/android/server/wm/AppTransition;->isFetchingAppTransitionsSpecs()Z
-PLcom/android/server/wm/AppTransition;->isKeyguardGoingAwayTransit(I)Z
-PLcom/android/server/wm/AppTransition;->isKeyguardTransit(I)Z
PLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailDown()Z
PLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailUp()Z
-PLcom/android/server/wm/AppTransition;->isNextThumbnailTransitionAspectScaled()Z
-PLcom/android/server/wm/AppTransition;->isNextThumbnailTransitionScaleUp()Z
-PLcom/android/server/wm/AppTransition;->isReady()Z
-PLcom/android/server/wm/AppTransition;->isRunning()Z
-PLcom/android/server/wm/AppTransition;->isTimeout()Z
PLcom/android/server/wm/AppTransition;->isTransitionEqual(I)Z
-PLcom/android/server/wm/AppTransition;->lambda$-com_android_server_wm_AppTransition_87752(Landroid/view/IAppTransitionAnimationSpecsFuture;)V
-PLcom/android/server/wm/AppTransition;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)Landroid/view/animation/Animation;
-PLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;I)Landroid/view/animation/Animation;
PLcom/android/server/wm/AppTransition;->loadAnimationRes(Ljava/lang/String;I)Landroid/view/animation/Animation;
PLcom/android/server/wm/AppTransition;->loadKeyguardExitAnimation(I)Landroid/view/animation/Animation;
PLcom/android/server/wm/AppTransition;->notifyAppTransitionCancelledLocked(I)V
-PLcom/android/server/wm/AppTransition;->notifyAppTransitionFinishedLocked(Landroid/os/IBinder;)V
-PLcom/android/server/wm/AppTransition;->notifyAppTransitionPendingLocked()V
-PLcom/android/server/wm/AppTransition;->notifyAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I
-PLcom/android/server/wm/AppTransition;->notifyProlongedAnimationsEnded()V
PLcom/android/server/wm/AppTransition;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V
PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionClipReveal(IIII)V
-PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionMultiThumb([Landroid/view/AppTransitionAnimationSpec;Landroid/os/IRemoteCallback;Landroid/os/IRemoteCallback;Z)V
-PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V
PLcom/android/server/wm/AppTransition;->postAnimationCallback()V
-PLcom/android/server/wm/AppTransition;->prepare()Z
-PLcom/android/server/wm/AppTransition;->prepareAppTransitionLocked(IZIZ)Z
-PLcom/android/server/wm/AppTransition;->prepareThumbnailAnimationWithDuration(Landroid/view/animation/Animation;IIJLandroid/view/animation/Interpolator;)Landroid/view/animation/Animation;
PLcom/android/server/wm/AppTransition;->putDefaultNextAppTransitionCoordinates(IIIILandroid/graphics/GraphicBuffer;)V
PLcom/android/server/wm/AppTransition;->registerListenerLocked(Landroid/view/WindowManagerInternal$AppTransitionListener;)V
PLcom/android/server/wm/AppTransition;->setAppTransition(II)V
-PLcom/android/server/wm/AppTransition;->setAppTransitionState(I)V
PLcom/android/server/wm/AppTransition;->setIdle()V
-PLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/AppTransition;->setReady()V
-PLcom/android/server/wm/AppTransition;->shouldScaleDownThumbnailTransition(II)Z
-PLcom/android/server/wm/AppTransition;->updateBooster()V
PLcom/android/server/wm/AppWindowAnimator$DummyAnimation;-><init>()V
PLcom/android/server/wm/AppWindowAnimator;-><init>(Lcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/AppWindowAnimator;->clearAnimation()V
-PLcom/android/server/wm/AppWindowAnimator;->clearThumbnail()V
-PLcom/android/server/wm/AppWindowAnimator;->endProlongedAnimation()V
-PLcom/android/server/wm/AppWindowAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J
-PLcom/android/server/wm/AppWindowAnimator;->getStartTimeCorrection()J
-PLcom/android/server/wm/AppWindowAnimator;->getTransit()I
PLcom/android/server/wm/AppWindowAnimator;->getTransitFlags()I
-PLcom/android/server/wm/AppWindowAnimator;->setAnimation(Landroid/view/animation/Animation;IIIIZIII)V
-PLcom/android/server/wm/AppWindowAnimator;->setDummyAnimation()V
-PLcom/android/server/wm/AppWindowAnimator;->setNullAnimation()V
-PLcom/android/server/wm/AppWindowAnimator;->showAllWindowsLocked()Z
-PLcom/android/server/wm/AppWindowAnimator;->stepAnimation(J)Z
-PLcom/android/server/wm/AppWindowAnimator;->stepThumbnailAnimation(J)V
PLcom/android/server/wm/AppWindowAnimator;->transferCurrentAnimation(Lcom/android/server/wm/AppWindowAnimator;Lcom/android/server/wm/WindowStateAnimator;)V
-PLcom/android/server/wm/AppWindowAnimator;->updateLayers()V
+PLcom/android/server/wm/AppWindowContainerController$H;-><init>(Lcom/android/server/wm/AppWindowContainerController;Landroid/os/Looper;)V
PLcom/android/server/wm/AppWindowContainerController;-><init>(Lcom/android/server/wm/TaskWindowContainerController;Landroid/view/IApplicationToken;Lcom/android/server/wm/AppWindowContainerListener;IIZZIZZZIIJLandroid/content/res/Configuration;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/AppWindowContainerController;-><init>(Lcom/android/server/wm/TaskWindowContainerController;Landroid/view/IApplicationToken;Lcom/android/server/wm/AppWindowContainerListener;IIZZIZZZIIJLcom/android/server/wm/WindowManagerService;Landroid/content/res/Configuration;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/AppWindowContainerController;->addStartingWindow(Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/os/IBinder;ZZZZZZ)Z
PLcom/android/server/wm/AppWindowContainerController;->createAppWindow(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;JZZIIIIZZLcom/android/server/wm/AppWindowContainerController;Landroid/content/res/Configuration;Landroid/graphics/Rect;)Lcom/android/server/wm/AppWindowToken;
PLcom/android/server/wm/AppWindowContainerController;->createSnapshot(Landroid/app/ActivityManager$TaskSnapshot;)Z
-PLcom/android/server/wm/AppWindowContainerController;->getOrientation()I
PLcom/android/server/wm/AppWindowContainerController;->getStartingWindowType(ZZZZZZLandroid/app/ActivityManager$TaskSnapshot;)I
-PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_2853()V
-PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_3148()V
-PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_3438()V
-PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_3729()V
-PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4021()V
-PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_5567()V
+PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_31112(Landroid/view/WindowManagerPolicy$StartingSurface;)V
+PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4155()V
+PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4446()V
PLcom/android/server/wm/AppWindowContainerController;->notifyAppResumed(Z)V
PLcom/android/server/wm/AppWindowContainerController;->notifyAppStopped()V
PLcom/android/server/wm/AppWindowContainerController;->notifyUnknownVisibilityLaunched()V
-PLcom/android/server/wm/AppWindowContainerController;->pauseKeyDispatching()V
PLcom/android/server/wm/AppWindowContainerController;->removeContainer(I)V
-PLcom/android/server/wm/AppWindowContainerController;->removeStartingWindow()V
-PLcom/android/server/wm/AppWindowContainerController;->reportStartingWindowDrawn()V
PLcom/android/server/wm/AppWindowContainerController;->reportWindowsDrawn()V
PLcom/android/server/wm/AppWindowContainerController;->reportWindowsGone()V
PLcom/android/server/wm/AppWindowContainerController;->reportWindowsVisible()V
-PLcom/android/server/wm/AppWindowContainerController;->resumeKeyDispatching()V
PLcom/android/server/wm/AppWindowContainerController;->scheduleAddStartingWindow()V
PLcom/android/server/wm/AppWindowContainerController;->setDisablePreviewScreenshots(Z)V
PLcom/android/server/wm/AppWindowContainerController;->setOrientation(IILandroid/content/res/Configuration;Z)Landroid/content/res/Configuration;
-PLcom/android/server/wm/AppWindowContainerController;->setVisibility(ZZ)V
-PLcom/android/server/wm/AppWindowContainerController;->snapshotFillsWidth(Landroid/app/ActivityManager$TaskSnapshot;)Z
+PLcom/android/server/wm/AppWindowContainerController;->snapshotOrientationSameAsTask(Landroid/app/ActivityManager$TaskSnapshot;)Z
PLcom/android/server/wm/AppWindowContainerController;->startFreezingScreen(I)V
-PLcom/android/server/wm/AppWindowContainerController;->stopFreezingScreen(Z)V
PLcom/android/server/wm/AppWindowToken;->-com_android_server_wm_AppWindowToken-mthref-0(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/AppWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;JZZIIIIZZLcom/android/server/wm/AppWindowContainerController;Landroid/content/res/Configuration;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/AppWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;ZLandroid/content/res/Configuration;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/AppWindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/AppWindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken;
-PLcom/android/server/wm/AppWindowToken;->canRestoreSurfaces()Z
-PLcom/android/server/wm/AppWindowToken;->checkCompleteDeferredRemoval()Z
-PLcom/android/server/wm/AppWindowToken;->checkKeyguardFlagsChanged()V
-PLcom/android/server/wm/AppWindowToken;->clearAllDrawn()V
-PLcom/android/server/wm/AppWindowToken;->clearAnimatingFlags()V
+PLcom/android/server/wm/AppWindowToken;->canTurnScreenOn()Z
PLcom/android/server/wm/AppWindowToken;->clearRelaunching()V
-PLcom/android/server/wm/AppWindowToken;->clearWasVisibleBeforeClientHidden()V
-PLcom/android/server/wm/AppWindowToken;->destroySavedSurfaces()V
-PLcom/android/server/wm/AppWindowToken;->destroySurfaces()V
-PLcom/android/server/wm/AppWindowToken;->destroySurfaces(Z)V
-PLcom/android/server/wm/AppWindowToken;->fillsParent()Z
-PLcom/android/server/wm/AppWindowToken;->findMainWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/AppWindowToken;->getAnimLayerAdjustment()I
-PLcom/android/server/wm/AppWindowToken;->getController()Lcom/android/server/wm/AppWindowContainerController;
-PLcom/android/server/wm/AppWindowToken;->getOrientation(I)I
-PLcom/android/server/wm/AppWindowToken;->getOrientationIgnoreVisibility()I
-PLcom/android/server/wm/AppWindowToken;->getStack()Lcom/android/server/wm/TaskStack;
-PLcom/android/server/wm/AppWindowToken;->hasBounds()Z
-PLcom/android/server/wm/AppWindowToken;->isAnimatingInvisibleWithSavedSurface()Z
-PLcom/android/server/wm/AppWindowToken;->isClientHidden()Z
+PLcom/android/server/wm/AppWindowToken;->finishRelaunching()V
+PLcom/android/server/wm/AppWindowToken;->getHighestAnimLayerWindow(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/AppWindowToken;->getTopFullscreenWindow()Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/AppWindowToken;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/AppWindowToken;->isLastWindow(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/AppWindowToken;->isRelaunching()Z
-PLcom/android/server/wm/AppWindowToken;->isVisible()Z
-PLcom/android/server/wm/AppWindowToken;->lambda$-com_android_server_wm_AppWindowToken_64649(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/AppWindowToken;->markSavedSurfaceExiting()V
+PLcom/android/server/wm/AppWindowToken;->lambda$-com_android_server_wm_AppWindowToken_68187(Lcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/AppWindowToken;->notifyAppResumed(Z)V
-PLcom/android/server/wm/AppWindowToken;->notifyAppStopped()V
-PLcom/android/server/wm/AppWindowToken;->onAppTransitionDone()V
-PLcom/android/server/wm/AppWindowToken;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V
-PLcom/android/server/wm/AppWindowToken;->onParentSet()V
-PLcom/android/server/wm/AppWindowToken;->onRemovedFromDisplay()V
PLcom/android/server/wm/AppWindowToken;->postWindowRemoveStartingWindowCleanup(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/AppWindowToken;->removeChild(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/AppWindowToken;->removeChild(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/AppWindowToken;->removeDeadWindows()V
PLcom/android/server/wm/AppWindowToken;->removeIfPossible()V
PLcom/android/server/wm/AppWindowToken;->removeImmediately()V
-PLcom/android/server/wm/AppWindowToken;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/AppWindowToken;->requestUpdateWallpaperIfNeeded()V
-PLcom/android/server/wm/AppWindowToken;->restoreSavedSurfaceForInterestingWindows()V
-PLcom/android/server/wm/AppWindowToken;->setAllAppWinAnimators()V
-PLcom/android/server/wm/AppWindowToken;->setAppLayoutChanges(ILjava/lang/String;)V
-PLcom/android/server/wm/AppWindowToken;->setClientHidden(Z)V
+PLcom/android/server/wm/AppWindowToken;->setCanTurnScreenOn(Z)V
PLcom/android/server/wm/AppWindowToken;->setDisablePreviewScreenshots(Z)V
-PLcom/android/server/wm/AppWindowToken;->setVisibility(Landroid/view/WindowManager$LayoutParams;ZIZZ)Z
+PLcom/android/server/wm/AppWindowToken;->shouldFreezeBounds()Z
PLcom/android/server/wm/AppWindowToken;->shouldUseAppThemeSnapshot()Z
PLcom/android/server/wm/AppWindowToken;->startFreezingScreen()V
+PLcom/android/server/wm/AppWindowToken;->startRelaunching()V
PLcom/android/server/wm/AppWindowToken;->stopFreezingScreen(ZZ)V
-PLcom/android/server/wm/AppWindowToken;->toString()Ljava/lang/String;
PLcom/android/server/wm/AppWindowToken;->transferStartingWindow(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/AppWindowToken;->updateAllDrawn()V
-PLcom/android/server/wm/AppWindowToken;->updateReportedVisibilityLocked()V
+PLcom/android/server/wm/AppWindowToken;->unfreezeBounds()V
PLcom/android/server/wm/AppWindowToken;->waitingForReplacement()Z
PLcom/android/server/wm/BlackFrame$BlackSurface;-><init>(Lcom/android/server/wm/BlackFrame;Landroid/view/SurfaceSession;IIIIII)V
-PLcom/android/server/wm/BlackFrame$BlackSurface;->setMatrix(Landroid/graphics/Matrix;)V
PLcom/android/server/wm/BlackFrame;-><init>(Landroid/view/SurfaceSession;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZ)V
PLcom/android/server/wm/BlackFrame;->kill()V
-PLcom/android/server/wm/BlackFrame;->setMatrix(Landroid/graphics/Matrix;)V
PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;-><init>(Lcom/android/server/wm/BoundsAnimationController;)V
PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;-><init>(Lcom/android/server/wm/BoundsAnimationController;Lcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;)V
-PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->animationFinished()V
-PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
PLcom/android/server/wm/BoundsAnimationController;->-get2(Lcom/android/server/wm/BoundsAnimationController;)Z
PLcom/android/server/wm/BoundsAnimationController;-><init>(Landroid/content/Context;Lcom/android/server/wm/AppTransition;Landroid/os/Handler;Landroid/animation/AnimationHandler;)V
PLcom/android/server/wm/DimLayer;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DimLayer$DimLayerUser;ILjava/lang/String;)V
-PLcom/android/server/wm/DimLayer;->adjustAlpha(F)V
-PLcom/android/server/wm/DimLayer;->adjustBounds()V
PLcom/android/server/wm/DimLayer;->adjustLayer(I)V
PLcom/android/server/wm/DimLayer;->constructSurface(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/DimLayer;->getBoundsForFullscreen(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/DimLayer;->getLayer()I
-PLcom/android/server/wm/DimLayer;->getTargetAlpha()F
-PLcom/android/server/wm/DimLayer;->hide(J)V
-PLcom/android/server/wm/DimLayer;->isAnimating()Z
-PLcom/android/server/wm/DimLayer;->setAlpha(F)V
-PLcom/android/server/wm/DimLayer;->setBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/DimLayer;->setBoundsForFullscreen()V
-PLcom/android/server/wm/DimLayer;->setLayer(I)V
-PLcom/android/server/wm/DimLayer;->show(IFJ)V
-PLcom/android/server/wm/DimLayer;->stepAnimation()Z
+PLcom/android/server/wm/DimLayer;->durationEndsEarlier(J)Z
+PLcom/android/server/wm/DimLayer;->show()V
PLcom/android/server/wm/DimLayerController$DimLayerState;-><init>()V
PLcom/android/server/wm/DimLayerController$DimLayerState;-><init>(Lcom/android/server/wm/DimLayerController$DimLayerState;)V
PLcom/android/server/wm/DimLayerController;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DimLayerController;->applyDim(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;Z)V
PLcom/android/server/wm/DimLayerController;->applyDimBehind(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;)V
PLcom/android/server/wm/DimLayerController;->getContinueDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;)Z
PLcom/android/server/wm/DimLayerController;->getDimLayerTag(Lcom/android/server/wm/DimLayer$DimLayerUser;)Ljava/lang/String;
-PLcom/android/server/wm/DimLayerController;->getOrCreateDimLayerState(Lcom/android/server/wm/DimLayer$DimLayerUser;)Lcom/android/server/wm/DimLayerController$DimLayerState;
PLcom/android/server/wm/DimLayerController;->isDimming()Z
PLcom/android/server/wm/DimLayerController;->removeDimLayerUser(Lcom/android/server/wm/DimLayer$DimLayerUser;)V
PLcom/android/server/wm/DimLayerController;->setContinueDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;)V
PLcom/android/server/wm/DimLayerController;->startDimmingIfNeeded(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;Z)V
-PLcom/android/server/wm/DimLayerController;->updateDimLayer(Lcom/android/server/wm/DimLayer$DimLayerUser;)V
PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>()V
PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>(Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;)V
-PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V
PLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;-><init>()V
-PLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->fillsParent()Z
PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/lang/String;)V
PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->addChild(Lcom/android/server/wm/WindowToken;)V
-PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getOrientation()I
-PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_153307(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowToken;)I
-PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_153746(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_153978(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowToken;)I
PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;-><init>()V
PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;-><init>(Lcom/android/server/wm/DisplayContent$ScreenshotApplicationState;)V
PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;->reset(Z)V
PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;-><init>()V
+PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;->reset()V
PLcom/android/server/wm/DisplayContent$TaskStackContainers;-><init>(Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/DisplayContent$TaskStackContainers;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent$TaskStackContainers;)V
PLcom/android/server/wm/DisplayContent$TaskStackContainers;->addChild(Lcom/android/server/wm/TaskStack;Z)V
PLcom/android/server/wm/DisplayContent$TaskStackContainers;->addStackToDisplay(Lcom/android/server/wm/TaskStack;Z)V
-PLcom/android/server/wm/DisplayContent$TaskStackContainers;->findPositionForStack(ILcom/android/server/wm/TaskStack;Z)I
-PLcom/android/server/wm/DisplayContent$TaskStackContainers;->getOrientation()I
-PLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/TaskStack;Z)V
-PLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/DisplayContent$TaskStackContainers;->isOnTop()Z
PLcom/android/server/wm/DisplayContent;->-com_android_server_wm_DisplayContent-mthref-1(Landroid/graphics/Rect;IIIIZI)Landroid/graphics/GraphicBuffer;
PLcom/android/server/wm/DisplayContent;->-get0(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/TaskStack;
PLcom/android/server/wm/DisplayContent;->-get1(Lcom/android/server/wm/DisplayContent;)I
PLcom/android/server/wm/DisplayContent;->-set0(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/TaskStack;)Lcom/android/server/wm/TaskStack;
PLcom/android/server/wm/DisplayContent;->-set1(Lcom/android/server/wm/DisplayContent;I)I
-PLcom/android/server/wm/DisplayContent;->-set2(Lcom/android/server/wm/DisplayContent;I)I
PLcom/android/server/wm/DisplayContent;-><init>(Landroid/view/Display;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowLayersController;Lcom/android/server/wm/WallpaperController;)V
PLcom/android/server/wm/DisplayContent;->addStackToDisplay(IZ)Lcom/android/server/wm/TaskStack;
PLcom/android/server/wm/DisplayContent;->addWindowToken(Landroid/os/IBinder;Lcom/android/server/wm/WindowToken;)V
-PLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIIII)V
-PLcom/android/server/wm/DisplayContent;->animateDimLayers()Z
-PLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V
-PLcom/android/server/wm/DisplayContent;->checkCompleteDeferredRemoval()Z
+PLcom/android/server/wm/DisplayContent;->canAddToastWindowForUid(I)Z
PLcom/android/server/wm/DisplayContent;->checkWaitingForWindows()Z
-PLcom/android/server/wm/DisplayContent;->clearLayoutNeeded()V
-PLcom/android/server/wm/DisplayContent;->computeCompatSmallestWidth(ZIIII)I
-PLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/DisplayContent;->computeSizeRangesAndScreenLayout(Landroid/view/DisplayInfo;IZIIIFLandroid/content/res/Configuration;)V
PLcom/android/server/wm/DisplayContent;->convertCropForSurfaceFlinger(Landroid/graphics/Rect;III)V
PLcom/android/server/wm/DisplayContent;->deltaRotation(II)I
-PLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+PLcom/android/server/wm/DisplayContent;->findTaskForResizePoint(II)Lcom/android/server/wm/Task;
PLcom/android/server/wm/DisplayContent;->getDisplay()Landroid/view/Display;
PLcom/android/server/wm/DisplayContent;->getDisplayMetrics()Landroid/util/DisplayMetrics;
-PLcom/android/server/wm/DisplayContent;->getDockedDividerController()Lcom/android/server/wm/DockedStackDividerController;
-PLcom/android/server/wm/DisplayContent;->getDockedStackIgnoringVisibility()Lcom/android/server/wm/TaskStack;
-PLcom/android/server/wm/DisplayContent;->getLastOrientation()I
-PLcom/android/server/wm/DisplayContent;->getNeedsMenu(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->getOrientation()I
PLcom/android/server/wm/DisplayContent;->getPinnedStackController()Lcom/android/server/wm/PinnedStackController;
-PLcom/android/server/wm/DisplayContent;->getRotation()I
-PLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
PLcom/android/server/wm/DisplayContent;->hasAccess(I)Z
PLcom/android/server/wm/DisplayContent;->hasSecureWindowOnScreen()Z
PLcom/android/server/wm/DisplayContent;->initializeDisplayBaseInfo()V
-PLcom/android/server/wm/DisplayContent;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z
PLcom/android/server/wm/DisplayContent;->isDimming()Z
-PLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z
PLcom/android/server/wm/DisplayContent;->isReady()Z
PLcom/android/server/wm/DisplayContent;->isRemovalDeferred()Z
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_109805(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_112425(Landroid/view/WindowManagerPolicy;ZZLcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_112991(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_117361(IILcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_118293(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_118854(Landroid/view/WindowManagerPolicy;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_130079(IZLandroid/os/IBinder;Landroid/util/MutableBoolean;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20286(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20782(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28225(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->layoutAndAssignWindowLayersIfNeeded()V
+PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_112613(Landroid/view/WindowManagerPolicy;ZZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_117363(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_118481(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_119045(Landroid/view/WindowManagerPolicy;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_44157(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_49307(ZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_99578(ILcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/DisplayContent;->onAppTransitionDone()V
PLcom/android/server/wm/DisplayContent;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayContent;->onDescendantOverrideConfigurationChanged()V
PLcom/android/server/wm/DisplayContent;->onWindowFreezeTimeout()V
-PLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;Z)V
-PLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
PLcom/android/server/wm/DisplayContent;->prepareFreezingTaskBounds()V
-PLcom/android/server/wm/DisplayContent;->prepareWindowSurfaces()V
PLcom/android/server/wm/DisplayContent;->reParentWindowToken(Lcom/android/server/wm/WindowToken;)V
-PLcom/android/server/wm/DisplayContent;->reduceCompatConfigWidthSize(IIILandroid/util/DisplayMetrics;III)I
-PLcom/android/server/wm/DisplayContent;->reduceConfigLayout(IIFIIII)I
PLcom/android/server/wm/DisplayContent;->removeAppToken(Landroid/os/IBinder;)V
-PLcom/android/server/wm/DisplayContent;->removeExistingTokensIfPossible()V
PLcom/android/server/wm/DisplayContent;->removeWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
-PLcom/android/server/wm/DisplayContent;->resetDimming()V
-PLcom/android/server/wm/DisplayContent;->scheduleToastWindowsTimeoutIfNeededLocked(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->screenshotApplications(Landroid/os/IBinder;IIZFZZLcom/android/server/wm/DisplayContent$Screenshoter;)Ljava/lang/Object;
PLcom/android/server/wm/DisplayContent;->screenshotApplicationsToBuffer(Landroid/os/IBinder;IIZFZZ)Landroid/graphics/GraphicBuffer;
-PLcom/android/server/wm/DisplayContent;->setExitingTokensHasVisible(Z)V
PLcom/android/server/wm/DisplayContent;->setInputMethodAnimLayerAdjustment(I)V
-PLcom/android/server/wm/DisplayContent;->setInputMethodTarget(Lcom/android/server/wm/WindowState;ZI)V
PLcom/android/server/wm/DisplayContent;->setLastOrientation(I)V
-PLcom/android/server/wm/DisplayContent;->setLayoutNeeded()V
PLcom/android/server/wm/DisplayContent;->startKeyguardExitOnNonAppWindows(ZZ)V
-PLcom/android/server/wm/DisplayContent;->stopDimmingIfNeeded()V
PLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetrics(III)V
PLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded()V
-PLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(I)Landroid/view/DisplayInfo;
PLcom/android/server/wm/DisplayContent;->updateDisplayInfo()V
-PLcom/android/server/wm/DisplayContent;->updateRotationUnchecked(Z)Z
PLcom/android/server/wm/DisplayContent;->updateStackBoundsAfterConfigChange(Ljava/util/List;)V
-PLcom/android/server/wm/DisplayContent;->updateSystemUiVisibility(II)V
-PLcom/android/server/wm/DisplayContent;->updateWallpaperForAnimator(Lcom/android/server/wm/WindowAnimator;)V
-PLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator(Lcom/android/server/wm/WindowAnimator;)V
PLcom/android/server/wm/DisplayContent;->waitForAllWindowsDrawn()V
PLcom/android/server/wm/DisplaySettings;-><init>()V
PLcom/android/server/wm/DisplaySettings;->getOverscanLocked(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;)V
PLcom/android/server/wm/DisplaySettings;->readSettingsLocked()V
PLcom/android/server/wm/DockedStackDividerController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/DockedStackDividerController;->animate(J)Z
PLcom/android/server/wm/DockedStackDividerController;->checkMinimizeChanged(Z)V
PLcom/android/server/wm/DockedStackDividerController;->getContentWidth()I
PLcom/android/server/wm/DockedStackDividerController;->getImeHeightAdjustedFor()I
-PLcom/android/server/wm/DockedStackDividerController;->initSnapAlgorithmForRotations()V
PLcom/android/server/wm/DockedStackDividerController;->isHomeStackResizable()Z
PLcom/android/server/wm/DockedStackDividerController;->isImeHideRequested()Z
-PLcom/android/server/wm/DockedStackDividerController;->isMinimizedDock()Z
PLcom/android/server/wm/DockedStackDividerController;->loadDimens()V
PLcom/android/server/wm/DockedStackDividerController;->notifyAdjustedForImeChanged(ZJ)V
PLcom/android/server/wm/DockedStackDividerController;->notifyAppTransitionStarting(Landroid/util/ArraySet;I)V
@@ -14859,32 +15994,16 @@ PLcom/android/server/wm/DockedStackDividerController;->notifyDockedDividerVisibi
PLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackExistsChanged(Z)V
PLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackMinimizedChanged(ZZZ)V
PLcom/android/server/wm/DockedStackDividerController;->onConfigurationChanged()V
-PLcom/android/server/wm/DockedStackDividerController;->positionDockedStackedDivider(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/DockedStackDividerController;->reevaluateVisibility(Z)V
PLcom/android/server/wm/DockedStackDividerController;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V
PLcom/android/server/wm/DockedStackDividerController;->resetImeHideRequested()V
-PLcom/android/server/wm/DockedStackDividerController;->setAdjustedForIme(ZZZLcom/android/server/wm/WindowState;I)V
PLcom/android/server/wm/DockedStackDividerController;->setMinimizedDockedStack(ZZ)V
PLcom/android/server/wm/DockedStackDividerController;->setTouchRegion(Landroid/graphics/Rect;)V
PLcom/android/server/wm/DockedStackDividerController;->setWindow(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/DockedStackDividerController;->wasVisible()Z
PLcom/android/server/wm/InputConsumerImpl;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;Landroid/view/InputChannel;)V
PLcom/android/server/wm/InputConsumerImpl;->getLayerLw(I)I
-PLcom/android/server/wm/InputConsumerImpl;->layout(II)V
-PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->-wrap0(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V
PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;)V
PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;)V
-PLcom/android/server/wm/InputMonitor;->-get1(Lcom/android/server/wm/InputMonitor;)Z
-PLcom/android/server/wm/InputMonitor;->-get3(Lcom/android/server/wm/InputMonitor;)Z
-PLcom/android/server/wm/InputMonitor;->-get4(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/input/InputWindowHandle;
-PLcom/android/server/wm/InputMonitor;->-get6(Lcom/android/server/wm/InputMonitor;)[Lcom/android/server/input/InputWindowHandle;
-PLcom/android/server/wm/InputMonitor;->-get7(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowManagerService;
-PLcom/android/server/wm/InputMonitor;->-get8(Lcom/android/server/wm/InputMonitor;)Landroid/graphics/Rect;
-PLcom/android/server/wm/InputMonitor;->-set0(Lcom/android/server/wm/InputMonitor;Z)Z
-PLcom/android/server/wm/InputMonitor;->-set1(Lcom/android/server/wm/InputMonitor;Z)Z
-PLcom/android/server/wm/InputMonitor;->-set2(Lcom/android/server/wm/InputMonitor;Z)Z
-PLcom/android/server/wm/InputMonitor;->-set3(Lcom/android/server/wm/InputMonitor;Z)Z
-PLcom/android/server/wm/InputMonitor;->-wrap1(Lcom/android/server/wm/InputMonitor;)V
PLcom/android/server/wm/InputMonitor;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/InputMonitor;->addInputConsumer(Ljava/lang/String;Lcom/android/server/wm/InputConsumerImpl;)V
PLcom/android/server/wm/InputMonitor;->createInputConsumer(Ljava/lang/String;Landroid/view/InputChannel;)V
@@ -14892,21 +16011,21 @@ PLcom/android/server/wm/InputMonitor;->destroyInputConsumer(Ljava/lang/String;)Z
PLcom/android/server/wm/InputMonitor;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
PLcom/android/server/wm/InputMonitor;->disposeInputConsumer(Lcom/android/server/wm/InputConsumerImpl;)Z
PLcom/android/server/wm/InputMonitor;->freezeInputDispatchingLw()V
-PLcom/android/server/wm/InputMonitor;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J
-PLcom/android/server/wm/InputMonitor;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
-PLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V
PLcom/android/server/wm/InputMonitor;->notifyConfigurationChanged()V
PLcom/android/server/wm/InputMonitor;->pauseDispatchingLw(Lcom/android/server/wm/WindowToken;)V
PLcom/android/server/wm/InputMonitor;->resumeDispatchingLw(Lcom/android/server/wm/WindowToken;)V
PLcom/android/server/wm/InputMonitor;->setEventDispatchingLw(Z)V
-PLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V
-PLcom/android/server/wm/InputMonitor;->setUpdateInputWindowsNeededLw()V
PLcom/android/server/wm/InputMonitor;->thawInputDispatchingLw()V
PLcom/android/server/wm/InputMonitor;->updateInputDispatchModeLw()V
-PLcom/android/server/wm/InputMonitor;->updateInputWindowsLw(Z)V
PLcom/android/server/wm/InputMonitor;->waitForInputDevicesReady(J)Z
+PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;-><init>(Lcom/android/server/wm/KeyguardDisableHandler;Landroid/os/Handler;)V
+PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;->acquired()V
+PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;->updateAllowState()V
+PLcom/android/server/wm/KeyguardDisableHandler;->-get0()Ljava/lang/String;
+PLcom/android/server/wm/KeyguardDisableHandler;->-get1(Lcom/android/server/wm/KeyguardDisableHandler;)I
+PLcom/android/server/wm/KeyguardDisableHandler;->-set0(Lcom/android/server/wm/KeyguardDisableHandler;I)I
PLcom/android/server/wm/KeyguardDisableHandler;-><init>(Landroid/content/Context;Landroid/view/WindowManagerPolicy;)V
+PLcom/android/server/wm/KeyguardDisableHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;-><init>(Lcom/android/server/wm/PinnedStackController;)V
PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;-><init>(Lcom/android/server/wm/PinnedStackController;Lcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;)V
PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->lambda$-com_android_server_wm_PinnedStackController$PinnedStackControllerCallback_4973(I)V
@@ -14918,80 +16037,50 @@ PLcom/android/server/wm/PinnedStackController;->-get2(Lcom/android/server/wm/Pin
PLcom/android/server/wm/PinnedStackController;->-set0(Lcom/android/server/wm/PinnedStackController;I)I
PLcom/android/server/wm/PinnedStackController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/PinnedStackController;->dpToPx(FLandroid/util/DisplayMetrics;)I
-PLcom/android/server/wm/PinnedStackController;->getDefaultBounds()Landroid/graphics/Rect;
-PLcom/android/server/wm/PinnedStackController;->getInsetBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect;
-PLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;Z)Landroid/graphics/Rect;
PLcom/android/server/wm/PinnedStackController;->isValidPictureInPictureAspectRatio(F)Z
PLcom/android/server/wm/PinnedStackController;->notifyActionsChanged(Ljava/util/List;)V
PLcom/android/server/wm/PinnedStackController;->notifyImeVisibilityChanged(ZI)V
PLcom/android/server/wm/PinnedStackController;->notifyMinimizeChanged(Z)V
-PLcom/android/server/wm/PinnedStackController;->notifyMovementBoundsChanged(Z)V
PLcom/android/server/wm/PinnedStackController;->onConfigurationChanged()V
PLcom/android/server/wm/PinnedStackController;->onDisplayInfoChanged()V
PLcom/android/server/wm/PinnedStackController;->registerPinnedStackListener(Landroid/view/IPinnedStackListener;)V
-PLcom/android/server/wm/PinnedStackController;->reloadResources()V
-PLcom/android/server/wm/PinnedStackController;->setAdjustedForIme(ZI)V
-PLcom/android/server/wm/PinnedStackController;->transformBoundsToAspectRatio(Landroid/graphics/Rect;FZ)Landroid/graphics/Rect;
PLcom/android/server/wm/PointerEventDispatcher;-><init>(Landroid/view/InputChannel;)V
PLcom/android/server/wm/PointerEventDispatcher;->registerInputEventListener(Landroid/view/WindowManagerPolicy$PointerEventListener;)V
PLcom/android/server/wm/RootWindowContainer$MyHandler;-><init>(Lcom/android/server/wm/RootWindowContainer;Landroid/os/Looper;)V
-PLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/wm/RootWindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction(ZII)V
PLcom/android/server/wm/RootWindowContainer;->closeSystemDialogs(Ljava/lang/String;)V
-PLcom/android/server/wm/RootWindowContainer;->computeFocusedWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z
PLcom/android/server/wm/RootWindowContainer;->createDisplayContent(Landroid/view/Display;)Lcom/android/server/wm/DisplayContent;
PLcom/android/server/wm/RootWindowContainer;->getDisplaysInFocusOrder(Landroid/util/SparseIntArray;)V
-PLcom/android/server/wm/RootWindowContainer;->getWindowTokenDisplay(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_17105(IZLcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_6986(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_7267(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_17861(IZLcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/RootWindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/RootWindowContainer;->prepareFreezingTaskBounds()V
-PLcom/android/server/wm/RootWindowContainer;->removeReplacedWindows()V
PLcom/android/server/wm/RootWindowContainer;->setDisplayOverrideConfigurationIfNeeded(Landroid/content/res/Configuration;I)[I
PLcom/android/server/wm/RootWindowContainer;->setGlobalConfigurationIfNeeded(Landroid/content/res/Configuration;)[I
PLcom/android/server/wm/RootWindowContainer;->setSecureSurfaceState(IZ)V
+PLcom/android/server/wm/RootWindowContainer;->toBrightnessOverride(F)I
PLcom/android/server/wm/RootWindowContainer;->updateStackBoundsAfterConfigChange()[I
PLcom/android/server/wm/ScreenRotationAnimation;-><init>(Landroid/content/Context;Lcom/android/server/wm/DisplayContent;Landroid/view/SurfaceSession;ZZZLcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/ScreenRotationAnimation;->createRotationMatrix(IIILandroid/graphics/Matrix;)V
PLcom/android/server/wm/ScreenRotationAnimation;->dismiss(Landroid/view/SurfaceSession;JFIIII)Z
-PLcom/android/server/wm/ScreenRotationAnimation;->getEnterTransformation()Landroid/view/animation/Transformation;
-PLcom/android/server/wm/ScreenRotationAnimation;->hasAnimations()Z
PLcom/android/server/wm/ScreenRotationAnimation;->hasScreenshot()Z
-PLcom/android/server/wm/ScreenRotationAnimation;->isAnimating()Z
PLcom/android/server/wm/ScreenRotationAnimation;->isRotating()Z
PLcom/android/server/wm/ScreenRotationAnimation;->kill()V
PLcom/android/server/wm/ScreenRotationAnimation;->setRotationInTransaction(I)V
-PLcom/android/server/wm/ScreenRotationAnimation;->setSnapshotTransformInTransaction(Landroid/graphics/Matrix;F)V
+PLcom/android/server/wm/ScreenRotationAnimation;->setRotationInTransaction(ILandroid/view/SurfaceSession;JFII)Z
PLcom/android/server/wm/ScreenRotationAnimation;->startAnimation(Landroid/view/SurfaceSession;JFIIZII)Z
-PLcom/android/server/wm/ScreenRotationAnimation;->stepAnimation(J)Z
PLcom/android/server/wm/ScreenRotationAnimation;->stepAnimationLocked(J)Z
-PLcom/android/server/wm/ScreenRotationAnimation;->updateSurfacesInTransaction()V
-PLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)V
PLcom/android/server/wm/Session;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I
PLcom/android/server/wm/Session;->binderDied()V
PLcom/android/server/wm/Session;->cancelAlertWindowNotification()V
-PLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;)V
-PLcom/android/server/wm/Session;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V
PLcom/android/server/wm/Session;->getInTouchMode()Z
PLcom/android/server/wm/Session;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId;
PLcom/android/server/wm/Session;->killSessionLocked()V
-PLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/server/wm/Session;->onWindowSurfaceVisibilityChanged(Lcom/android/server/wm/WindowSurfaceController;ZI)V
-PLcom/android/server/wm/Session;->performHapticFeedback(Landroid/view/IWindow;IZ)Z
-PLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I
PLcom/android/server/wm/Session;->remove(Landroid/view/IWindow;)V
-PLcom/android/server/wm/Session;->sendWallpaperCommand(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle;
PLcom/android/server/wm/Session;->setHasOverlayUi(Z)V
+PLcom/android/server/wm/Session;->setInTouchMode(Z)V
PLcom/android/server/wm/Session;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
PLcom/android/server/wm/Session;->setTransparentRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V
PLcom/android/server/wm/Session;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V
-PLcom/android/server/wm/Session;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V
-PLcom/android/server/wm/Session;->windowAddedLocked(Ljava/lang/String;)V
PLcom/android/server/wm/Session;->windowRemovedLocked()V
PLcom/android/server/wm/SnapshotStartingData;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/app/ActivityManager$TaskSnapshot;)V
PLcom/android/server/wm/SnapshotStartingData;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;)Landroid/view/WindowManagerPolicy$StartingSurface;
@@ -15000,88 +16089,65 @@ PLcom/android/server/wm/SplashScreenStartingData;->createStartingSurface(Lcom/an
PLcom/android/server/wm/StackWindowController$H;-><init>(Ljava/lang/ref/WeakReference;Landroid/os/Looper;)V
PLcom/android/server/wm/StackWindowController;-><init>(ILcom/android/server/wm/StackWindowListener;IZLandroid/graphics/Rect;)V
PLcom/android/server/wm/StackWindowController;-><init>(ILcom/android/server/wm/StackWindowListener;IZLandroid/graphics/Rect;Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/StackWindowController;->getBounds(Landroid/graphics/Rect;)V
PLcom/android/server/wm/StackWindowController;->getRawBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/StackWindowController;->positionChildAtTop(Lcom/android/server/wm/TaskWindowContainerController;Z)V
+PLcom/android/server/wm/StackWindowController;->positionChildAtBottom(Lcom/android/server/wm/TaskWindowContainerController;)V
PLcom/android/server/wm/StartingData;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/Task;-><init>(ILcom/android/server/wm/TaskStack;ILcom/android/server/wm/WindowManagerService;Landroid/graphics/Rect;Landroid/content/res/Configuration;IZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/TaskWindowContainerController;)V
+PLcom/android/server/wm/SurfaceControlWithBackground;->setOpaque(Z)V
+PLcom/android/server/wm/SurfaceControlWithBackground;->setSize(II)V
+PLcom/android/server/wm/SurfaceControlWithBackground;->setTransparentRegionHint(Landroid/graphics/Region;)V
PLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/AppWindowToken;I)V
-PLcom/android/server/wm/Task;->cancelTaskThumbnailTransition()V
-PLcom/android/server/wm/Task;->cancelTaskWindowTransition()V
-PLcom/android/server/wm/Task;->fillsParent()Z
PLcom/android/server/wm/Task;->forceWindowsScaleable(Z)V
-PLcom/android/server/wm/Task;->getAdjustedAddPosition(I)I
-PLcom/android/server/wm/Task;->getBounds(Landroid/graphics/Rect;)V
PLcom/android/server/wm/Task;->getController()Lcom/android/server/wm/TaskWindowContainerController;
+PLcom/android/server/wm/Task;->getLayerForDim(Lcom/android/server/wm/WindowStateAnimator;II)I
PLcom/android/server/wm/Task;->getTaskDescription()Landroid/app/ActivityManager$TaskDescription;
+PLcom/android/server/wm/Task;->getTopFullscreenAppToken()Lcom/android/server/wm/AppWindowToken;
PLcom/android/server/wm/Task;->hasWindowsAlive()Z
-PLcom/android/server/wm/Task;->isDragResizing()Z
-PLcom/android/server/wm/Task;->isFloating()Z
-PLcom/android/server/wm/Task;->isHomeTask()Z
-PLcom/android/server/wm/Task;->onParentSet()V
PLcom/android/server/wm/Task;->positionChildAt(ILcom/android/server/wm/AppWindowToken;Z)V
+PLcom/android/server/wm/Task;->prepareFreezingBounds()V
PLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/Task;->removeIfPossible()V
PLcom/android/server/wm/Task;->removeImmediately()V
-PLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;Landroid/content/res/Configuration;)I
PLcom/android/server/wm/Task;->setSendingToBottom(Z)V
-PLcom/android/server/wm/Task;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
PLcom/android/server/wm/Task;->shouldDeferRemoval()Z
-PLcom/android/server/wm/Task;->showForAllUsers()Z
PLcom/android/server/wm/Task;->updateDisplayInfo(Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/TaskSnapshotCache$CacheEntry;-><init>(Landroid/app/ActivityManager$TaskSnapshot;Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/TaskSnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotLoader;)V
-PLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
+PLcom/android/server/wm/TaskSnapshotCache;->onAppDied(Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/TaskSnapshotCache;->onAppRemoved(Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/TaskSnapshotCache;->onTaskRemoved(I)V
-PLcom/android/server/wm/TaskSnapshotCache;->putSnapshot(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$TaskSnapshot;)V
PLcom/android/server/wm/TaskSnapshotCache;->removeRunningEntry(I)V
PLcom/android/server/wm/TaskSnapshotCache;->tryRestoreFromDisk(IIZ)Landroid/app/ActivityManager$TaskSnapshot;
-PLcom/android/server/wm/TaskSnapshotController;->-com_android_server_wm_TaskSnapshotController-mthref-0(I)Ljava/io/File;
PLcom/android/server/wm/TaskSnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/TaskSnapshotController;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Landroid/view/WindowManagerPolicy$StartingSurface;
PLcom/android/server/wm/TaskSnapshotController;->drawAppThemeSnapshot(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot;
-PLcom/android/server/wm/TaskSnapshotController;->getClosingTasks(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
-PLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
PLcom/android/server/wm/TaskSnapshotController;->getSnapshotMode(Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/TaskSnapshotController;->handleClosingApps(Landroid/util/ArraySet;)V
PLcom/android/server/wm/TaskSnapshotController;->minRect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/graphics/Rect;
PLcom/android/server/wm/TaskSnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/AppWindowToken;Z)V
PLcom/android/server/wm/TaskSnapshotController;->notifyTaskRemovedFromRecents(II)V
+PLcom/android/server/wm/TaskSnapshotController;->onAppDied(Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/TaskSnapshotController;->onAppRemoved(Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/TaskSnapshotController;->onTransitionStarting()V
PLcom/android/server/wm/TaskSnapshotController;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
-PLcom/android/server/wm/TaskSnapshotController;->setPersisterPaused(Z)V
PLcom/android/server/wm/TaskSnapshotController;->shouldDisableSnapshots()Z
-PLcom/android/server/wm/TaskSnapshotController;->snapshotTask(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot;
-PLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;)V
PLcom/android/server/wm/TaskSnapshotController;->systemReady()V
PLcom/android/server/wm/TaskSnapshotLoader;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;)V
PLcom/android/server/wm/TaskSnapshotLoader;->loadTask(IIZ)Landroid/app/ActivityManager$TaskSnapshot;
PLcom/android/server/wm/TaskSnapshotPersister$1;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Ljava/lang/String;)V
-PLcom/android/server/wm/TaskSnapshotPersister$1;->run()V
PLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;II)V
PLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;->write()V
PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Landroid/util/ArraySet;[I)V
-PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I
-PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V
PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;IILandroid/app/ActivityManager$TaskSnapshot;)V
PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onDequeuedLocked()V
PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onQueuedLocked()V
PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->write()V
-PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeBuffer()Z
-PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeProto()Z
PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;)V
PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V
PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onDequeuedLocked()V
PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onQueuedLocked()V
-PLcom/android/server/wm/TaskSnapshotPersister;->-get1(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/lang/Object;
PLcom/android/server/wm/TaskSnapshotPersister;->-get2(Lcom/android/server/wm/TaskSnapshotPersister;)Z
PLcom/android/server/wm/TaskSnapshotPersister;->-get3(Lcom/android/server/wm/TaskSnapshotPersister;)Landroid/util/ArraySet;
PLcom/android/server/wm/TaskSnapshotPersister;->-get4(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque;
-PLcom/android/server/wm/TaskSnapshotPersister;->-get5(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque;
-PLcom/android/server/wm/TaskSnapshotPersister;->-set0(Lcom/android/server/wm/TaskSnapshotPersister;Z)Z
PLcom/android/server/wm/TaskSnapshotPersister;->-wrap0(Lcom/android/server/wm/TaskSnapshotPersister;I)Z
PLcom/android/server/wm/TaskSnapshotPersister;->-wrap1(Lcom/android/server/wm/TaskSnapshotPersister;I)Ljava/io/File;
PLcom/android/server/wm/TaskSnapshotPersister;->-wrap2(Lcom/android/server/wm/TaskSnapshotPersister;II)V
@@ -15089,15 +16155,9 @@ PLcom/android/server/wm/TaskSnapshotPersister;-><init>(Lcom/android/server/wm/Ta
PLcom/android/server/wm/TaskSnapshotPersister;->createDirectory(I)Z
PLcom/android/server/wm/TaskSnapshotPersister;->deleteSnapshot(II)V
PLcom/android/server/wm/TaskSnapshotPersister;->ensureStoreQueueDepthLocked()V
-PLcom/android/server/wm/TaskSnapshotPersister;->getBitmapFile(II)Ljava/io/File;
-PLcom/android/server/wm/TaskSnapshotPersister;->getDirectory(I)Ljava/io/File;
-PLcom/android/server/wm/TaskSnapshotPersister;->getProtoFile(II)Ljava/io/File;
-PLcom/android/server/wm/TaskSnapshotPersister;->getReducedResolutionBitmapFile(II)Ljava/io/File;
PLcom/android/server/wm/TaskSnapshotPersister;->onTaskRemovedFromRecents(II)V
PLcom/android/server/wm/TaskSnapshotPersister;->persistSnapshot(IILandroid/app/ActivityManager$TaskSnapshot;)V
PLcom/android/server/wm/TaskSnapshotPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[I)V
-PLcom/android/server/wm/TaskSnapshotPersister;->sendToQueueLocked(Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V
-PLcom/android/server/wm/TaskSnapshotPersister;->setPaused(Z)V
PLcom/android/server/wm/TaskSnapshotPersister;->start()V
PLcom/android/server/wm/TaskSnapshotSurface$1;-><init>(Landroid/os/Looper;)V
PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;-><init>(IIIII)V
@@ -15110,8 +16170,8 @@ PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->setInse
PLcom/android/server/wm/TaskSnapshotSurface$Window;-><init>()V
PLcom/android/server/wm/TaskSnapshotSurface$Window;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZI)V
PLcom/android/server/wm/TaskSnapshotSurface$Window;->setOuter(Lcom/android/server/wm/TaskSnapshotSurface;)V
+PLcom/android/server/wm/TaskSnapshotSurface;->-get1(Lcom/android/server/wm/TaskSnapshotSurface;)I
PLcom/android/server/wm/TaskSnapshotSurface;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotSurface$Window;Landroid/view/Surface;Landroid/app/ActivityManager$TaskSnapshot;Ljava/lang/CharSequence;IIIIIILandroid/graphics/Rect;I)V
-PLcom/android/server/wm/TaskSnapshotSurface;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/wm/TaskSnapshotSurface;
PLcom/android/server/wm/TaskSnapshotSurface;->drawSizeMatchSnapshot(Landroid/graphics/GraphicBuffer;)V
PLcom/android/server/wm/TaskSnapshotSurface;->drawSnapshot()V
PLcom/android/server/wm/TaskSnapshotSurface;->remove()V
@@ -15119,273 +16179,167 @@ PLcom/android/server/wm/TaskSnapshotSurface;->reportDrawn()V
PLcom/android/server/wm/TaskSnapshotSurface;->setFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
PLcom/android/server/wm/TaskStack;-><init>(Lcom/android/server/wm/WindowManagerService;I)V
PLcom/android/server/wm/TaskStack;->addTask(Lcom/android/server/wm/Task;IZZ)V
-PLcom/android/server/wm/TaskStack;->checkCompleteDeferredRemoval()Z
-PLcom/android/server/wm/TaskStack;->computeMinPosition(II)I
PLcom/android/server/wm/TaskStack;->findHomeTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskStack;->findPositionForTask(Lcom/android/server/wm/Task;IZZ)I
-PLcom/android/server/wm/TaskStack;->getDisplayInfo()Landroid/view/DisplayInfo;
PLcom/android/server/wm/TaskStack;->getRawFullscreen()Z
PLcom/android/server/wm/TaskStack;->hasMovementAnimations()Z
PLcom/android/server/wm/TaskStack;->isAdjustedForIme()Z
-PLcom/android/server/wm/TaskStack;->isAnimatingBounds()Z
-PLcom/android/server/wm/TaskStack;->isAnimatingForIme()Z
-PLcom/android/server/wm/TaskStack;->isAttachedToDisplay()Z
-PLcom/android/server/wm/TaskStack;->isForceScaled()Z
-PLcom/android/server/wm/TaskStack;->isMinimizedDockAndHomeStackResizable()Z
PLcom/android/server/wm/TaskStack;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;Z)V
-PLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;ZZ)V
PLcom/android/server/wm/TaskStack;->prepareFreezingTaskBounds()V
PLcom/android/server/wm/TaskStack;->removeChild(Lcom/android/server/wm/Task;)V
PLcom/android/server/wm/TaskStack;->removeChild(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/TaskStack;->resetAdjustedForIme(Z)V
-PLcom/android/server/wm/TaskStack;->setAdjustedBounds(Landroid/graphics/Rect;)V
PLcom/android/server/wm/TaskStack;->setBounds(Landroid/graphics/Rect;)Z
PLcom/android/server/wm/TaskStack;->toShortString()Ljava/lang/String;
PLcom/android/server/wm/TaskStack;->updateBoundsAfterConfigChange()Z
PLcom/android/server/wm/TaskStack;->updateDisplayInfo(Landroid/graphics/Rect;)V
PLcom/android/server/wm/TaskTapPointerEventListener;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
-PLcom/android/server/wm/TaskTapPointerEventListener;->setTouchExcludeRegion(Landroid/graphics/Region;)V
PLcom/android/server/wm/TaskWindowContainerController$H;-><init>(Ljava/lang/ref/WeakReference;Landroid/os/Looper;)V
PLcom/android/server/wm/TaskWindowContainerController$H;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/wm/TaskWindowContainerController;-><init>(ILcom/android/server/wm/TaskWindowContainerListener;Lcom/android/server/wm/StackWindowController;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZZZLandroid/app/ActivityManager$TaskDescription;)V
-PLcom/android/server/wm/TaskWindowContainerController;-><init>(ILcom/android/server/wm/TaskWindowContainerListener;Lcom/android/server/wm/StackWindowController;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/TaskWindowContainerController;->cancelThumbnailTransition()V
-PLcom/android/server/wm/TaskWindowContainerController;->cancelWindowTransition()V
PLcom/android/server/wm/TaskWindowContainerController;->createTask(ILcom/android/server/wm/TaskStack;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZLandroid/app/ActivityManager$TaskDescription;)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/TaskWindowContainerController;->getBounds(Landroid/graphics/Rect;)V
PLcom/android/server/wm/TaskWindowContainerController;->positionChildAt(Lcom/android/server/wm/AppWindowContainerController;I)V
PLcom/android/server/wm/TaskWindowContainerController;->removeContainer()V
PLcom/android/server/wm/TaskWindowContainerController;->reportSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V
-PLcom/android/server/wm/TaskWindowContainerController;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
-PLcom/android/server/wm/UnknownAppVisibilityController;->-com_android_server_wm_UnknownAppVisibilityController-mthref-0()V
PLcom/android/server/wm/UnknownAppVisibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/UnknownAppVisibilityController;->allResolved()Z
PLcom/android/server/wm/UnknownAppVisibilityController;->appRemovedOrHidden(Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/UnknownAppVisibilityController;->clear()V
PLcom/android/server/wm/UnknownAppVisibilityController;->notifyAppResumedFinished(Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/UnknownAppVisibilityController;->notifyLaunched(Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/UnknownAppVisibilityController;->notifyVisibilitiesUpdated()V
PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>()V
PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>(Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V
-PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->reset()V
PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setTopWallpaper(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setUseTopWallpaperAsTarget(Z)V
PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setWallpaperTarget(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/WallpaperController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WallpaperController;->addWallpaperToken(Lcom/android/server/wm/WallpaperWindowToken;)V
-PLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WallpaperController;->adjustWallpaperWindowsForAppTransitionIfNeeded(Lcom/android/server/wm/DisplayContent;Landroid/util/ArraySet;)V
PLcom/android/server/wm/WallpaperController;->clearLastWallpaperTimeoutTime()V
-PLcom/android/server/wm/WallpaperController;->findWallpaperTarget(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WallpaperController;->getAnimLayerAdjustment()I
PLcom/android/server/wm/WallpaperController;->hideDeferredWallpapersIfNeeded()V
-PLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/WallpaperController;->isBelowWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/WallpaperController;->isWallpaperTargetAnimating()Z
-PLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z
-PLcom/android/server/wm/WallpaperController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WallpaperController;->lambda$-com_android_server_wm_WallpaperController_22771(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WallpaperController;->lambda$-com_android_server_wm_WallpaperController_4687(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WallpaperController;->sendWindowWallpaperCommand(Lcom/android/server/wm/WindowState;Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle;
PLcom/android/server/wm/WallpaperController;->setWindowWallpaperPosition(Lcom/android/server/wm/WindowState;FFFF)V
-PLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;IIZ)Z
PLcom/android/server/wm/WallpaperController;->updateWallpaperOffsetLocked(Lcom/android/server/wm/WindowState;Z)V
-PLcom/android/server/wm/WallpaperController;->updateWallpaperTokens(Z)V
-PLcom/android/server/wm/WallpaperController;->updateWallpaperWindowsTarget(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V
-PLcom/android/server/wm/WallpaperController;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V
-PLcom/android/server/wm/WallpaperController;->wallpaperTransitionReady()Z
PLcom/android/server/wm/WallpaperVisibilityListeners;-><init>()V
-PLcom/android/server/wm/WallpaperVisibilityListeners;->notifyWallpaperVisibilityChanged(Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/WallpaperVisibilityListeners;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
PLcom/android/server/wm/WallpaperWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZLcom/android/server/wm/DisplayContent;Z)V
-PLcom/android/server/wm/WallpaperWindowToken;->hasVisibleNotDrawnWallpaper()Z
-PLcom/android/server/wm/WallpaperWindowToken;->hideWallpaperToken(ZLjava/lang/String;)V
-PLcom/android/server/wm/WallpaperWindowToken;->sendWindowWallpaperCommand(Ljava/lang/String;IIILandroid/os/Bundle;Z)V
PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset(IIZ)V
-PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperWindows(ZI)V
PLcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;-><init>(Lcom/android/server/wm/WindowAnimator;)V
PLcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;-><init>(Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;)V
PLcom/android/server/wm/WindowAnimator;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowAnimator;->addDisplayLocked(I)V
-PLcom/android/server/wm/WindowAnimator;->getPendingLayoutChanges(I)I
PLcom/android/server/wm/WindowAnimator;->isAnimating()Z
PLcom/android/server/wm/WindowAnimator;->isAnimationScheduled()Z
-PLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_3911()V
+PLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_3844()V
PLcom/android/server/wm/WindowAnimator;->requestRemovalOfReplacedWindows(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V
-PLcom/android/server/wm/WindowAnimator;->setAnimating(Z)V
-PLcom/android/server/wm/WindowAnimator;->setPendingLayoutChanges(II)V
PLcom/android/server/wm/WindowAnimator;->setScreenRotationAnimationLocked(ILcom/android/server/wm/ScreenRotationAnimation;)V
PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;)V
-PLcom/android/server/wm/WindowContainer;-><init>()V
PLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;I)V
-PLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;Ljava/util/Comparator;)V
-PLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I
-PLcom/android/server/wm/WindowContainer;->getController()Lcom/android/server/wm/WindowContainerController;
-PLcom/android/server/wm/WindowContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration;
-PLcom/android/server/wm/WindowContainer;->getOrientation()I
PLcom/android/server/wm/WindowContainer;->getOverrideConfiguration()Landroid/content/res/Configuration;
-PLcom/android/server/wm/WindowContainer;->getParents(Ljava/util/LinkedList;)V
-PLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;
-PLcom/android/server/wm/WindowContainer;->hasContentToDisplay()Z
-PLcom/android/server/wm/WindowContainer;->isVisible()Z
-PLcom/android/server/wm/WindowContainer;->onAppTransitionDone()V
-PLcom/android/server/wm/WindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
PLcom/android/server/wm/WindowContainer;->onDescendantOverrideConfigurationChanged()V
PLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WindowContainer;->onMergedOverrideConfigurationChanged()V
-PLcom/android/server/wm/WindowContainer;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/WindowContainer;->onParentSet()V
-PLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
-PLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/WindowContainer;->removeIfPossible()V
-PLcom/android/server/wm/WindowContainer;->removeImmediately()V
-PLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V
-PLcom/android/server/wm/WindowContainer;->setController(Lcom/android/server/wm/WindowContainerController;)V
PLcom/android/server/wm/WindowContainer;->setOrientation(I)V
-PLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/WindowContainer;->setVisibleBeforeClientHidden()V
PLcom/android/server/wm/WindowContainerController;-><init>(Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowContainerController;->removeContainer()V
PLcom/android/server/wm/WindowContainerController;->setContainer(Lcom/android/server/wm/WindowContainer;)V
PLcom/android/server/wm/WindowHashMap;-><init>()V
PLcom/android/server/wm/WindowLayersController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowLayersController;->adjustSpecialWindows()V
PLcom/android/server/wm/WindowLayersController;->assignAndIncreaseLayerIfNeeded(Lcom/android/server/wm/WindowState;I)I
-PLcom/android/server/wm/WindowLayersController;->assignWindowLayers(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WindowLayersController;->reset()V
-PLcom/android/server/wm/WindowList;-><init>()V
+PLcom/android/server/wm/WindowList;->addFirst(Ljava/lang/Object;)V
PLcom/android/server/wm/WindowList;->peekFirst()Ljava/lang/Object;
-PLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object;
PLcom/android/server/wm/WindowManagerService$1;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
PLcom/android/server/wm/WindowManagerService$2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService$2;->onAppTransitionCancelledLocked(I)V
-PLcom/android/server/wm/WindowManagerService$2;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
PLcom/android/server/wm/WindowManagerService$3;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService$3;->run()V
PLcom/android/server/wm/WindowManagerService$4;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService$5;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService$7;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;)V
PLcom/android/server/wm/WindowManagerService$H;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V
PLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService$LocalService;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->addWindowToken(Landroid/os/IBinder;II)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->getFocusedWindowToken()Landroid/os/IBinder;
PLcom/android/server/wm/WindowManagerService$LocalService;->getInputMethodWindowVisibleHeight()I
-PLcom/android/server/wm/WindowManagerService$LocalService;->isDockedDividerResizing()Z
PLcom/android/server/wm/WindowManagerService$LocalService;->isHardKeyboardAvailable()Z
PLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardGoingAway()Z
PLcom/android/server/wm/WindowManagerService$LocalService;->registerAppTransitionListener(Landroid/view/WindowManagerInternal$AppTransitionListener;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->removeWindowToken(Landroid/os/IBinder;ZI)V
PLcom/android/server/wm/WindowManagerService$LocalService;->requestTraversalFromDisplayManager()V
PLcom/android/server/wm/WindowManagerService$LocalService;->setOnHardKeyboardStatusChangeListener(Landroid/view/WindowManagerInternal$OnHardKeyboardStatusChangeListener;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setWindowsForAccessibilityCallback(Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodWindowStatus(Landroid/os/IBinder;ZZLandroid/os/IBinder;)V
PLcom/android/server/wm/WindowManagerService$LocalService;->waitForAllWindowsDrawn(Ljava/lang/Runnable;J)V
PLcom/android/server/wm/WindowManagerService$MousePositionTracker;-><init>()V
PLcom/android/server/wm/WindowManagerService$MousePositionTracker;-><init>(Lcom/android/server/wm/WindowManagerService$MousePositionTracker;)V
-PLcom/android/server/wm/WindowManagerService$MousePositionTracker;->onPointerEvent(Landroid/view/MotionEvent;)V
PLcom/android/server/wm/WindowManagerService$RotationWatcher;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IRotationWatcher;Landroid/os/IBinder$DeathRecipient;I)V
PLcom/android/server/wm/WindowManagerService$SettingsObserver;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService;->-get2(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/KeyguardDisableHandler;
PLcom/android/server/wm/WindowManagerService;->-wrap0(Lcom/android/server/wm/WindowManagerService;)Z
+PLcom/android/server/wm/WindowManagerService;->-wrap1(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/WindowManagerService;->-wrap4(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService;->-wrap6(Lcom/android/server/wm/WindowManagerService;)V
PLcom/android/server/wm/WindowManagerService;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)V
-PLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I
PLcom/android/server/wm/WindowManagerService;->addWindowToken(Landroid/os/IBinder;II)V
-PLcom/android/server/wm/WindowManagerService;->applyAnimationLocked(Lcom/android/server/wm/AppWindowToken;Landroid/view/WindowManager$LayoutParams;IZZ)Z
PLcom/android/server/wm/WindowManagerService;->canDispatchPointerEvents()Z
PLcom/android/server/wm/WindowManagerService;->checkBootAnimationCompleteLocked()Z
-PLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V
PLcom/android/server/wm/WindowManagerService;->closeSystemDialogs(Ljava/lang/String;)V
PLcom/android/server/wm/WindowManagerService;->computeNewConfiguration(I)Landroid/content/res/Configuration;
PLcom/android/server/wm/WindowManagerService;->computeNewConfigurationLocked(I)Landroid/content/res/Configuration;
PLcom/android/server/wm/WindowManagerService;->configureDisplayPolicyLocked(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WindowManagerService;->containsDismissKeyguardWindow(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/WindowManagerService;->containsShowWhenLockedWindow(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/WindowManagerService;->continueSurfaceLayout()V
PLcom/android/server/wm/WindowManagerService;->createDisplayContentLocked(Landroid/view/Display;)V
PLcom/android/server/wm/WindowManagerService;->createInputConsumer(Ljava/lang/String;Landroid/view/InputChannel;)V
-PLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/Surface;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I
PLcom/android/server/wm/WindowManagerService;->createWatermarkInTransaction()V
-PLcom/android/server/wm/WindowManagerService;->deferSurfaceLayout()V
PLcom/android/server/wm/WindowManagerService;->destroyInputConsumer(Ljava/lang/String;)Z
-PLcom/android/server/wm/WindowManagerService;->destroyPreservedSurfaceLocked()V
PLcom/android/server/wm/WindowManagerService;->detectSafeMode()Z
-PLcom/android/server/wm/WindowManagerService;->dipToPixel(ILandroid/util/DisplayMetrics;)I
+PLcom/android/server/wm/WindowManagerService;->disableKeyguard(Landroid/os/IBinder;Ljava/lang/String;)V
PLcom/android/server/wm/WindowManagerService;->displayReady()V
PLcom/android/server/wm/WindowManagerService;->displayReady(I)V
+PLcom/android/server/wm/WindowManagerService;->doesAddToastWindowRequireToken(Ljava/lang/String;ILcom/android/server/wm/WindowState;)Z
PLcom/android/server/wm/WindowManagerService;->enableScreenAfterBoot()V
PLcom/android/server/wm/WindowManagerService;->enableScreenIfNeeded()V
-PLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V
-PLcom/android/server/wm/WindowManagerService;->endProlongedAnimations()V
-PLcom/android/server/wm/WindowManagerService;->excludeWindowTypeFromTapOutTask(I)Z
-PLcom/android/server/wm/WindowManagerService;->executeAppTransition()V
-PLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V
PLcom/android/server/wm/WindowManagerService;->getBaseDisplaySize(ILandroid/graphics/Point;)V
PLcom/android/server/wm/WindowManagerService;->getCameraLensCoverState()I
-PLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F
PLcom/android/server/wm/WindowManagerService;->getDefaultDisplayRotation()I
PLcom/android/server/wm/WindowManagerService;->getDisplaysInFocusOrder(Landroid/util/SparseIntArray;)V
PLcom/android/server/wm/WindowManagerService;->getDockedStackSide()I
+PLcom/android/server/wm/WindowManagerService;->getFocusedWindowLocked()Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/WindowManagerService;->getForcedDisplayDensityForUserLocked(I)I
PLcom/android/server/wm/WindowManagerService;->getInitialDisplaySize(ILandroid/graphics/Point;)V
-PLcom/android/server/wm/WindowManagerService;->getInputMethodWindowLw()Landroid/view/WindowManagerPolicy$WindowState;
PLcom/android/server/wm/WindowManagerService;->getInputMonitor()Lcom/android/server/wm/InputMonitor;
PLcom/android/server/wm/WindowManagerService;->getInstance()Lcom/android/server/wm/WindowManagerService;
-PLcom/android/server/wm/WindowManagerService;->getLidState()I
PLcom/android/server/wm/WindowManagerService;->getPendingAppTransition()I
-PLcom/android/server/wm/WindowManagerService;->getStableInsets(ILandroid/graphics/Rect;)V
-PLcom/android/server/wm/WindowManagerService;->getStableInsetsLocked(ILandroid/graphics/Rect;)V
PLcom/android/server/wm/WindowManagerService;->getTaskSnapshot(IIZ)Landroid/app/ActivityManager$TaskSnapshot;
-PLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleLocked()F
PLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleLocked()F
-PLcom/android/server/wm/WindowManagerService;->getWindowDisplayFrame(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Rect;)V
PLcom/android/server/wm/WindowManagerService;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId;
PLcom/android/server/wm/WindowManagerService;->getWindowManagerLock()Ljava/lang/Object;
-PLcom/android/server/wm/WindowManagerService;->handleAnimatingStoppedAndTransitionLocked()I
PLcom/android/server/wm/WindowManagerService;->hasNavigationBar()Z
+PLcom/android/server/wm/WindowManagerService;->hasWideColorGamutSupport()Z
PLcom/android/server/wm/WindowManagerService;->hideBootMessagesLocked()V
PLcom/android/server/wm/WindowManagerService;->inKeyguardRestrictedInputMode()Z
PLcom/android/server/wm/WindowManagerService;->initPolicy()V
-PLcom/android/server/wm/WindowManagerService;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z
-PLcom/android/server/wm/WindowManagerService;->isCurrentProfileLocked(I)Z
-PLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z
PLcom/android/server/wm/WindowManagerService;->isKeyguardSecure()Z
+PLcom/android/server/wm/WindowManagerService;->isRotationFrozen()Z
PLcom/android/server/wm/WindowManagerService;->isSafeModeEnabled()Z
-PLcom/android/server/wm/WindowManagerService;->isScreenCaptureDisabledLocked(I)Z
-PLcom/android/server/wm/WindowManagerService;->isSecureLocked(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WindowManagerService;->isShowingDream()Z
-PLcom/android/server/wm/WindowManagerService;->lambda$-com_android_server_wm_WindowManagerService_128943(Ljava/lang/Runnable;)V
-PLcom/android/server/wm/WindowManagerService;->lambda$-com_android_server_wm_WindowManagerService_40672(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)V
+PLcom/android/server/wm/WindowManagerService;->lambda$-com_android_server_wm_WindowManagerService_42198(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)V
PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)Lcom/android/server/wm/WindowManagerService;
-PLcom/android/server/wm/WindowManagerService;->makeWindowFreezingScreenIfNeededLocked(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowManagerService;->monitor()V
-PLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchesCleared(Landroid/os/IBinder;)V
-PLcom/android/server/wm/WindowManagerService;->notifyAppResumedFinished(Landroid/os/IBinder;)V
-PLcom/android/server/wm/WindowManagerService;->notifyFocusChanged()V
+PLcom/android/server/wm/WindowManagerService;->notifyAppRelaunching(Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchingFinished(Landroid/os/IBinder;)V
PLcom/android/server/wm/WindowManagerService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;)V
PLcom/android/server/wm/WindowManagerService;->notifyKeyguardTrustedChanged()V
PLcom/android/server/wm/WindowManagerService;->notifyTaskRemovedFromRecents(II)V
PLcom/android/server/wm/WindowManagerService;->onDisplayChanged(I)V
PLcom/android/server/wm/WindowManagerService;->onKeyguardOccludedChanged(Z)V
-PLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
PLcom/android/server/wm/WindowManagerService;->onSystemUiStarted()V
-PLcom/android/server/wm/WindowManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
PLcom/android/server/wm/WindowManagerService;->openSession(Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)Landroid/view/IWindowSession;
PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V
PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransitionClipReveal(IIII)V
-PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V
PLcom/android/server/wm/WindowManagerService;->performBootTimeout()V
PLcom/android/server/wm/WindowManagerService;->performEnableScreen()V
-PLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZ)V
-PLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZIZ)V
PLcom/android/server/wm/WindowManagerService;->prepareNoneTransitionForRelaunching(Lcom/android/server/wm/AppWindowToken;)V
PLcom/android/server/wm/WindowManagerService;->prepareWindowReplacementTransition(Lcom/android/server/wm/AppWindowToken;)Z
-PLcom/android/server/wm/WindowManagerService;->prolongAnimationsFromSpecs([Landroid/view/AppTransitionAnimationSpec;Z)V
+PLcom/android/server/wm/WindowManagerService;->queryWideColorGamutSupport()Z
PLcom/android/server/wm/WindowManagerService;->readForcedDisplayPropertiesLocked(Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/WindowManagerService;->reconfigureDisplayLocked(Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/WindowManagerService;->registerAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V
@@ -15395,231 +16349,594 @@ PLcom/android/server/wm/WindowManagerService;->registerPointerEventListener(Land
PLcom/android/server/wm/WindowManagerService;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V
PLcom/android/server/wm/WindowManagerService;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z
PLcom/android/server/wm/WindowManagerService;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
-PLcom/android/server/wm/WindowManagerService;->removeWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V
-PLcom/android/server/wm/WindowManagerService;->requestTraversal()V
-PLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V
+PLcom/android/server/wm/WindowManagerService;->removeWindowToken(Landroid/os/IBinder;I)V
PLcom/android/server/wm/WindowManagerService;->sendNewConfiguration(I)V
PLcom/android/server/wm/WindowManagerService;->setAnimatorDurationScale(F)V
PLcom/android/server/wm/WindowManagerService;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V
PLcom/android/server/wm/WindowManagerService;->setEventDispatching(Z)V
-PLcom/android/server/wm/WindowManagerService;->setFocusTaskRegionLocked(Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/WindowManagerService;->setFocusedApp(Landroid/os/IBinder;Z)V
PLcom/android/server/wm/WindowManagerService;->setForceResizableTasks(Z)V
-PLcom/android/server/wm/WindowManagerService;->setHoldScreenLocked(Lcom/android/server/wm/Session;)V
PLcom/android/server/wm/WindowManagerService;->setInputMethodWindowLocked(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
PLcom/android/server/wm/WindowManagerService;->setKeyguardGoingAway(Z)V
PLcom/android/server/wm/WindowManagerService;->setNewDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)[I
-PLcom/android/server/wm/WindowManagerService;->setRecentsVisibility(Z)V
PLcom/android/server/wm/WindowManagerService;->setScreenCaptureDisabled(IZ)V
PLcom/android/server/wm/WindowManagerService;->setSupportsPictureInPicture(Z)V
PLcom/android/server/wm/WindowManagerService;->setTransparentRegionWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Region;)V
PLcom/android/server/wm/WindowManagerService;->showEmulatorDisplayOverlayIfNeeded()V
PLcom/android/server/wm/WindowManagerService;->startFreezingDisplayLocked(ZIILcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WindowManagerService;->statusBarVisibilityChanged(I)V
-PLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V
-PLcom/android/server/wm/WindowManagerService;->stopUsingSavedSurfaceLocked()V
PLcom/android/server/wm/WindowManagerService;->systemReady()V
-PLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;ZZ)Z
+PLcom/android/server/wm/WindowManagerService;->thawRotation()V
PLcom/android/server/wm/WindowManagerService;->unregisterAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V
PLcom/android/server/wm/WindowManagerService;->updateCircularDisplayMaskIfNeeded()V
-PLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z
-PLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration;
-PLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokensLocked(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration;
PLcom/android/server/wm/WindowManagerService;->updateRotation(ZZ)V
PLcom/android/server/wm/WindowManagerService;->updateRotationUnchecked(ZZ)V
-PLcom/android/server/wm/WindowManagerService;->updateStatusBarVisibilityLocked(I)Z
PLcom/android/server/wm/WindowManagerService;->watchRotation(Landroid/view/IRotationWatcher;I)I
-PLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/WindowManagerThreadPriorityBooster;-><init>()V
-PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setAppTransitionRunning(Z)V
-PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->updatePriorityLocked()V
PLcom/android/server/wm/WindowState$1;-><init>()V
PLcom/android/server/wm/WindowState$DeathRecipient;-><init>(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/WindowState$DeathRecipient;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$DeathRecipient;)V
+PLcom/android/server/wm/WindowState$DeathRecipient;->binderDied()V
PLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;-><init>()V
-PLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->reset()V
-PLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$WindowId;)V
-PLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;IILandroid/view/WindowManager$LayoutParams;IIZ)V
-PLcom/android/server/wm/WindowState;->addWinAnimatorToList(Ljava/util/ArrayList;)V
-PLcom/android/server/wm/WindowState;->adjustStartingWindowFlags()V
-PLcom/android/server/wm/WindowState;->applyAdjustForImeIfNeeded()V
-PLcom/android/server/wm/WindowState;->applyInsets(Landroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/WindowState;->-wrap1(Lcom/android/server/wm/WindowState;Z)V
PLcom/android/server/wm/WindowState;->attach()V
-PLcom/android/server/wm/WindowState;->canBeImeTarget()Z
-PLcom/android/server/wm/WindowState;->canRestoreSurface()Z
-PLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V
PLcom/android/server/wm/WindowState;->clearAnimatingFlags()Z
PLcom/android/server/wm/WindowState;->clearAnimatingWithSavedSurface()Z
-PLcom/android/server/wm/WindowState;->clearHasSavedSurface()V
-PLcom/android/server/wm/WindowState;->clearWasVisibleBeforeClientHidden()V
-PLcom/android/server/wm/WindowState;->destroyOrSaveSurfaceUnchecked()V
-PLcom/android/server/wm/WindowState;->destroySavedSurface()V
-PLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z
-PLcom/android/server/wm/WindowState;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZI)V
-PLcom/android/server/wm/WindowState;->dispatchWallpaperVisibility(Z)V
-PLcom/android/server/wm/WindowState;->disposeInputChannel()V
PLcom/android/server/wm/WindowState;->forAllWindowBottomToTop(Lcom/android/internal/util/ToBooleanFunction;)Z
-PLcom/android/server/wm/WindowState;->forAllWindowTopToBottom(Lcom/android/internal/util/ToBooleanFunction;)Z
-PLcom/android/server/wm/WindowState;->getBackdropFrame(Landroid/graphics/Rect;)Landroid/graphics/Rect;
PLcom/android/server/wm/WindowState;->getContentFrameLw()Landroid/graphics/Rect;
-PLcom/android/server/wm/WindowState;->getDisplayFrameLw()Landroid/graphics/Rect;
PLcom/android/server/wm/WindowState;->getFrameLw()Landroid/graphics/Rect;
PLcom/android/server/wm/WindowState;->getGivenContentInsetsLw()Landroid/graphics/Rect;
PLcom/android/server/wm/WindowState;->getGivenInsetsPendingLw()Z
PLcom/android/server/wm/WindowState;->getGivenVisibleInsetsLw()Landroid/graphics/Rect;
-PLcom/android/server/wm/WindowState;->getHighestAnimLayer()I
-PLcom/android/server/wm/WindowState;->getName()Ljava/lang/String;
-PLcom/android/server/wm/WindowState;->getNeedsMenuLw(Landroid/view/WindowManagerPolicy$WindowState;)Z
PLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String;
PLcom/android/server/wm/WindowState;->getOwningUid()I
PLcom/android/server/wm/WindowState;->getReplacingWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/WindowState;->getSurfaceLayer()I
-PLcom/android/server/wm/WindowState;->getSystemUiVisibility()I
+PLcom/android/server/wm/WindowState;->getRotationAnimationHint()I
PLcom/android/server/wm/WindowState;->getVisibleFrameLw()Landroid/graphics/Rect;
PLcom/android/server/wm/WindowState;->hasAppShownWindows()Z
-PLcom/android/server/wm/WindowState;->hasContentToDisplay()Z
PLcom/android/server/wm/WindowState;->hasDrawnLw()Z
PLcom/android/server/wm/WindowState;->hasVisibleNotDrawnWallpaper()Z
-PLcom/android/server/wm/WindowState;->hideLw(Z)Z
-PLcom/android/server/wm/WindowState;->hideLw(ZZ)Z
-PLcom/android/server/wm/WindowState;->hideWallpaperWindow(ZLjava/lang/String;)V
-PLcom/android/server/wm/WindowState;->isAnimatingInvisibleWithSavedSurface()Z
-PLcom/android/server/wm/WindowState;->isAnimatingWithSavedSurface()Z
+PLcom/android/server/wm/WindowState;->hidePermanentlyLw()V
PLcom/android/server/wm/WindowState;->isClosing()Z
PLcom/android/server/wm/WindowState;->isDrawFinishedLw()Z
-PLcom/android/server/wm/WindowState;->isInputMethodWindow()Z
-PLcom/android/server/wm/WindowState;->isInteresting()Z
-PLcom/android/server/wm/WindowState;->isLaidOut()Z
-PLcom/android/server/wm/WindowState;->isReadyForDisplay()Z
-PLcom/android/server/wm/WindowState;->isResizedWhileNotDragResizingReported()Z
-PLcom/android/server/wm/WindowState;->isRtl()Z
-PLcom/android/server/wm/WindowState;->isVisibleNow()Z
-PLcom/android/server/wm/WindowState;->isVoiceInteraction()Z
-PLcom/android/server/wm/WindowState;->isWinVisibleLw()Z
PLcom/android/server/wm/WindowState;->isWindowAnimationSet()Z
-PLcom/android/server/wm/WindowState;->layoutInParentFrame()Z
-PLcom/android/server/wm/WindowState;->logPerformShow(Ljava/lang/String;)V
-PLcom/android/server/wm/WindowState;->markSavedSurfaceExiting()V
-PLcom/android/server/wm/WindowState;->mightAffectAllDrawn(Z)Z
-PLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)Z
-PLcom/android/server/wm/WindowState;->onExitAnimationDone()V
+PLcom/android/server/wm/WindowState;->onSetAppExiting()Z
+PLcom/android/server/wm/WindowState;->onStartFreezingScreen()V
PLcom/android/server/wm/WindowState;->onStopFreezingScreen()Z
-PLcom/android/server/wm/WindowState;->openInputChannel(Landroid/view/InputChannel;)V
-PLcom/android/server/wm/WindowState;->performShowLocked()Z
-PLcom/android/server/wm/WindowState;->prelayout()V
-PLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Landroid/util/MergedConfiguration;Z)V
-PLcom/android/server/wm/WindowState;->relayoutVisibleWindow(Landroid/util/MergedConfiguration;III)I
+PLcom/android/server/wm/WindowState;->orientationChangeTimedOut()V
PLcom/android/server/wm/WindowState;->removeIfPossible()V
-PLcom/android/server/wm/WindowState;->removeIfPossible(Z)V
-PLcom/android/server/wm/WindowState;->removeImmediately()V
-PLcom/android/server/wm/WindowState;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(ZZ)V
-PLcom/android/server/wm/WindowState;->reportResized()V
-PLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V
-PLcom/android/server/wm/WindowState;->restoreSavedSurface()Z
-PLcom/android/server/wm/WindowState;->scheduleAnimationIfDimming()V
-PLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V
-PLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V
PLcom/android/server/wm/WindowState;->setDragResizing()V
-PLcom/android/server/wm/WindowState;->setHasSurface(Z)V
-PLcom/android/server/wm/WindowState;->setReplacementWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/WindowState;->setRequestedSize(II)V
+PLcom/android/server/wm/WindowState;->setForceHideNonSystemOverlayWindowIfNeeded(Z)V
+PLcom/android/server/wm/WindowState;->setOrientationChanging(Z)V
PLcom/android/server/wm/WindowState;->setResizedWhileNotDragResizing(Z)V
PLcom/android/server/wm/WindowState;->setShowToOwnerOnlyLocked(Z)V
-PLcom/android/server/wm/WindowState;->setVisibleBeforeClientHidden()V
-PLcom/android/server/wm/WindowState;->setWindowScale(II)V
PLcom/android/server/wm/WindowState;->setupWindowForRemoveOnExit()V
-PLcom/android/server/wm/WindowState;->shouldSaveSurface()Z
-PLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z
-PLcom/android/server/wm/WindowState;->updateLastInsetValues()V
-PLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V
-PLcom/android/server/wm/WindowState;->usesRelativeZOrdering()Z
+PLcom/android/server/wm/WindowState;->shouldKeepVisibleDeadAppWindow()Z
PLcom/android/server/wm/WindowState;->waitingForReplacement()Z
-PLcom/android/server/wm/WindowStateAnimator;-><init>(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z
-PLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V
PLcom/android/server/wm/WindowStateAnimator;->clearAnimation()V
-PLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z
-PLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked(II)Lcom/android/server/wm/WindowSurfaceController;
PLcom/android/server/wm/WindowStateAnimator;->destroyDeferredSurfaceLocked()V
-PLcom/android/server/wm/WindowStateAnimator;->destroyPreservedSurfaceLocked()V
-PLcom/android/server/wm/WindowStateAnimator;->destroySurface()V
-PLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked()V
-PLcom/android/server/wm/WindowStateAnimator;->detachChildren()V
-PLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked()Z
-PLcom/android/server/wm/WindowStateAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J
-PLcom/android/server/wm/WindowStateAnimator;->getLayerStack()I
-PLcom/android/server/wm/WindowStateAnimator;->hide(Ljava/lang/String;)V
-PLcom/android/server/wm/WindowStateAnimator;->isDummyAnimation()Z
-PLcom/android/server/wm/WindowStateAnimator;->isWindowAnimationSet()Z
PLcom/android/server/wm/WindowStateAnimator;->markPreservedSurfaceForDestroy()V
-PLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V
PLcom/android/server/wm/WindowStateAnimator;->setAnimation(Landroid/view/animation/Animation;)V
-PLcom/android/server/wm/WindowStateAnimator;->setAnimation(Landroid/view/animation/Animation;JI)V
-PLcom/android/server/wm/WindowStateAnimator;->setMoveAnimation(II)V
PLcom/android/server/wm/WindowStateAnimator;->setOpaqueLocked(Z)V
PLcom/android/server/wm/WindowStateAnimator;->setTransparentRegionHintLocked(Landroid/graphics/Region;)V
-PLcom/android/server/wm/WindowStateAnimator;->showSurfaceRobustlyLocked()Z
-PLcom/android/server/wm/WindowStateAnimator;->stepAnimation(J)Z
PLcom/android/server/wm/WindowStateAnimator;->tryChangeFormatInPlaceLocked()Z
-PLcom/android/server/wm/WindowSurfaceController;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILcom/android/server/wm/WindowStateAnimator;II)V
-PLcom/android/server/wm/WindowSurfaceController;->destroyInTransaction()V
-PLcom/android/server/wm/WindowSurfaceController;->detachChildren()V
PLcom/android/server/wm/WindowSurfaceController;->getLayer()I
-PLcom/android/server/wm/WindowSurfaceController;->getShown()Z
-PLcom/android/server/wm/WindowSurfaceController;->getSurface(Landroid/view/Surface;)V
-PLcom/android/server/wm/WindowSurfaceController;->hideInTransaction(Ljava/lang/String;)V
-PLcom/android/server/wm/WindowSurfaceController;->hideSurface()V
-PLcom/android/server/wm/WindowSurfaceController;->prepareToShowInTransaction(FFFFFZ)Z
-PLcom/android/server/wm/WindowSurfaceController;->setCropInTransaction(Landroid/graphics/Rect;Z)V
-PLcom/android/server/wm/WindowSurfaceController;->setFinalCropInTransaction(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/WindowSurfaceController;->setLayer(I)V
-PLcom/android/server/wm/WindowSurfaceController;->setLayerStackInTransaction(I)V
PLcom/android/server/wm/WindowSurfaceController;->setOpaque(Z)V
-PLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V
-PLcom/android/server/wm/WindowSurfaceController;->setSizeInTransaction(IIZ)Z
PLcom/android/server/wm/WindowSurfaceController;->setTransparentRegionHint(Landroid/graphics/Region;)V
-PLcom/android/server/wm/WindowSurfaceController;->showRobustlyInTransaction()Z
-PLcom/android/server/wm/WindowSurfaceController;->showSurface()Z
-PLcom/android/server/wm/WindowSurfaceController;->updateVisibility()Z
PLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;-><init>()V
PLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;-><init>(Lcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;)V
PLcom/android/server/wm/WindowSurfacePlacer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/WindowSurfacePlacer;->canBeWallpaperTarget(Landroid/util/ArraySet;)Z
-PLcom/android/server/wm/WindowSurfacePlacer;->continueLayout()V
-PLcom/android/server/wm/WindowSurfacePlacer;->createThumbnailAppAnimator(ILcom/android/server/wm/AppWindowToken;II)V
-PLcom/android/server/wm/WindowSurfacePlacer;->deferLayout()V
-PLcom/android/server/wm/WindowSurfacePlacer;->destroyAfterTransaction(Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/WindowSurfacePlacer;->handleAppTransitionReadyLocked()I
-PLcom/android/server/wm/WindowSurfacePlacer;->handleClosingApps(ILandroid/view/WindowManager$LayoutParams;ZLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;)V
PLcom/android/server/wm/WindowSurfacePlacer;->handleNonAppWindowsInTransition(II)V
-PLcom/android/server/wm/WindowSurfacePlacer;->handleOpeningApps(ILandroid/view/WindowManager$LayoutParams;ZI)Lcom/android/server/wm/AppWindowToken;
PLcom/android/server/wm/WindowSurfacePlacer;->isInLayout()Z
-PLcom/android/server/wm/WindowSurfacePlacer;->lambda$-com_android_server_wm_WindowSurfacePlacer_5259()V
-PLcom/android/server/wm/WindowSurfacePlacer;->maybeUpdateTransitToWallpaper(IZZ)I
-PLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V
-PLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V
PLcom/android/server/wm/WindowSurfacePlacer;->processApplicationsAnimatingInPlace(I)V
-PLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V
-PLcom/android/server/wm/WindowSurfacePlacer;->transitionGoodToGo(I)Z
PLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;Z)V
-PLcom/android/server/wm/WindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V
PLcom/android/server/wm/WindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken;
-PLcom/android/server/wm/WindowToken;->getAnimLayerAdjustment()I
-PLcom/android/server/wm/WindowToken;->getHighestAnimLayer()I
-PLcom/android/server/wm/WindowToken;->getReplacingWindow()Lcom/android/server/wm/WindowState;
PLcom/android/server/wm/WindowToken;->isEmpty()Z
PLcom/android/server/wm/WindowToken;->lambda$-com_android_server_wm_WindowToken_3278(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
-PLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
PLcom/android/server/wm/WindowToken;->removeAllWindowsIfPossible()V
PLcom/android/server/wm/WindowToken;->removeImmediately()V
PLcom/android/server/wm/WindowToken;->setExiting()V
-PLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z
PLcom/android/server/wm/animation/ClipRectLRAnimation;-><init>(IIII)V
-PLcom/android/server/wm/animation/ClipRectLRAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
PLcom/android/server/wm/animation/ClipRectTBAnimation;-><init>(IIIIIILandroid/view/animation/Interpolator;)V
-PLcom/android/server/wm/animation/ClipRectTBAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
-PLcom/android/server/wm/animation/ClipRectTBAnimation;->getTransformation(JLandroid/view/animation/Transformation;)Z
+PLcom/android/timezone/distro/installer/TimeZoneDistroInstaller;-><init>(Ljava/lang/String;Ljava/io/File;Ljava/io/File;)V
+SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->$m$2()V
+SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;-><init>(BLjava/lang/Object;Ljava/lang/Object;)V
+SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->run()V
+SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->$m$0()V
+SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;-><init>(B)V
+SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->run()V
+SPLcom/android/server/AppOpsService$1;-><init>(Lcom/android/server/AppOpsService;)V
+SPLcom/android/server/AppOpsService$Callback;-><init>(Lcom/android/server/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;)V
+SPLcom/android/server/AppOpsService$Ops;-><init>(Ljava/lang/String;Lcom/android/server/AppOpsService$UidState;Z)V
+SPLcom/android/server/AppOpsService$UidState;-><init>(I)V
+SPLcom/android/server/AppOpsService;-><init>(Ljava/io/File;Landroid/os/Handler;)V
+SPLcom/android/server/AppOpsService;->publish(Landroid/content/Context;)V
+SPLcom/android/server/AppOpsService;->readUidOps(Lorg/xmlpull/v1/XmlPullParser;)V
+SPLcom/android/server/DisplayThread;-><init>()V
+SPLcom/android/server/DisplayThread;->ensureThreadLocked()V
+SPLcom/android/server/DisplayThread;->get()Lcom/android/server/DisplayThread;
+SPLcom/android/server/DisplayThread;->getHandler()Landroid/os/Handler;
+SPLcom/android/server/FgThread;-><init>()V
+SPLcom/android/server/FgThread;->ensureThreadLocked()V
+SPLcom/android/server/FgThread;->get()Lcom/android/server/FgThread;
+SPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler;
+SPLcom/android/server/IntentResolver$1;-><init>()V
+SPLcom/android/server/IntentResolver;-><init>()V
+SPLcom/android/server/IntentResolver;->filterSet()Ljava/util/Set;
+SPLcom/android/server/IoThread;-><init>()V
+SPLcom/android/server/IoThread;->ensureThreadLocked()V
+SPLcom/android/server/IoThread;->getHandler()Landroid/os/Handler;
+SPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;I)Ljava/lang/Object;
+SPLcom/android/server/LockGuard;->installNewLock(I)Ljava/lang/Object;
+SPLcom/android/server/RecoverySystemService$BinderService;-><init>(Lcom/android/server/RecoverySystemService;)V
+SPLcom/android/server/RecoverySystemService$BinderService;-><init>(Lcom/android/server/RecoverySystemService;Lcom/android/server/RecoverySystemService$BinderService;)V
+SPLcom/android/server/RecoverySystemService;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/RecoverySystemService;->onStart()V
+SPLcom/android/server/RescueParty$BootThreshold;-><init>()V
+SPLcom/android/server/RescueParty$Threshold;-><init>(IIJ)V
+SPLcom/android/server/RescueParty;->isDisabled()Z
+SPLcom/android/server/RescueParty;->isUsbActive()Z
+SPLcom/android/server/RescueParty;->noteBoot(Landroid/content/Context;)V
+SPLcom/android/server/ServiceThread;-><init>(Ljava/lang/String;IZ)V
+SPLcom/android/server/ServiceThread;->run()V
+SPLcom/android/server/SystemServer;->-com_android_server_SystemServer-mthref-0()V
+SPLcom/android/server/SystemServer;-><init>()V
+SPLcom/android/server/SystemServer;->createSystemContext()V
+SPLcom/android/server/SystemServer;->main([Ljava/lang/String;)V
+SPLcom/android/server/SystemServer;->performPendingShutdown()V
+SPLcom/android/server/SystemServer;->run()V
+SPLcom/android/server/SystemServer;->startBootstrapServices()V
+SPLcom/android/server/SystemServerInitThreadPool;-><init>()V
+SPLcom/android/server/SystemServerInitThreadPool;->get()Lcom/android/server/SystemServerInitThreadPool;
+SPLcom/android/server/SystemServerInitThreadPool;->lambda$-com_android_server_SystemServerInitThreadPool_2249(Ljava/lang/String;Ljava/lang/Runnable;)V
+SPLcom/android/server/SystemServerInitThreadPool;->submit(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future;
+SPLcom/android/server/SystemService;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/SystemService;->onBootPhase(I)V
+SPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;)V
+SPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;Z)V
+SPLcom/android/server/SystemService;->publishLocalService(Ljava/lang/Class;Ljava/lang/Object;)V
+SPLcom/android/server/SystemServiceManager;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/SystemServiceManager;->setRuntimeRestarted(Z)V
+SPLcom/android/server/ThreadPriorityBooster$1;-><init>(Lcom/android/server/ThreadPriorityBooster;)V
+SPLcom/android/server/ThreadPriorityBooster;-><init>(II)V
+SPLcom/android/server/UiThread;-><init>()V
+SPLcom/android/server/UiThread;->ensureThreadLocked()V
+SPLcom/android/server/UiThread;->get()Lcom/android/server/UiThread;
+SPLcom/android/server/UiThread;->getHandler()Landroid/os/Handler;
+SPLcom/android/server/UiThread;->run()V
+SPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>()V
+SPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>(Lcom/android/server/Watchdog$BinderThreadMonitor;)V
+SPLcom/android/server/Watchdog$HandlerChecker;-><init>(Lcom/android/server/Watchdog;Landroid/os/Handler;Ljava/lang/String;J)V
+SPLcom/android/server/Watchdog$HandlerChecker;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V
+SPLcom/android/server/Watchdog$OpenFdMonitor;-><init>(Ljava/io/File;Ljava/io/File;)V
+SPLcom/android/server/Watchdog$OpenFdMonitor;->create()Lcom/android/server/Watchdog$OpenFdMonitor;
+SPLcom/android/server/Watchdog;-><init>()V
+SPLcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V
+SPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;)V
+SPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;J)V
+SPLcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
+SPLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;-><init>(B)V
+SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->$m$0(Ljava/lang/Runnable;)Ljava/lang/Thread;
+SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;-><init>()V
+SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+SPLcom/android/server/am/ActiveServices$1;-><init>(Lcom/android/server/am/ActiveServices;)V
+SPLcom/android/server/am/ActiveServices;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/ActivityManagerConstants;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;)V
+SPLcom/android/server/am/ActivityManagerConstants;->computeEmptyProcessLimit(I)I
+SPLcom/android/server/am/ActivityManagerConstants;->updateMaxCachedProcesses()V
+SPLcom/android/server/am/ActivityManagerService$1;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+SPLcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/ActivityManagerService$4;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;)V
+SPLcom/android/server/am/ActivityManagerService$Injector;-><init>()V
+SPLcom/android/server/am/ActivityManagerService$Injector;->getAppOpsService(Ljava/io/File;Landroid/os/Handler;)Lcom/android/server/AppOpsService;
+SPLcom/android/server/am/ActivityManagerService$Injector;->getUiHandler(Lcom/android/server/am/ActivityManagerService;)Landroid/os/Handler;
+SPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->getAMSLock()Ljava/lang/Object;
+SPLcom/android/server/am/ActivityManagerService$KillHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+SPLcom/android/server/am/ActivityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/am/ActivityManagerService$Lifecycle;->getService()Lcom/android/server/am/ActivityManagerService;
+SPLcom/android/server/am/ActivityManagerService$Lifecycle;->onStart()V
+SPLcom/android/server/am/ActivityManagerService$LocalService;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/ActivityManagerService$MainHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+SPLcom/android/server/am/ActivityManagerService$UiHandler;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;-><init>()V
+SPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;-><init>(Lcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)V
+SPLcom/android/server/am/ActivityManagerService;->-wrap10(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/ActivityManagerService;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/am/ActivityManagerService;->createStackSupervisor()Lcom/android/server/am/ActivityStackSupervisor;
+SPLcom/android/server/am/ActivityManagerService;->initPowerManagement()V
+SPLcom/android/server/am/ActivityManagerService;->setInstaller(Lcom/android/server/pm/Installer;)V
+SPLcom/android/server/am/ActivityManagerService;->setSystemServiceManager(Lcom/android/server/SystemServiceManager;)V
+SPLcom/android/server/am/ActivityManagerService;->start()V
+SPLcom/android/server/am/ActivityMetricsLogger;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Landroid/content/Context;)V
+SPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;-><init>(Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Looper;)V
+SPLcom/android/server/am/ActivityStackSupervisor$FindTaskResult;-><init>()V
+SPLcom/android/server/am/ActivityStackSupervisor;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+SPLcom/android/server/am/ActivityStackSupervisor;->getChildCount()I
+SPLcom/android/server/am/ActivityStackSupervisor;->initPowerManagement()V
+SPLcom/android/server/am/ActivityStackSupervisor;->setRecentTasks(Lcom/android/server/am/RecentTasks;)V
+SPLcom/android/server/am/ActivityStartInterceptor;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V
+SPLcom/android/server/am/ActivityStarter;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V
+SPLcom/android/server/am/AppErrors;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/BatteryExternalStatsWorker$1;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
+SPLcom/android/server/am/BatteryExternalStatsWorker$2;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
+SPLcom/android/server/am/BatteryExternalStatsWorker$2;->run()V
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-get0(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/String;
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-get1(Lcom/android/server/am/BatteryExternalStatsWorker;)Lcom/android/internal/os/BatteryStatsImpl;
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-get2(Lcom/android/server/am/BatteryExternalStatsWorker;)Landroid/util/IntArray;
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-get3(Lcom/android/server/am/BatteryExternalStatsWorker;)I
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-get4(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/Object;
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-set0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/util/concurrent/Future;)Ljava/util/concurrent/Future;
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-set1(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;)Ljava/lang/String;
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-set2(Lcom/android/server/am/BatteryExternalStatsWorker;I)I
+SPLcom/android/server/am/BatteryExternalStatsWorker;->-wrap0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;I)V
+SPLcom/android/server/am/BatteryExternalStatsWorker;-><init>(Landroid/content/Context;Lcom/android/internal/os/BatteryStatsImpl;)V
+SPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$-com_android_server_am_BatteryExternalStatsWorker_2654(Ljava/lang/Runnable;)Ljava/lang/Thread;
+SPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future;
+SPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleWrite()Ljava/util/concurrent/Future;
+SPLcom/android/server/am/BatteryStatsService$1;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+SPLcom/android/server/am/BatteryStatsService$1;->getUserIds()[I
+SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V
+SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String;
+SPLcom/android/server/am/BatteryStatsService;->-wrap0(Ljava/nio/ByteBuffer;)I
+SPLcom/android/server/am/BatteryStatsService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Handler;)V
+SPLcom/android/server/am/BatteryStatsService;->initPowerManagement()V
+SPLcom/android/server/am/BatteryStatsService;->publish()V
+SPLcom/android/server/am/BatteryStatsService;->scheduleWriteToDisk()V
+SPLcom/android/server/am/BroadcastQueue$BroadcastHandler;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/os/Looper;)V
+SPLcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Ljava/lang/String;JZ)V
+SPLcom/android/server/am/CompatModePackages$CompatHandler;-><init>(Lcom/android/server/am/CompatModePackages;Landroid/os/Looper;)V
+SPLcom/android/server/am/CompatModePackages;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;Landroid/os/Handler;)V
+SPLcom/android/server/am/InstrumentationReporter;-><init>()V
+SPLcom/android/server/am/KeyguardController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V
+SPLcom/android/server/am/ProcessList;-><init>()V
+SPLcom/android/server/am/ProcessList;->updateOomLevels(IIZ)V
+SPLcom/android/server/am/ProcessStatsService$1;-><init>(Lcom/android/server/am/ProcessStatsService;)V
+SPLcom/android/server/am/ProcessStatsService;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V
+SPLcom/android/server/am/ProcessStatsService;->updateFile()V
+SPLcom/android/server/am/ProviderMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/RecentTasks$1;-><init>()V
+SPLcom/android/server/am/RecentTasks;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V
+SPLcom/android/server/am/TaskChangeNotificationController$MainHandler;-><init>(Lcom/android/server/am/TaskChangeNotificationController;Landroid/os/Looper;)V
+SPLcom/android/server/am/TaskChangeNotificationController;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Handler;)V
+SPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;-><init>(Lcom/android/server/am/TaskPersister;Ljava/lang/String;)V
+SPLcom/android/server/am/TaskPersister;-><init>(Ljava/io/File;Lcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/RecentTasks;)V
+SPLcom/android/server/am/UserController$Injector;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/UserController$Injector;->getContext()Landroid/content/Context;
+SPLcom/android/server/am/UserController$Injector;->getHandler()Landroid/os/Handler;
+SPLcom/android/server/am/UserController$Injector;->getLock()Ljava/lang/Object;
+SPLcom/android/server/am/UserController$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
+SPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+SPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/UserController$Injector;)V
+SPLcom/android/server/am/UserController;->updateStartedUserArrayLocked()V
+SPLcom/android/server/am/UserState;-><init>(Landroid/os/UserHandle;)V
+SPLcom/android/server/am/VrController$1;-><init>(Lcom/android/server/am/VrController;)V
+SPLcom/android/server/am/VrController;-><init>(Ljava/lang/Object;)V
+SPLcom/android/server/display/-$Lambda$pe87L53A2dvYIZSUUR6Usyk2Zwo;-><init>()V
+SPLcom/android/server/display/DisplayAdapter$1;-><init>(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V
+SPLcom/android/server/display/DisplayAdapter$1;->run()V
+SPLcom/android/server/display/DisplayAdapter$2;-><init>(Lcom/android/server/display/DisplayAdapter;)V
+SPLcom/android/server/display/DisplayAdapter$2;->run()V
+SPLcom/android/server/display/DisplayAdapter;->-get0(Lcom/android/server/display/DisplayAdapter;)Lcom/android/server/display/DisplayAdapter$Listener;
+SPLcom/android/server/display/DisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Ljava/lang/String;)V
+SPLcom/android/server/display/DisplayAdapter;->createMode(IIF)Landroid/view/Display$Mode;
+SPLcom/android/server/display/DisplayAdapter;->getContext()Landroid/content/Context;
+SPLcom/android/server/display/DisplayAdapter;->getHandler()Landroid/os/Handler;
+SPLcom/android/server/display/DisplayAdapter;->registerLocked()V
+SPLcom/android/server/display/DisplayAdapter;->sendDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V
+SPLcom/android/server/display/DisplayAdapter;->sendTraversalRequestLocked()V
+SPLcom/android/server/display/DisplayDevice;-><init>(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;)V
+SPLcom/android/server/display/DisplayDevice;->getUniqueId()Ljava/lang/String;
+SPLcom/android/server/display/DisplayDeviceInfo;-><init>()V
+SPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I
+SPLcom/android/server/display/DisplayDeviceInfo;->equals(Lcom/android/server/display/DisplayDeviceInfo;)Z
+SPLcom/android/server/display/DisplayDeviceInfo;->equals(Ljava/lang/Object;)Z
+SPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String;
+SPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String;
+SPLcom/android/server/display/DisplayDeviceInfo;->touchToString(I)Ljava/lang/String;
+SPLcom/android/server/display/DisplayManagerService$BinderService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$DisplayAdapterListener;)V
+SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V
+SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onTraversalRequested()V
+SPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;-><init>(Lcom/android/server/display/DisplayManagerService;Landroid/os/Looper;)V
+SPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V
+SPLcom/android/server/display/DisplayManagerService$Injector;-><init>()V
+SPLcom/android/server/display/DisplayManagerService$Injector;->getDefaultDisplayDelayTimeout()J
+SPLcom/android/server/display/DisplayManagerService$Injector;->getVirtualDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)Lcom/android/server/display/VirtualDisplayAdapter;
+SPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+SPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$LocalService;)V
+SPLcom/android/server/display/DisplayManagerService$SyncRoot;-><init>()V
+SPLcom/android/server/display/DisplayManagerService;->-get5(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot;
+SPLcom/android/server/display/DisplayManagerService;->-wrap13(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
+SPLcom/android/server/display/DisplayManagerService;->-wrap14(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
+SPLcom/android/server/display/DisplayManagerService;->-wrap20(Lcom/android/server/display/DisplayManagerService;)V
+SPLcom/android/server/display/DisplayManagerService;->-wrap28(Lcom/android/server/display/DisplayManagerService;Z)V
+SPLcom/android/server/display/DisplayManagerService;->-wrap8(Lcom/android/server/display/DisplayManagerService;II)V
+SPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$Injector;)V
+SPLcom/android/server/display/DisplayManagerService;->addLogicalDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;
+SPLcom/android/server/display/DisplayManagerService;->assignDisplayIdLocked(Z)I
+SPLcom/android/server/display/DisplayManagerService;->assignLayerStackLocked(I)I
+SPLcom/android/server/display/DisplayManagerService;->configureColorModeLocked(Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V
+SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAdded(Lcom/android/server/display/DisplayDevice;)V
+SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAddedLocked(Lcom/android/server/display/DisplayDevice;)V
+SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V
+SPLcom/android/server/display/DisplayManagerService;->loadStableDisplayValuesLocked()V
+SPLcom/android/server/display/DisplayManagerService;->onBootPhase(I)V
+SPLcom/android/server/display/DisplayManagerService;->onStart()V
+SPLcom/android/server/display/DisplayManagerService;->recordStableDisplayStatsIfNeededLocked(Lcom/android/server/display/LogicalDisplay;)V
+SPLcom/android/server/display/DisplayManagerService;->registerDefaultDisplayAdapters()V
+SPLcom/android/server/display/DisplayManagerService;->registerDisplayAdapterLocked(Lcom/android/server/display/DisplayAdapter;)V
+SPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V
+SPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(II)V
+SPLcom/android/server/display/DisplayManagerService;->updateLogicalDisplaysLocked()Z
+SPLcom/android/server/display/DisplayTransformManager;-><init>()V
+SPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;-><init>(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)V
+SPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Z
+SPLcom/android/server/display/LocalDisplayAdapter$HotplugDisplayEventReceiver;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/Looper;)V
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)V
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;I[Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)V
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayInfoIndexLocked(I)I
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->hasStableUniqueId()Z
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateColorModesLocked([II)Z
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDeviceInfoLocked()V
+SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updatePhysicalDisplayInfoLocked([Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)Z
+SPLcom/android/server/display/LocalDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V
+SPLcom/android/server/display/LocalDisplayAdapter;->getPowerModeForState(I)I
+SPLcom/android/server/display/LocalDisplayAdapter;->registerLocked()V
+SPLcom/android/server/display/LocalDisplayAdapter;->tryConnectDisplayLocked(I)V
+SPLcom/android/server/display/LogicalDisplay;-><init>(IILcom/android/server/display/DisplayDevice;)V
+SPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice;
+SPLcom/android/server/display/LogicalDisplay;->isValidLocked()Z
+SPLcom/android/server/display/LogicalDisplay;->setRequestedColorModeLocked(I)V
+SPLcom/android/server/display/LogicalDisplay;->updateLocked(Ljava/util/List;)V
+SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->-wrap0(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)Landroid/graphics/Point;
+SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>()V
+SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)V
+SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->getDisplaySize()Landroid/graphics/Point;
+SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadIntValue(Lorg/xmlpull/v1/XmlPullParser;)I
+SPLcom/android/server/display/PersistentDataStore;-><init>()V
+SPLcom/android/server/display/PersistentDataStore;->clearState()V
+SPLcom/android/server/display/PersistentDataStore;->getColorMode(Lcom/android/server/display/DisplayDevice;)I
+SPLcom/android/server/display/PersistentDataStore;->getDisplayState(Ljava/lang/String;Z)Lcom/android/server/display/PersistentDataStore$DisplayState;
+SPLcom/android/server/display/PersistentDataStore;->getStableDisplaySize()Landroid/graphics/Point;
+SPLcom/android/server/display/PersistentDataStore;->load()V
+SPLcom/android/server/display/PersistentDataStore;->loadDisplaysFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+SPLcom/android/server/display/PersistentDataStore;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+SPLcom/android/server/display/PersistentDataStore;->loadIfNeeded()V
+SPLcom/android/server/display/PersistentDataStore;->loadRememberedWifiDisplaysFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+SPLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V
+SPLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;)V
+SPLcom/android/server/display/VirtualDisplayAdapter;->registerLocked()V
+SPLcom/android/server/firewall/AndFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/CategoryFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/FilterFactory;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/FilterFactory;->getTagName()Ljava/lang/String;
+SPLcom/android/server/firewall/IntentFirewall$FirewallHandler;-><init>(Lcom/android/server/firewall/IntentFirewall;Landroid/os/Looper;)V
+SPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>()V
+SPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;)V
+SPLcom/android/server/firewall/IntentFirewall$RuleObserver;-><init>(Lcom/android/server/firewall/IntentFirewall;Ljava/io/File;)V
+SPLcom/android/server/firewall/IntentFirewall;-><init>(Lcom/android/server/firewall/IntentFirewall$AMSInterface;Landroid/os/Handler;)V
+SPLcom/android/server/firewall/IntentFirewall;->getRulesDir()Ljava/io/File;
+SPLcom/android/server/firewall/IntentFirewall;->readRulesDir(Ljava/io/File;)V
+SPLcom/android/server/firewall/NotFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/OrFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/PortFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/SenderFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/SenderFilter$2;-><init>()V
+SPLcom/android/server/firewall/SenderFilter$3;-><init>()V
+SPLcom/android/server/firewall/SenderFilter$4;-><init>()V
+SPLcom/android/server/firewall/SenderFilter$5;-><init>()V
+SPLcom/android/server/firewall/SenderPackageFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/SenderPermissionFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$10;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$1;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$2;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$3;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$4;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$5;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$6;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$7;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$8;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$9;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/firewall/StringFilter$ValueProvider;-><init>(Ljava/lang/String;)V
+SPLcom/android/server/lights/Light;-><init>()V
+SPLcom/android/server/lights/LightsManager;-><init>()V
+SPLcom/android/server/lights/LightsService$1;-><init>(Lcom/android/server/lights/LightsService;)V
+SPLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/Light;
+SPLcom/android/server/lights/LightsService$2;-><init>(Lcom/android/server/lights/LightsService;)V
+SPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;I)V
+SPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;ILcom/android/server/lights/LightsService$LightImpl;)V
+SPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/lights/LightsService;->onBootPhase(I)V
+SPLcom/android/server/lights/LightsService;->onStart()V
+SPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/os/DeviceIdentifiersPolicyService;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/os/DeviceIdentifiersPolicyService;->onStart()V
+SPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$1()V
+SPLcom/android/server/pm/AbstractStatsBase;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
+SPLcom/android/server/pm/AbstractStatsBase;->getFile()Landroid/util/AtomicFile;
+SPLcom/android/server/pm/AbstractStatsBase;->read(Ljava/lang/Object;)V
+SPLcom/android/server/pm/BasePermission;->setGids([IZ)V
+SPLcom/android/server/pm/CompilerStats;-><init>()V
+SPLcom/android/server/pm/CompilerStats;->read()V
+SPLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Object;)V
+SPLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Void;)V
+SPLcom/android/server/pm/DefaultPermissionGrantPolicy$1;-><init>(Lcom/android/server/pm/DefaultPermissionGrantPolicy;Landroid/os/Looper;)V
+SPLcom/android/server/pm/DefaultPermissionGrantPolicy;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/Installer$1;-><init>(Lcom/android/server/pm/Installer;)V
+SPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;Z)V
+SPLcom/android/server/pm/Installer;->connect()V
+SPLcom/android/server/pm/Installer;->fixupAppData(Ljava/lang/String;I)V
+SPLcom/android/server/pm/Installer;->invalidateMounts()V
+SPLcom/android/server/pm/Installer;->onStart()V
+SPLcom/android/server/pm/InstantAppRegistry$CookiePersistence;-><init>(Lcom/android/server/pm/InstantAppRegistry;Landroid/os/Looper;)V
+SPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/KeySetHandle;-><init>(JI)V
+SPLcom/android/server/pm/KeySetHandle;->getRefCountLPr()I
+SPLcom/android/server/pm/KeySetHandle;->setRefCountLPw(I)V
+SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;)V
+SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;)V
+SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->incrRefCountLPw()V
+SPLcom/android/server/pm/KeySetManagerService;-><init>(Landroid/util/ArrayMap;)V
+SPLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;)V
+SPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V
+SPLcom/android/server/pm/PackageInstallerService$1;-><init>()V
+SPLcom/android/server/pm/PackageKeySetData;->setProperSigningKeySet(J)V
+SPLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;)V
+SPLcom/android/server/pm/PackageManagerService$1;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/PackageManagerService$2;-><init>()V
+SPLcom/android/server/pm/PackageManagerService$3;-><init>()V
+SPLcom/android/server/pm/PackageManagerService$9;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator;-><init>(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V
+SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator;
+SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/PackageManagerService$DefaultContainerConnection;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/PackageManagerService$MoveCallbacks;-><init>(Landroid/os/Looper;)V
+SPLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;-><init>(Landroid/os/Looper;)V
+SPLcom/android/server/pm/PackageManagerService$PackageHandler;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;)V
+SPLcom/android/server/pm/PackageManagerService$PackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->findStaticOverlayPackages()V
+SPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;-><init>()V
+SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver;)V
+SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
+SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ProviderIntentInfo;
+SPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+SPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)V
+SPLcom/android/server/pm/PackageManagerService$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)V
+SPLcom/android/server/pm/PackageManagerService;->-get12(Lcom/android/server/pm/PackageManagerService;)Ljava/util/List;
+SPLcom/android/server/pm/PackageManagerService;->-get2()Ljava/util/Set;
+SPLcom/android/server/pm/PackageManagerService;->-get5(Lcom/android/server/pm/PackageManagerService;)Z
+SPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPr(Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry;Landroid/content/pm/PackageParser$Package;)V
+SPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPw(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)Z
+SPLcom/android/server/pm/PackageManagerService;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
+SPLcom/android/server/pm/PackageManagerService;->checkDefaultBrowser()V
+SPLcom/android/server/pm/PackageManagerService;->decompressSystemApplications(Ljava/util/List;I)V
+SPLcom/android/server/pm/PackageManagerService;->deleteTempPackageFiles()V
+SPLcom/android/server/pm/PackageManagerService;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String;
+SPLcom/android/server/pm/PackageManagerService;->getDefaultDisplayMetrics(Landroid/content/Context;Landroid/util/DisplayMetrics;)V
+SPLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageName()Ljava/lang/String;
+SPLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName()Ljava/lang/String;
+SPLcom/android/server/pm/PackageManagerService;->isExternal(Lcom/android/server/pm/PackageSetting;)Z
+SPLcom/android/server/pm/PackageManagerService;->locationIsPrivileged(Ljava/io/File;)Z
+SPLcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)Lcom/android/server/pm/PackageManagerService;
+SPLcom/android/server/pm/PackageManagerService;->preparePackageParserCache(Z)Ljava/io/File;
+SPLcom/android/server/pm/PackageManagerService;->scanDirTracedLI(Ljava/io/File;IIJ)V
+SPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->checkProperties()V
+SPLcom/android/server/pm/PackageSetting;->doCopy(Lcom/android/server/pm/PackageSetting;)V
+SPLcom/android/server/pm/PackageSetting;->getSharedUserId()I
+SPLcom/android/server/pm/PackageSettingBase;->getInstallStatus()I
+SPLcom/android/server/pm/PackageSettingBase;->setIntentFilterVerificationInfo(Landroid/content/pm/IntentFilterVerificationInfo;)V
+SPLcom/android/server/pm/PackageUsage;-><init>()V
+SPLcom/android/server/pm/PackageUsage;->readInternal(Ljava/lang/Object;)V
+SPLcom/android/server/pm/PackageUsage;->readInternal(Ljava/util/Map;)V
+SPLcom/android/server/pm/ParallelPackageParser;-><init>([Ljava/lang/String;ZLandroid/util/DisplayMetrics;Ljava/io/File;Landroid/content/pm/PackageParser$Callback;)V
+SPLcom/android/server/pm/ParallelPackageParser;->close()V
+SPLcom/android/server/pm/PermissionsState$PermissionData;->revoke(I)Z
+SPLcom/android/server/pm/PermissionsState;->ensureNoPermissionData(Ljava/lang/String;)V
+SPLcom/android/server/pm/Policy$PolicyBuilder;->-get0(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Set;
+SPLcom/android/server/pm/Policy$PolicyBuilder;->-get1(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Map;
+SPLcom/android/server/pm/Policy$PolicyBuilder;->-get2(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/lang/String;
+SPLcom/android/server/pm/Policy$PolicyBuilder;-><init>()V
+SPLcom/android/server/pm/Policy$PolicyBuilder;->addInnerPackageMapOrThrow(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
+SPLcom/android/server/pm/Policy$PolicyBuilder;->addSignature(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
+SPLcom/android/server/pm/Policy$PolicyBuilder;->build()Lcom/android/server/pm/Policy;
+SPLcom/android/server/pm/Policy$PolicyBuilder;->setGlobalSeinfoOrThrow(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
+SPLcom/android/server/pm/Policy$PolicyBuilder;->validateValue(Ljava/lang/String;)Z
+SPLcom/android/server/pm/Policy;->-get0(Lcom/android/server/pm/Policy;)Ljava/util/Set;
+SPLcom/android/server/pm/Policy;->-get1(Lcom/android/server/pm/Policy;)Ljava/util/Map;
+SPLcom/android/server/pm/Policy;->-get2(Lcom/android/server/pm/Policy;)Ljava/lang/String;
+SPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;)V
+SPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;Lcom/android/server/pm/Policy;)V
+SPLcom/android/server/pm/Policy;->getSignatures()Ljava/util/Set;
+SPLcom/android/server/pm/Policy;->hasInnerPackages()Z
+SPLcom/android/server/pm/PolicyComparator;-><init>()V
+SPLcom/android/server/pm/PolicyComparator;->compare(Lcom/android/server/pm/Policy;Lcom/android/server/pm/Policy;)I
+SPLcom/android/server/pm/PolicyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+SPLcom/android/server/pm/PolicyComparator;->foundDuplicate()Z
+SPLcom/android/server/pm/PreferredActivity;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
+SPLcom/android/server/pm/PreferredActivity;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z
+SPLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;Lorg/xmlpull/v1/XmlPullParser;)V
+SPLcom/android/server/pm/PreferredComponent;->getParseError()Ljava/lang/String;
+SPLcom/android/server/pm/PreferredIntentResolver;-><init>()V
+SPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
+SPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PreferredActivity;
+SPLcom/android/server/pm/ProcessLoggingHandler;-><init>()V
+SPLcom/android/server/pm/ProtectedPackages;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/pm/SELinuxMMAC;->readInstallPolicy()Z
+SPLcom/android/server/pm/SELinuxMMAC;->readPackageOrThrow(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/Policy$PolicyBuilder;)V
+SPLcom/android/server/pm/SELinuxMMAC;->readSeinfo(Lorg/xmlpull/v1/XmlPullParser;)V
+SPLcom/android/server/pm/SELinuxMMAC;->readSignerOrThrow(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/Policy;
+SPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
+SPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->handleMessage(Landroid/os/Message;)V
+SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-wrap1(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;I)V
+SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><init>(Lcom/android/server/pm/Settings;Ljava/lang/Object;)V
+SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSyncLPr(I)V
+SPLcom/android/server/pm/Settings$VersionInfo;-><init>()V
+SPLcom/android/server/pm/Settings;->-wrap0(Lcom/android/server/pm/Settings;I)Ljava/io/File;
+SPLcom/android/server/pm/Settings;-><init>(Ljava/io/File;Ljava/lang/Object;)V
+SPLcom/android/server/pm/Settings;-><init>(Ljava/lang/Object;)V
+SPLcom/android/server/pm/Settings;->addSharedUserLPw(Ljava/lang/String;III)Lcom/android/server/pm/SharedUserSetting;
+SPLcom/android/server/pm/Settings;->editPreferredActivitiesLPw(I)Lcom/android/server/pm/PreferredIntentResolver;
+SPLcom/android/server/pm/Settings;->findOrCreateVersion(Ljava/lang/String;)Lcom/android/server/pm/Settings$VersionInfo;
+SPLcom/android/server/pm/Settings;->getAllSharedUsersLPw()Ljava/util/Collection;
+SPLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;IIZ)Lcom/android/server/pm/SharedUserSetting;
+SPLcom/android/server/pm/Settings;->getUserPackagesStateBackupFile(I)Ljava/io/File;
+SPLcom/android/server/pm/Settings;->getUserPackagesStateFile(I)Ljava/io/File;
+SPLcom/android/server/pm/Settings;->getUserRuntimePermissionsFile(I)Ljava/io/File;
+SPLcom/android/server/pm/Settings;->readCrossProfileIntentFiltersLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
+SPLcom/android/server/pm/Settings;->readDefaultAppsLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
+SPLcom/android/server/pm/Settings;->readDomainVerificationLPw(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PackageSettingBase;)V
+SPLcom/android/server/pm/Settings;->readPersistentPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
+SPLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
+SPLcom/android/server/pm/SharedUserSetting;-><init>(Ljava/lang/String;II)V
+SPLcom/android/server/pm/UserDataPreparer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Z)V
+SPLcom/android/server/pm/UserManagerService$1;-><init>(Lcom/android/server/pm/UserManagerService;)V
+SPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;)V
+SPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$LocalService;)V
+SPLcom/android/server/pm/UserManagerService$MainHandler;-><init>(Lcom/android/server/pm/UserManagerService;)V
+SPLcom/android/server/pm/UserManagerService$UserData;-><init>()V
+SPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;)V
+SPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;Ljava/io/File;)V
+SPLcom/android/server/pm/UserManagerService;->initDefaultGuestRestrictions()V
+SPLcom/android/server/pm/UserManagerService;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
+SPLcom/android/server/pm/UserManagerService;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
+SPLcom/android/server/pm/UserManagerService;->readUserLP(I)Lcom/android/server/pm/UserManagerService$UserData;
+SPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;)Lcom/android/server/pm/UserManagerService$UserData;
+SPLcom/android/server/pm/UserManagerService;->readUserListLP()V
+SPLcom/android/server/pm/UserManagerService;->updateUserIds()V
+SPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(Landroid/os/Bundle;)V
+SPLcom/android/server/pm/UserRestrictionsUtils;->newSetWithUniqueCheck([Ljava/lang/String;)Ljava/util/Set;
+SPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/Bundle;
+SPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V
+SPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>()V
+SPLcom/android/server/pm/dex/PackageDexUsage;-><init>()V
+SPLcom/android/server/power/BatterySaverPolicy;-><init>(Landroid/os/Handler;)V
+SPLcom/android/server/power/PowerManagerService$1;-><init>(Lcom/android/server/power/PowerManagerService;)V
+SPLcom/android/server/power/PowerManagerService$2;-><init>(Lcom/android/server/power/PowerManagerService;)V
+SPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;)V
+SPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$BinderService;)V
+SPLcom/android/server/power/PowerManagerService$Constants;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V
+SPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;)V
+SPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$LocalService;)V
+SPLcom/android/server/power/PowerManagerService$LocalService;->getLowPowerState(I)Landroid/os/PowerSaveState;
+SPLcom/android/server/power/PowerManagerService$LocalService;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V
+SPLcom/android/server/power/PowerManagerService$PowerManagerHandler;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Looper;)V
+SPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;-><init>(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)V
+SPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire()V
+SPLcom/android/server/power/PowerManagerService;->-get0(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/BatterySaverPolicy;
+SPLcom/android/server/power/PowerManagerService;->-get10(Lcom/android/server/power/PowerManagerService;)Z
+SPLcom/android/server/power/PowerManagerService;->-get11(Lcom/android/server/power/PowerManagerService;)Ljava/util/ArrayList;
+SPLcom/android/server/power/PowerManagerService;->-wrap20(Ljava/lang/String;)V
+SPLcom/android/server/power/PowerManagerService;-><init>(Landroid/content/Context;)V
+SPLcom/android/server/power/PowerManagerService;->createSuspendBlockerLocked(Ljava/lang/String;)Lcom/android/server/power/SuspendBlocker;
+SPLcom/android/server/power/PowerManagerService;->onBootPhase(I)V
+SPLcom/android/server/power/PowerManagerService;->onStart()V
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
index 71f699c8da54..b9bea163a8a5 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
@@ -120,6 +120,18 @@ public final class AutofillManagerService extends SystemService {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) {
+ if (sDebug) Slog.d(TAG, "Close system dialogs");
+
+ // TODO(b/64940307): we need to destroy all sessions that are finished but showing
+ // Save UI because there is no way to show the Save UI back when the activity
+ // beneath it is brought back to top. Ideally, we should just hide the UI and
+ // bring it back when the activity resumes.
+ synchronized (mLock) {
+ for (int i = 0; i < mServicesCache.size(); i++) {
+ mServicesCache.valueAt(i).destroyFinishedSessionsLocked();
+ }
+ }
+
mUi.hideAll(null);
}
}
@@ -650,7 +662,22 @@ public final class AutofillManagerService extends SystemService {
synchronized (mLock) {
final AutofillManagerServiceImpl service = peekServiceForUserLocked(userId);
if (service == null) return false;
- return Objects.equals(packageName, service.getPackageName());
+ return Objects.equals(packageName, service.getServicePackageName());
+ }
+ }
+
+ @Override
+ public void onPendingSaveUi(int operation, IBinder token) {
+ Preconditions.checkNotNull(token, "token");
+ Preconditions.checkArgument(operation == AutofillManager.PENDING_UI_OPERATION_CANCEL
+ || operation == AutofillManager.PENDING_UI_OPERATION_RESTORE,
+ "invalid operation: %d", operation);
+ synchronized (mLock) {
+ final AutofillManagerServiceImpl service = peekServiceForUserLocked(
+ UserHandle.getCallingUserId());
+ if (service != null) {
+ service.onPendingSaveUi(operation, token);
+ }
}
}
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
index 751c0547afd6..59022e3ff14e 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
@@ -34,6 +34,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Binder;
import android.os.Bundle;
@@ -41,7 +42,6 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
-import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.service.autofill.AutofillService;
@@ -52,10 +52,12 @@ import android.service.autofill.FillResponse;
import android.service.autofill.IAutoFillService;
import android.text.TextUtils;
import android.util.ArraySet;
+import android.util.DebugUtils;
import android.util.LocalLog;
import android.util.Slog;
import android.util.SparseArray;
import android.view.autofill.AutofillId;
+import android.view.autofill.AutofillManager;
import android.view.autofill.AutofillValue;
import android.view.autofill.IAutoFillManagerClient;
@@ -144,8 +146,9 @@ final class AutofillManagerServiceImpl {
updateLocked(disabled);
}
+ @Nullable
CharSequence getServiceName() {
- final String packageName = getPackageName();
+ final String packageName = getServicePackageName();
if (packageName == null) {
return null;
}
@@ -160,7 +163,8 @@ final class AutofillManagerServiceImpl {
}
}
- String getPackageName() {
+ @Nullable
+ String getServicePackageName() {
final ComponentName serviceComponent = getServiceComponentName();
if (serviceComponent != null) {
return serviceComponent.getPackageName();
@@ -233,26 +237,6 @@ final class AutofillManagerServiceImpl {
}
}
- /**
- * Used by {@link AutofillManagerServiceShellCommand} to request save for the current top app.
- */
- void requestSaveForUserLocked(IBinder activityToken) {
- if (!isEnabled()) {
- return;
- }
-
- final int numSessions = mSessions.size();
- for (int i = 0; i < numSessions; i++) {
- final Session session = mSessions.valueAt(i);
- if (session.getActivityTokenLocked().equals(activityToken)) {
- session.callSaveLocked();
- return;
- }
- }
-
- Slog.w(TAG, "requestSaveForUserLocked(): no session for " + activityToken);
- }
-
boolean addClientLocked(IAutoFillManagerClient client) {
if (mClients == null) {
mClients = new RemoteCallbackList<>();
@@ -290,6 +274,7 @@ final class AutofillManagerServiceImpl {
if (!isEnabled()) {
return 0;
}
+ if (sVerbose) Slog.v(TAG, "startSession(): token=" + activityToken + ", flags=" + flags);
// Occasionally clean up abandoned sessions
pruneAbandonedSessionsLocked();
@@ -461,6 +446,25 @@ final class AutofillManagerServiceImpl {
}
}
+ void onPendingSaveUi(int operation, @NonNull IBinder token) {
+ if (sVerbose) Slog.v(TAG, "onPendingSaveUi(" + operation + "): " + token);
+ synchronized (mLock) {
+ final int sessionCount = mSessions.size();
+ for (int i = sessionCount - 1; i >= 0; i--) {
+ final Session session = mSessions.valueAt(i);
+ if (session.isSaveUiPendingForTokenLocked(token)) {
+ session.onPendingSaveUi(operation, token);
+ return;
+ }
+ }
+ }
+ if (sDebug) {
+ Slog.d(TAG, "No pending Save UI for token " + token + " and operation "
+ + DebugUtils.flagsToString(AutofillManager.class, "PENDING_UI_OPERATION_",
+ operation));
+ }
+ }
+
void destroyLocked() {
if (sVerbose) Slog.v(TAG, "destroyLocked()");
@@ -480,10 +484,16 @@ final class AutofillManagerServiceImpl {
sendStateToClients(true);
}
+ @NonNull
CharSequence getServiceLabel() {
return mInfo.getServiceInfo().loadLabel(mContext.getPackageManager());
}
+ @NonNull
+ Drawable getServiceIcon() {
+ return mInfo.getServiceInfo().loadIcon(mContext.getPackageManager());
+ }
+
/**
* Initializes the last fill selection after an autofill service returned a new
* {@link FillResponse}.
@@ -521,10 +531,11 @@ final class AutofillManagerServiceImpl {
/**
* Updates the last fill selection when an authentication was selected.
*/
- void setAuthenticationSelected(int sessionId) {
+ void setAuthenticationSelected(int sessionId, @Nullable Bundle clientState) {
synchronized (mLock) {
if (isValidEventLocked("setAuthenticationSelected()", sessionId)) {
- mEventHistory.addEvent(new Event(Event.TYPE_AUTHENTICATION_SELECTED, null));
+ mEventHistory
+ .addEvent(new Event(Event.TYPE_AUTHENTICATION_SELECTED, null, clientState));
}
}
}
@@ -532,11 +543,13 @@ final class AutofillManagerServiceImpl {
/**
* Updates the last fill selection when an dataset authentication was selected.
*/
- void setDatasetAuthenticationSelected(@Nullable String selectedDataset, int sessionId) {
+ void logDatasetAuthenticationSelected(@Nullable String selectedDataset, int sessionId,
+ @Nullable Bundle clientState) {
synchronized (mLock) {
- if (isValidEventLocked("setDatasetAuthenticationSelected()", sessionId)) {
+ if (isValidEventLocked("logDatasetAuthenticationSelected()", sessionId)) {
mEventHistory.addEvent(
- new Event(Event.TYPE_DATASET_AUTHENTICATION_SELECTED, selectedDataset));
+ new Event(Event.TYPE_DATASET_AUTHENTICATION_SELECTED, selectedDataset,
+ clientState));
}
}
}
@@ -544,10 +557,10 @@ final class AutofillManagerServiceImpl {
/**
* Updates the last fill selection when an save Ui is shown.
*/
- void setSaveShown(int sessionId) {
+ void logSaveShown(int sessionId, @Nullable Bundle clientState) {
synchronized (mLock) {
- if (isValidEventLocked("setSaveShown()", sessionId)) {
- mEventHistory.addEvent(new Event(Event.TYPE_SAVE_SHOWN, null));
+ if (isValidEventLocked("logSaveShown()", sessionId)) {
+ mEventHistory.addEvent(new Event(Event.TYPE_SAVE_SHOWN, null, clientState));
}
}
}
@@ -555,10 +568,12 @@ final class AutofillManagerServiceImpl {
/**
* Updates the last fill response when a dataset was selected.
*/
- void setDatasetSelected(@Nullable String selectedDataset, int sessionId) {
+ void logDatasetSelected(@Nullable String selectedDataset, int sessionId,
+ @Nullable Bundle clientState) {
synchronized (mLock) {
- if (isValidEventLocked("setDatasetSelected()", sessionId)) {
- mEventHistory.addEvent(new Event(Event.TYPE_DATASET_SELECTED, selectedDataset));
+ if (isValidEventLocked("logDatasetSelected()", sessionId)) {
+ mEventHistory.addEvent(
+ new Event(Event.TYPE_DATASET_SELECTED, selectedDataset, clientState));
}
}
}
@@ -622,8 +637,24 @@ final class AutofillManagerServiceImpl {
}
void destroySessionsLocked() {
+ if (mSessions.size() == 0) {
+ mUi.destroyAll(null, null, false);
+ return;
+ }
while (mSessions.size() > 0) {
- mSessions.valueAt(0).removeSelfLocked();
+ mSessions.valueAt(0).forceRemoveSelfLocked();
+ }
+ }
+
+ // TODO(b/64940307): remove this method if SaveUI is refactored to be attached on activities
+ void destroyFinishedSessionsLocked() {
+ final int sessionCount = mSessions.size();
+ for (int i = sessionCount - 1; i >= 0; i--) {
+ final Session session = mSessions.valueAt(i);
+ if (session.isSavingLocked()) {
+ if (sDebug) Slog.d(TAG, "destroyFinishedSessionsLocked(): " + session.id);
+ session.forceRemoveSelfLocked();
+ }
}
}
diff --git a/services/autofill/java/com/android/server/autofill/Helper.java b/services/autofill/java/com/android/server/autofill/Helper.java
index 086dd29f0c97..236fbfd94f53 100644
--- a/services/autofill/java/com/android/server/autofill/Helper.java
+++ b/services/autofill/java/com/android/server/autofill/Helper.java
@@ -18,6 +18,7 @@ package com.android.server.autofill;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.metrics.LogMaker;
import android.os.Bundle;
import android.service.autofill.Dataset;
import android.util.ArrayMap;
@@ -25,6 +26,8 @@ import android.util.ArraySet;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillValue;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
@@ -99,4 +102,14 @@ public final class Helper {
}
return fields;
}
+
+ @NonNull
+ public static LogMaker newLogMaker(int category, String packageName,
+ String servicePackageName) {
+ final LogMaker log = new LogMaker(category).setPackageName(packageName);
+ if (servicePackageName != null) {
+ log.addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName);
+ }
+ return log;
+ }
}
diff --git a/services/autofill/java/com/android/server/autofill/RemoteFillService.java b/services/autofill/java/com/android/server/autofill/RemoteFillService.java
index dd980535f628..af55807ff1f0 100644
--- a/services/autofill/java/com/android/server/autofill/RemoteFillService.java
+++ b/services/autofill/java/com/android/server/autofill/RemoteFillService.java
@@ -387,8 +387,10 @@ final class RemoteFillService implements DeathRecipient {
@Override
public void executeMessage(Message message) {
if (mDestroyed) {
- Slog.w(LOG_TAG, "Not handling " + message + " as service for "
- + mComponentName + " is already destroyed");
+ if (sVerbose) {
+ Slog.v(LOG_TAG, "Not handling " + message + " as service for "
+ + mComponentName + " is already destroyed");
+ }
return;
}
switch (message.what) {
@@ -574,6 +576,12 @@ final class RemoteFillService implements DeathRecipient {
@Override
public void run() {
+ synchronized (mLock) {
+ if (isCancelledLocked()) {
+ if (sDebug) Slog.d(LOG_TAG, "run() called after canceled: " + mRequest);
+ return;
+ }
+ }
final RemoteFillService remoteService = getService();
if (remoteService != null) {
try {
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index f8fb13a54115..f81ecf247ac7 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -77,6 +77,7 @@ import com.android.internal.os.HandlerCaller;
import com.android.internal.os.IResultReceiver;
import com.android.internal.util.ArrayUtils;
import com.android.server.autofill.ui.AutoFillUI;
+import com.android.server.autofill.ui.PendingUi;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -164,10 +165,22 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
@GuardedBy("mLock")
private boolean mDestroyed;
- /** Whether the session is currently saving */
+ /** Whether the session is currently saving. */
@GuardedBy("mLock")
private boolean mIsSaving;
+ /**
+ * Helper used to handle state of Save UI when it must be hiding to show a custom description
+ * link and later recovered.
+ */
+ @GuardedBy("mLock")
+ private PendingUi mPendingSaveUi;
+
+ /**
+ * List of dataset ids selected by the user.
+ */
+ @GuardedBy("mLock")
+ private ArrayList<String> mSelectedDatasetIds;
/**
* Receiver of assist data from the app's {@link Activity}.
@@ -261,7 +274,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
value = state.getCurrentValue();
if (value == null) {
if (sDebug) Slog.d(TAG, "getValue(): no current value for " + id);
- value = getValueFromContexts(id);
+ value = getValueFromContextsLocked(id);
}
}
if (value != null) {
@@ -269,7 +282,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
return value.getTextValue().toString();
}
if (value.isList()) {
- final CharSequence[] options = getAutofillOptionsFromContexts(id);
+ final CharSequence[] options = getAutofillOptionsFromContextsLocked(id);
if (options != null) {
final int index = value.getListValue();
final CharSequence option = options[index];
@@ -332,21 +345,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* Cancels the last request sent to the {@link #mRemoteFillService}.
*/
private void cancelCurrentRequestLocked() {
- int canceledRequest = mRemoteFillService.cancelCurrentRequest();
+ final int canceledRequest = mRemoteFillService.cancelCurrentRequest();
// Remove the FillContext as there will never be a response for the service
if (canceledRequest != INVALID_REQUEST_ID && mContexts != null) {
- int numContexts = mContexts.size();
+ final int numContexts = mContexts.size();
// It is most likely the last context, hence search backwards
for (int i = numContexts - 1; i >= 0; i--) {
if (mContexts.get(i).getRequestId() == canceledRequest) {
+ if (sDebug) Slog.d(TAG, "cancelCurrentRequest(): id = " + canceledRequest);
mContexts.remove(i);
break;
}
}
}
-
}
/**
@@ -404,7 +417,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
mPackageName = packageName;
mClient = IAutoFillManagerClient.Stub.asInterface(client);
- mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_STARTED, mPackageName);
+ writeLog(MetricsEvent.AUTOFILL_SESSION_STARTED);
}
/**
@@ -449,14 +462,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
if (response == null) {
- if (sVerbose) Slog.v(TAG, "canceling session " + id + " when server returned null");
- if ((requestFlags & FLAG_MANUAL_REQUEST) != 0) {
- getUiForShowing().showError(R.string.autofill_error_cannot_autofill, this);
- }
- mService.resetLastResponse();
- // Nothing to be done, but need to notify client.
- notifyUnavailableToClient();
- removeSelf();
+ processNullResponseLocked(requestFlags);
return;
}
@@ -465,19 +471,16 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
if ((response.getDatasets() == null || response.getDatasets().isEmpty())
&& response.getAuthentication() == null) {
// Response is "empty" from an UI point of view, need to notify client.
- notifyUnavailableToClient();
+ notifyUnavailableToClient(false);
}
synchronized (mLock) {
processResponseLocked(response, requestFlags);
}
- final LogMaker log = (new LogMaker(MetricsEvent.AUTOFILL_REQUEST))
+ final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_REQUEST, servicePackageName)
.setType(MetricsEvent.TYPE_SUCCESS)
- .setPackageName(mPackageName)
.addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS,
- response.getDatasets() == null ? 0 : response.getDatasets().size())
- .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE,
- servicePackageName);
+ response.getDatasets() == null ? 0 : response.getDatasets().size());
mMetricsLogger.write(log);
}
@@ -493,10 +496,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
mService.resetLastResponse();
}
- LogMaker log = (new LogMaker(MetricsEvent.AUTOFILL_REQUEST))
- .setType(MetricsEvent.TYPE_FAILURE)
- .setPackageName(mPackageName)
- .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName);
+ LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_REQUEST, servicePackageName)
+ .setType(MetricsEvent.TYPE_FAILURE);
mMetricsLogger.write(log);
getUiForShowing().showError(message, this);
@@ -515,11 +516,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
return;
}
}
- LogMaker log = (new LogMaker(
- MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST))
- .setType(MetricsEvent.TYPE_SUCCESS)
- .setPackageName(mPackageName)
- .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName);
+ LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST, servicePackageName)
+ .setType(MetricsEvent.TYPE_SUCCESS);
mMetricsLogger.write(log);
// Nothing left to do...
@@ -539,11 +537,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
return;
}
}
- LogMaker log = (new LogMaker(
- MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST))
- .setType(MetricsEvent.TYPE_FAILURE)
- .setPackageName(mPackageName)
- .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName);
+ LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST, servicePackageName)
+ .setType(MetricsEvent.TYPE_FAILURE);
mMetricsLogger.write(log);
getUiForShowing().showError(message, this);
@@ -577,20 +572,25 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
// FillServiceCallbacks
@Override
public void authenticate(int requestId, int datasetIndex, IntentSender intent, Bundle extras) {
+ if (sDebug) {
+ Slog.d(TAG, "authenticate(): requestId=" + requestId + "; datasetIdx=" + datasetIndex
+ + "; intentSender=" + intent);
+ }
final Intent fillInIntent;
synchronized (mLock) {
- synchronized (mLock) {
- if (mDestroyed) {
- Slog.w(TAG, "Call to Session#authenticate() rejected - session: "
- + id + " destroyed");
- return;
- }
+ if (mDestroyed) {
+ Slog.w(TAG, "Call to Session#authenticate() rejected - session: "
+ + id + " destroyed");
+ return;
+ }
+ fillInIntent = createAuthFillInIntentLocked(requestId, extras);
+ if (fillInIntent == null) {
+ forceRemoveSelfLocked();
+ return;
}
- fillInIntent = createAuthFillInIntent(
- getFillContextByRequestIdLocked(requestId).getStructure(), extras);
}
- mService.setAuthenticationSelected(id);
+ mService.setAuthenticationSelected(id, mClientState);
final int authenticationId = AutofillManager.makeAuthenticationId(requestId, datasetIndex);
mHandlerCaller.getHandler().post(() -> startAuthentication(authenticationId,
@@ -613,7 +613,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
return;
}
}
- mHandlerCaller.getHandler().post(() -> autoFill(requestId, datasetIndex, dataset));
+ mHandlerCaller.getHandler().post(() -> autoFill(requestId, datasetIndex, dataset, true));
}
// AutoFillUiCallback
@@ -701,7 +701,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
mHandlerCaller.getHandler().post(() -> {
try {
synchronized (mLock) {
- mClient.startIntentSender(intentSender);
+ mClient.startIntentSender(intentSender, null);
}
} catch (RemoteException e) {
Slog.e(TAG, "Error launching auth intent", e);
@@ -741,16 +741,25 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
final Parcelable result = data.getParcelable(AutofillManager.EXTRA_AUTHENTICATION_RESULT);
+ if (sDebug) Slog.d(TAG, "setAuthenticationResultLocked(): result=" + result);
if (result instanceof FillResponse) {
- final FillResponse response = (FillResponse) result;
- mMetricsLogger.action(MetricsEvent.AUTOFILL_AUTHENTICATED, mPackageName);
- replaceResponseLocked(authenticatedResponse, response);
+ writeLog(MetricsEvent.AUTOFILL_AUTHENTICATED);
+ replaceResponseLocked(authenticatedResponse, (FillResponse) result);
} else if (result instanceof Dataset) {
if (datasetIdx != AutofillManager.AUTHENTICATION_ID_DATASET_ID_UNDEFINED) {
+ writeLog(MetricsEvent.AUTOFILL_DATASET_AUTHENTICATED);
final Dataset dataset = (Dataset) result;
authenticatedResponse.getDatasets().set(datasetIdx, dataset);
- autoFill(requestId, datasetIdx, dataset);
+ autoFill(requestId, datasetIdx, dataset, false);
+ } else {
+ writeLog(MetricsEvent.AUTOFILL_INVALID_DATASET_AUTHENTICATION);
+ }
+ } else {
+ if (result != null) {
+ Slog.w(TAG, "service returned invalid auth type: " + result);
}
+ writeLog(MetricsEvent.AUTOFILL_INVALID_AUTHENTICATION);
+ processNullResponseLocked(0);
}
}
@@ -763,43 +772,57 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
mHasCallback = hasIt;
}
- /**
- * Shows the save UI, when session can be saved.
- *
- * @return {@code true} if session is done, or {@code false} if it's pending user action.
- */
- public boolean showSaveLocked() {
- if (mDestroyed) {
- Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: "
- + id + " destroyed");
- return false;
- }
+ @Nullable
+ private FillResponse getLastResponseLocked(@Nullable String logPrefix) {
if (mContexts == null) {
- Slog.d(TAG, "showSaveLocked(): no contexts");
- return true;
+ if (sDebug && logPrefix != null) Slog.d(TAG, logPrefix + ": no contexts");
+ return null;
}
if (mResponses == null) {
// Happens when the activity / session was finished before the service replied, or
// when the service cannot autofill it (and returned a null response).
- if (sVerbose) {
- Slog.v(TAG, "showSaveLocked(): no responses on session");
+ if (sVerbose && logPrefix != null) {
+ Slog.v(TAG, logPrefix + ": no responses on session");
}
- return true;
+ return null;
}
final int lastResponseIdx = getLastResponseIndexLocked();
if (lastResponseIdx < 0) {
- Slog.w(TAG, "showSaveLocked(): did not get last response. mResponses=" + mResponses
- + ", mViewStates=" + mViewStates);
- return true;
+ if (logPrefix != null) {
+ Slog.w(TAG, logPrefix + ": did not get last response. mResponses=" + mResponses
+ + ", mViewStates=" + mViewStates);
+ }
+ return null;
}
final FillResponse response = mResponses.valueAt(lastResponseIdx);
- final SaveInfo saveInfo = response.getSaveInfo();
- if (sVerbose) {
- Slog.v(TAG, "showSaveLocked(): mResponses=" + mResponses + ", mContexts=" + mContexts
+ if (sVerbose && logPrefix != null) {
+ Slog.v(TAG, logPrefix + ": mResponses=" + mResponses + ", mContexts=" + mContexts
+ ", mViewStates=" + mViewStates);
}
+ return response;
+ }
+
+ @Nullable
+ private SaveInfo getSaveInfoLocked() {
+ final FillResponse response = getLastResponseLocked(null);
+ return response == null ? null : response.getSaveInfo();
+ }
+
+ /**
+ * Shows the save UI, when session can be saved.
+ *
+ * @return {@code true} if session is done, or {@code false} if it's pending user action.
+ */
+ public boolean showSaveLocked() {
+ if (mDestroyed) {
+ Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: "
+ + id + " destroyed");
+ return false;
+ }
+ final FillResponse response = getLastResponseLocked("showSaveLocked()");
+ final SaveInfo saveInfo = response == null ? null : response.getSaveInfo();
/*
* The Save dialog is only shown if all conditions below are met:
@@ -838,7 +861,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
AutofillValue value = viewState.getCurrentValue();
if (value == null || value.isEmpty()) {
- final AutofillValue initialValue = getValueFromContexts(id);
+ final AutofillValue initialValue = getValueFromContextsLocked(id);
if (initialValue != null) {
if (sDebug) {
Slog.d(TAG, "Value of required field " + id + " didn't change; "
@@ -892,7 +915,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
} else {
// Update current values cache based on initial value
- final AutofillValue initialValue = getValueFromContexts(id);
+ final AutofillValue initialValue = getValueFromContextsLocked(id);
if (sDebug) {
Slog.d(TAG, "no current value for " + id + "; initial value is "
+ initialValue);
@@ -911,15 +934,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
final InternalValidator validator = saveInfo.getValidator();
if (validator != null) {
+ final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_SAVE_VALIDATION);
boolean isValid;
try {
isValid = validator.isValid(valueFinder);
+ log.setType(isValid
+ ? MetricsEvent.TYPE_SUCCESS
+ : MetricsEvent.TYPE_DISMISS);
} catch (Exception e) {
- Slog.e(TAG, "Not showing save UI because of exception during validation "
- + e.getClass());
+ Slog.e(TAG, "Not showing save UI because validation failed:", e);
+ log.setType(MetricsEvent.TYPE_FAILURE);
+ mMetricsLogger.write(log);
return true;
}
+ mMetricsLogger.write(log);
if (!isValid) {
Slog.i(TAG, "not showing save UI because fields failed validation");
return true;
@@ -963,9 +992,19 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
if (sDebug) Slog.d(TAG, "Good news, everyone! All checks passed, show save UI!");
- mService.setSaveShown(id);
- getUiForShowing().showSaveUi(mService.getServiceLabel(), saveInfo,
- valueFinder, mPackageName, this);
+ mService.logSaveShown(id, mClientState);
+ final IAutoFillManagerClient client = getClient();
+ mPendingSaveUi = new PendingUi(mActivityToken, id, client);
+ getUiForShowing().showSaveUi(mService.getServiceLabel(), mService.getServiceIcon(),
+ mService.getServicePackageName(), saveInfo, valueFinder, mPackageName, this,
+ mPendingSaveUi);
+ if (client != null) {
+ try {
+ client.setSaveUiState(id, true);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Error notifying client to set save UI state to shown: " + e);
+ }
+ }
mIsSaving = true;
return false;
}
@@ -990,7 +1029,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* Gets the latest non-empty value for the given id in the autofill contexts.
*/
@Nullable
- private AutofillValue getValueFromContexts(AutofillId id) {
+ private AutofillValue getValueFromContextsLocked(AutofillId id) {
final int numContexts = mContexts.size();
for (int i = numContexts - 1; i >= 0; i--) {
final FillContext context = mContexts.get(i);
@@ -1012,7 +1051,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* Gets the latest autofill options for the given id in the autofill contexts.
*/
@Nullable
- private CharSequence[] getAutofillOptionsFromContexts(AutofillId id) {
+ private CharSequence[] getAutofillOptionsFromContextsLocked(AutofillId id) {
final int numContexts = mContexts.size();
for (int i = numContexts - 1; i >= 0; i--) {
@@ -1037,6 +1076,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
if (sVerbose) Slog.v(TAG, "callSaveLocked(): mViewStates=" + mViewStates);
+ if (mContexts == null) {
+ Slog.w(TAG, "callSaveLocked(): no contexts");
+ return;
+ }
+
final int numContexts = mContexts.size();
for (int contextNum = 0; contextNum < numContexts; contextNum++) {
@@ -1082,7 +1126,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
// until the dispatch happens. The items in the list don't need to be cloned
// since we don't hold on them anywhere else. The client state is not touched
// by us, so no need to copy.
- final SaveRequest saveRequest = new SaveRequest(new ArrayList<>(mContexts), mClientState);
+ final SaveRequest saveRequest = new SaveRequest(new ArrayList<>(mContexts), mClientState,
+ mSelectedDatasetIds);
mRemoteFillService.onSaveRequest(saveRequest);
}
@@ -1218,6 +1263,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
break;
case ACTION_VALUE_CHANGED:
if (value != null && !value.equals(viewState.getCurrentValue())) {
+ if (value.isEmpty()
+ && viewState.getCurrentValue() != null
+ && viewState.getCurrentValue().isText()
+ && viewState.getCurrentValue().getTextValue() != null
+ && getSaveInfoLocked() != null) {
+ final int length = viewState.getCurrentValue().getTextValue().length();
+ if (sDebug) {
+ Slog.d(TAG, "updateLocked(" + id + "): resetting value that was "
+ + length + " chars long");
+ }
+ final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_VALUE_RESET)
+ .addTaggedData(MetricsEvent.FIELD_AUTOFILL_PREVIOUS_LENGTH, length);
+ mMetricsLogger.write(log);
+ }
+
// Always update the internal state.
viewState.setCurrentValue(value);
@@ -1246,7 +1306,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
// Remove the UI if the ViewState has changed.
if (mCurrentViewId != viewState.id) {
- hideFillUiIfOwnedByMe();
+ mUi.hideFillUi(this);
mCurrentViewId = viewState.id;
}
@@ -1256,7 +1316,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
case ACTION_VIEW_EXITED:
if (mCurrentViewId == viewState.id) {
if (sVerbose) Slog.d(TAG, "Exiting view " + id);
- hideFillUiIfOwnedByMe();
+ mUi.hideFillUi(this);
mCurrentViewId = null;
}
break;
@@ -1293,7 +1353,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
filterText = value.getTextValue().toString();
}
- getUiForShowing().showFillUi(filledId, response, filterText, mPackageName, this);
+ getUiForShowing().showFillUi(filledId, response, filterText,
+ mService.getServicePackageName(), mPackageName, this);
}
boolean isDestroyed() {
@@ -1308,11 +1369,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
- private void notifyUnavailableToClient() {
+ private void notifyUnavailableToClient(boolean sessionFinished) {
synchronized (mLock) {
- if (!mHasCallback || mCurrentViewId == null) return;
+ if (mCurrentViewId == null) return;
try {
- mClient.notifyNoFillUi(id, mCurrentViewId);
+ if (mHasCallback) {
+ mClient.notifyNoFillUi(id, mCurrentViewId, sessionFinished);
+ } else if (sessionFinished) {
+ mClient.setSessionFinished(AutofillManager.STATE_FINISHED);
+ }
} catch (RemoteException e) {
Slog.e(TAG, "Error notifying client no fill UI: id=" + mCurrentViewId, e);
}
@@ -1393,10 +1458,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
processResponseLocked(newResponse, 0);
}
+ private void processNullResponseLocked(int flags) {
+ if (sVerbose) Slog.v(TAG, "canceling session " + id + " when server returned null");
+ if ((flags & FLAG_MANUAL_REQUEST) != 0) {
+ getUiForShowing().showError(R.string.autofill_error_cannot_autofill, this);
+ }
+ mService.resetLastResponse();
+ // Nothing to be done, but need to notify client.
+ notifyUnavailableToClient(true);
+ removeSelf();
+ }
+
private void processResponseLocked(@NonNull FillResponse newResponse, int flags) {
// Make sure we are hiding the UI which will be shown
// only if handling the current response requires it.
- hideAllUiIfOwnedByMe();
+ mUi.hideAll(this);
final int requestId = newResponse.getRequestId();
if (sVerbose) {
@@ -1507,7 +1583,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
return viewState;
}
- void autoFill(int requestId, int datasetIndex, Dataset dataset) {
+ void autoFill(int requestId, int datasetIndex, Dataset dataset, boolean generateEvent) {
+ if (sDebug) {
+ Slog.d(TAG, "autoFill(): requestId=" + requestId + "; datasetIdx=" + datasetIndex
+ + "; dataset=" + dataset);
+ }
synchronized (mLock) {
if (mDestroyed) {
Slog.w(TAG, "Call to Session#autoFill() rejected - session: "
@@ -1516,21 +1596,26 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
// Autofill it directly...
if (dataset.getAuthentication() == null) {
- mService.setDatasetSelected(dataset.getId(), id);
+ if (generateEvent) {
+ mService.logDatasetSelected(dataset.getId(), id, mClientState);
+ }
autoFillApp(dataset);
return;
}
// ...or handle authentication.
- mService.setDatasetAuthenticationSelected(dataset.getId(), id);
+ mService.logDatasetAuthenticationSelected(dataset.getId(), id, mClientState);
setViewStatesLocked(null, dataset, ViewState.STATE_WAITING_DATASET_AUTH, false);
- final Intent fillInIntent = createAuthFillInIntent(
- getFillContextByRequestIdLocked(requestId).getStructure(), mClientState);
-
+ final Intent fillInIntent = createAuthFillInIntentLocked(requestId, mClientState);
+ if (fillInIntent == null) {
+ forceRemoveSelfLocked();
+ return;
+ }
final int authenticationId = AutofillManager.makeAuthenticationId(requestId,
datasetIndex);
startAuthentication(authenticationId, dataset.getAuthentication(), fillInIntent);
+
}
}
@@ -1540,9 +1625,18 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
- private Intent createAuthFillInIntent(AssistStructure structure, Bundle extras) {
+ // TODO: this should never be null, but we got at least one occurrence, probably due to a race.
+ @Nullable
+ private Intent createAuthFillInIntentLocked(int requestId, Bundle extras) {
final Intent fillInIntent = new Intent();
- fillInIntent.putExtra(AutofillManager.EXTRA_ASSIST_STRUCTURE, structure);
+
+ final FillContext context = getFillContextByRequestIdLocked(requestId);
+ if (context == null) {
+ Slog.wtf(TAG, "createAuthFillInIntentLocked(): no FillContext. requestId=" + requestId
+ + "; mContexts= " + mContexts);
+ return null;
+ }
+ fillInIntent.putExtra(AutofillManager.EXTRA_ASSIST_STRUCTURE, context.getStructure());
fillInIntent.putExtra(AutofillManager.EXTRA_CLIENT_STATE, extras);
return fillInIntent;
}
@@ -1583,6 +1677,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
pw.print(prefix); pw.print("mViewStates size: "); pw.println(mViewStates.size());
pw.print(prefix); pw.print("mDestroyed: "); pw.println(mDestroyed);
pw.print(prefix); pw.print("mIsSaving: "); pw.println(mIsSaving);
+ pw.print(prefix); pw.print("mPendingSaveUi: "); pw.println(mPendingSaveUi);
for (Map.Entry<AutofillId, ViewState> entry : mViewStates.entrySet()) {
pw.print(prefix); pw.print("State for id "); pw.println(entry.getKey());
entry.getValue().dump(prefix2, pw);
@@ -1609,6 +1704,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
pw.print(prefix); pw.print("mHasCallback: "); pw.println(mHasCallback);
pw.print(prefix); pw.print("mClientState: "); pw.println(
Helper.bundleToString(mClientState));
+ pw.print(prefix); pw.print("mSelectedDatasetIds: "); pw.println(mSelectedDatasetIds);
mRemoteFillService.dump(prefix, pw);
}
@@ -1644,11 +1740,17 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
if (!ids.isEmpty()) {
if (waitingDatasetAuth) {
- hideFillUiIfOwnedByMe();
+ mUi.hideFillUi(this);
}
if (sDebug) Slog.d(TAG, "autoFillApp(): the buck is on the app: " + dataset);
mClient.autofill(id, ids, values);
+ if (dataset.getId() != null) {
+ if (mSelectedDatasetIds == null) {
+ mSelectedDatasetIds = new ArrayList<>();
+ }
+ mSelectedDatasetIds.add(dataset.getId());
+ }
setViewStatesLocked(null, dataset, ViewState.STATE_AUTOFILLED, false);
}
} catch (RemoteException e) {
@@ -1664,38 +1766,73 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
+ /**
+ * Cleans up this session.
+ *
+ * <p>Typically called in 2 scenarios:
+ *
+ * <ul>
+ * <li>When the session naturally finishes (i.e., from {@link #removeSelfLocked()}.
+ * <li>When the service hosting the session is finished (for example, because the user
+ * disabled it).
+ * </ul>
+ */
RemoteFillService destroyLocked() {
if (mDestroyed) {
return null;
}
- hideAllUiIfOwnedByMe();
+ mUi.destroyAll(mPendingSaveUi, this, true);
mUi.clearCallback(this);
mDestroyed = true;
- mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_FINISHED, mPackageName);
+ writeLog(MetricsEvent.AUTOFILL_SESSION_FINISHED);
return mRemoteFillService;
}
- private void hideAllUiIfOwnedByMe() {
- mUi.hideAll(this);
- }
-
- private void hideFillUiIfOwnedByMe() {
- mUi.hideFillUi(this);
+ /**
+ * Cleans up this session and remove it from the service always, even if it does have a pending
+ * Save UI.
+ */
+ void forceRemoveSelfLocked() {
+ if (sVerbose) Slog.v(TAG, "forceRemoveSelfLocked(): " + mPendingSaveUi);
+
+ final boolean isPendingSaveUi = isSaveUiPendingLocked();
+ mPendingSaveUi = null;
+ removeSelfLocked();
+ mUi.destroyAll(mPendingSaveUi, this, false);
+ if (!isPendingSaveUi) {
+ try {
+ mClient.setSessionFinished(AutofillManager.STATE_UNKNOWN);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Error notifying client to finish session", e);
+ }
+ }
}
+ /**
+ * Thread-safe version of {@link #removeSelfLocked()}.
+ */
private void removeSelf() {
synchronized (mLock) {
removeSelfLocked();
}
}
+ /**
+ * Cleans up this session and remove it from the service, but but only if it does not have a
+ * pending Save UI.
+ */
void removeSelfLocked() {
- if (sVerbose) Slog.v(TAG, "removeSelfLocked()");
+ if (sVerbose) Slog.v(TAG, "removeSelfLocked(): " + mPendingSaveUi);
if (mDestroyed) {
Slog.w(TAG, "Call to Session#removeSelfLocked() rejected - session: "
+ id + " destroyed");
return;
}
+ if (isSaveUiPendingLocked()) {
+ Slog.i(TAG, "removeSelfLocked() ignored, waiting for pending save ui");
+ return;
+ }
+
final RemoteFillService remoteFillService = destroyLocked();
mService.removeSessionLocked(id);
if (remoteFillService != null) {
@@ -1703,6 +1840,26 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
+ void onPendingSaveUi(int operation, @NonNull IBinder token) {
+ getUiForShowing().onPendingSaveUi(operation, token);
+ }
+
+ /**
+ * Checks whether this session is hiding the Save UI to handle a custom description link for
+ * a specific {@code token} created by
+ * {@link PendingUi#PendingUi(IBinder, int, IAutoFillManagerClient)}.
+ */
+ boolean isSaveUiPendingForTokenLocked(@NonNull IBinder token) {
+ return isSaveUiPendingLocked() && token.equals(mPendingSaveUi.getToken());
+ }
+
+ /**
+ * Checks whether this session is hiding the Save UI to handle a custom description link.
+ */
+ private boolean isSaveUiPendingLocked() {
+ return mPendingSaveUi != null && mPendingSaveUi.getState() == PendingUi.STATE_PENDING;
+ }
+
private int getLastResponseIndexLocked() {
// The response ids are monotonically increasing so
// we just find the largest id which is the last. We
@@ -1720,4 +1877,16 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
return lastResponseIdx;
}
+
+ private LogMaker newLogMaker(int category) {
+ return newLogMaker(category, mService.getServicePackageName());
+ }
+
+ private LogMaker newLogMaker(int category, String servicePackageName) {
+ return Helper.newLogMaker(category, mPackageName, servicePackageName);
+ }
+
+ private void writeLog(int category) {
+ mMetricsLogger.write(newLogMaker(category));
+ }
}
diff --git a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
index 67ee1858f583..36b95fc02ed8 100644
--- a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
+++ b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
@@ -22,9 +22,12 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.content.IntentSender;
+import android.graphics.drawable.Drawable;
import android.metrics.LogMaker;
import android.os.Bundle;
import android.os.Handler;
+import android.os.IBinder;
+import android.os.RemoteException;
import android.service.autofill.Dataset;
import android.service.autofill.FillResponse;
import android.service.autofill.SaveInfo;
@@ -37,8 +40,9 @@ import android.view.autofill.IAutofillWindowPresenter;
import android.widget.Toast;
import com.android.internal.logging.MetricsLogger;
-import com.android.internal.logging.nano.MetricsProto;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.server.UiThread;
+import com.android.server.autofill.Helper;
import java.io.PrintWriter;
@@ -143,7 +147,6 @@ public final class AutoFillUI {
if (callback != mCallback) {
return;
}
- hideSaveUiUiThread(callback);
if (mFillUi != null) {
mFillUi.setFilterText(filterText);
}
@@ -156,21 +159,22 @@ public final class AutoFillUI {
* @param focusedId the currently focused field
* @param response the current fill response
* @param filterText text of the view to be filled
+ * @param servicePackageName package name of the autofill service filling the activity
* @param packageName package name of the activity that is filled
* @param callback Identifier for the caller
*/
public void showFillUi(@NonNull AutofillId focusedId, @NonNull FillResponse response,
- @Nullable String filterText, @NonNull String packageName,
- @NonNull AutoFillUiCallback callback) {
+ @Nullable String filterText, @Nullable String servicePackageName,
+ @NonNull String packageName, @NonNull AutoFillUiCallback callback) {
if (sDebug) {
final int size = filterText == null ? 0 : filterText.length();
Slog.d(TAG, "showFillUi(): id=" + focusedId + ", filter=" + size + " chars");
}
- final LogMaker log = (new LogMaker(MetricsProto.MetricsEvent.AUTOFILL_FILL_UI))
- .setPackageName(packageName)
- .addTaggedData(MetricsProto.MetricsEvent.FIELD_AUTOFILL_FILTERTEXT_LEN,
+ final LogMaker log =
+ Helper.newLogMaker(MetricsEvent.AUTOFILL_FILL_UI, packageName, servicePackageName)
+ .addTaggedData(MetricsEvent.FIELD_AUTOFILL_FILTERTEXT_LEN,
filterText == null ? 0 : filterText.length())
- .addTaggedData(MetricsProto.MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS,
+ .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS,
response.getDatasets() == null ? 0 : response.getDatasets().size());
mHandler.post(() -> {
@@ -182,7 +186,7 @@ public final class AutoFillUI {
filterText, mOverlayControl, new FillUi.Callback() {
@Override
public void onResponsePicked(FillResponse response) {
- log.setType(MetricsProto.MetricsEvent.TYPE_DETAIL);
+ log.setType(MetricsEvent.TYPE_DETAIL);
hideFillUiUiThread(callback);
if (mCallback != null) {
mCallback.authenticate(response.getRequestId(),
@@ -193,7 +197,7 @@ public final class AutoFillUI {
@Override
public void onDatasetPicked(Dataset dataset) {
- log.setType(MetricsProto.MetricsEvent.TYPE_ACTION);
+ log.setType(MetricsEvent.TYPE_ACTION);
hideFillUiUiThread(callback);
if (mCallback != null) {
final int datasetIndex = response.getDatasets().indexOf(dataset);
@@ -203,14 +207,14 @@ public final class AutoFillUI {
@Override
public void onCanceled() {
- log.setType(MetricsProto.MetricsEvent.TYPE_DISMISS);
+ log.setType(MetricsEvent.TYPE_DISMISS);
hideFillUiUiThread(callback);
}
@Override
public void onDestroy() {
- if (log.getType() == MetricsProto.MetricsEvent.TYPE_UNKNOWN) {
- log.setType(MetricsProto.MetricsEvent.TYPE_CLOSE);
+ if (log.getType() == MetricsEvent.TYPE_UNKNOWN) {
+ log.setType(MetricsEvent.TYPE_CLOSE);
}
mMetricsLogger.write(log);
}
@@ -243,38 +247,41 @@ public final class AutoFillUI {
/**
* Shows the UI asking the user to save for autofill.
*/
- public void showSaveUi(@NonNull CharSequence providerLabel, @NonNull SaveInfo info,
+ public void showSaveUi(@NonNull CharSequence serviceLabel, @NonNull Drawable serviceIcon,
+ @Nullable String servicePackageName, @NonNull SaveInfo info,
@NonNull ValueFinder valueFinder, @NonNull String packageName,
- @NonNull AutoFillUiCallback callback) {
+ @NonNull AutoFillUiCallback callback, @NonNull PendingUi pendingSaveUi) {
if (sVerbose) Slog.v(TAG, "showSaveUi() for " + packageName + ": " + info);
int numIds = 0;
numIds += info.getRequiredIds() == null ? 0 : info.getRequiredIds().length;
numIds += info.getOptionalIds() == null ? 0 : info.getOptionalIds().length;
- LogMaker log = (new LogMaker(MetricsProto.MetricsEvent.AUTOFILL_SAVE_UI))
- .setPackageName(packageName).addTaggedData(
- MetricsProto.MetricsEvent.FIELD_AUTOFILL_NUM_IDS, numIds);
+ final LogMaker log =
+ Helper.newLogMaker(MetricsEvent.AUTOFILL_SAVE_UI, packageName, servicePackageName)
+ .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_IDS, numIds);
mHandler.post(() -> {
if (callback != mCallback) {
return;
}
hideAllUiThread(callback);
- mSaveUi = new SaveUi(mContext, providerLabel, info, valueFinder, mOverlayControl,
+ mSaveUi = new SaveUi(mContext, pendingSaveUi, serviceLabel, serviceIcon,
+ servicePackageName, packageName, info, valueFinder, mOverlayControl,
new SaveUi.OnSaveListener() {
@Override
public void onSave() {
- log.setType(MetricsProto.MetricsEvent.TYPE_ACTION);
- hideSaveUiUiThread(callback);
+ log.setType(MetricsEvent.TYPE_ACTION);
+ hideSaveUiUiThread(mCallback);
if (mCallback != null) {
mCallback.save();
}
+ destroySaveUiUiThread(pendingSaveUi, true);
}
@Override
public void onCancel(IntentSender listener) {
- log.setType(MetricsProto.MetricsEvent.TYPE_DISMISS);
- hideSaveUiUiThread(callback);
+ log.setType(MetricsEvent.TYPE_DISMISS);
+ hideSaveUiUiThread(mCallback);
if (listener != null) {
try {
listener.sendIntent(mContext, 0, null, null, null);
@@ -286,12 +293,13 @@ public final class AutoFillUI {
if (mCallback != null) {
mCallback.cancelSave();
}
+ destroySaveUiUiThread(pendingSaveUi, true);
}
@Override
public void onDestroy() {
- if (log.getType() == MetricsProto.MetricsEvent.TYPE_UNKNOWN) {
- log.setType(MetricsProto.MetricsEvent.TYPE_CLOSE);
+ if (log.getType() == MetricsEvent.TYPE_UNKNOWN) {
+ log.setType(MetricsEvent.TYPE_CLOSE);
if (mCallback != null) {
mCallback.cancelSave();
@@ -304,12 +312,33 @@ public final class AutoFillUI {
}
/**
+ * Executes an operation in the pending save UI, if any.
+ */
+ public void onPendingSaveUi(int operation, @NonNull IBinder token) {
+ mHandler.post(() -> {
+ if (mSaveUi != null) {
+ mSaveUi.onPendingUi(operation, token);
+ } else {
+ Slog.w(TAG, "onPendingSaveUi(" + operation + "): no save ui");
+ }
+ });
+ }
+
+ /**
* Hides all UI affordances.
*/
public void hideAll(@Nullable AutoFillUiCallback callback) {
mHandler.post(() -> hideAllUiThread(callback));
}
+ /**
+ * Destroy all UI affordances.
+ */
+ public void destroyAll(@Nullable PendingUi pendingSaveUi,
+ @Nullable AutoFillUiCallback callback, boolean notifyClient) {
+ mHandler.post(() -> destroyAllUiThread(pendingSaveUi, callback, notifyClient));
+ }
+
public void dump(PrintWriter pw) {
pw.println("Autofill UI");
final String prefix = " ";
@@ -337,20 +366,58 @@ public final class AutoFillUI {
}
@android.annotation.UiThread
- private void hideSaveUiUiThread(@Nullable AutoFillUiCallback callback) {
+ @Nullable
+ private PendingUi hideSaveUiUiThread(@Nullable AutoFillUiCallback callback) {
if (sVerbose) {
Slog.v(TAG, "hideSaveUiUiThread(): mSaveUi=" + mSaveUi + ", callback=" + callback
+ ", mCallback=" + mCallback);
}
if (mSaveUi != null && (callback == null || callback == mCallback)) {
- mSaveUi.destroy();
- mSaveUi = null;
+ return mSaveUi.hide();
+ }
+ return null;
+ }
+
+ @android.annotation.UiThread
+ private void destroySaveUiUiThread(@Nullable PendingUi pendingSaveUi, boolean notifyClient) {
+ if (mSaveUi == null) {
+ // Calling destroySaveUiUiThread() twice is normal - it usually happens when the
+ // first call is made after the SaveUI is hidden and the second when the session is
+ // finished.
+ if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): already destroyed");
+ return;
+ }
+
+ if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): " + pendingSaveUi);
+ mSaveUi.destroy();
+ mSaveUi = null;
+ if (pendingSaveUi != null && notifyClient) {
+ try {
+ if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): notifying client");
+ pendingSaveUi.client.setSaveUiState(pendingSaveUi.id, false);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Error notifying client to set save UI state to hidden: " + e);
+ }
}
}
@android.annotation.UiThread
+ private void destroyAllUiThread(@Nullable PendingUi pendingSaveUi,
+ @Nullable AutoFillUiCallback callback, boolean notifyClient) {
+ hideFillUiUiThread(callback);
+ destroySaveUiUiThread(pendingSaveUi, notifyClient);
+ }
+
+ @android.annotation.UiThread
private void hideAllUiThread(@Nullable AutoFillUiCallback callback) {
hideFillUiUiThread(callback);
- hideSaveUiUiThread(callback);
+ final PendingUi pendingSaveUi = hideSaveUiUiThread(callback);
+ if (pendingSaveUi != null && pendingSaveUi.getState() == PendingUi.STATE_FINISHED) {
+ if (sDebug) {
+ Slog.d(TAG, "hideAllUiThread(): "
+ + "destroying Save UI because pending restoration is finished");
+ }
+ destroySaveUiUiThread(pendingSaveUi, true);
+ }
}
}
diff --git a/services/autofill/java/com/android/server/autofill/ui/FillUi.java b/services/autofill/java/com/android/server/autofill/ui/FillUi.java
index 24f3b339b761..371e74d6f04e 100644
--- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java
@@ -229,6 +229,13 @@ final class FillUi {
public void setFilterText(@Nullable String filterText) {
throwIfDestroyed();
if (mAdapter == null) {
+ // ViewState doesn't not support filtering - typically when it's for an authenticated
+ // FillResponse.
+ if (TextUtils.isEmpty(filterText)) {
+ mCallback.requestShowFillUi(mContentWidth, mContentHeight, mWindowPresenter);
+ } else {
+ mCallback.requestHideFillUi();
+ }
return;
}
@@ -510,8 +517,9 @@ final class FillUi {
final ViewItem item = mAllItems.get(i);
final String value = item.getValue();
// No value, i.e. null, matches any filter
- if (value == null
- || value.toLowerCase().startsWith(constraintLowerCase)) {
+ if ((value == null && item.mDataset.getAuthentication() == null)
+ || (value != null
+ && value.toLowerCase().startsWith(constraintLowerCase))) {
filteredItems.add(item);
}
}
@@ -525,9 +533,11 @@ final class FillUi {
final boolean resultCountChanged;
final int oldItemCount = mFilteredItems.size();
mFilteredItems.clear();
- @SuppressWarnings("unchecked")
- final List<ViewItem> items = (List<ViewItem>) results.values;
- mFilteredItems.addAll(items);
+ if (results.count > 0) {
+ @SuppressWarnings("unchecked")
+ final List<ViewItem> items = (List<ViewItem>) results.values;
+ mFilteredItems.addAll(items);
+ }
resultCountChanged = (oldItemCount != mFilteredItems.size());
if (resultCountChanged) {
announceSearchResultIfNeeded();
diff --git a/services/autofill/java/com/android/server/autofill/ui/PendingUi.java b/services/autofill/java/com/android/server/autofill/ui/PendingUi.java
new file mode 100644
index 000000000000..0851d3bf12de
--- /dev/null
+++ b/services/autofill/java/com/android/server/autofill/ui/PendingUi.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2017 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.autofill.ui;
+
+import android.annotation.NonNull;
+import android.os.IBinder;
+import android.util.DebugUtils;
+import android.view.autofill.IAutoFillManagerClient;
+
+/**
+ * Helper class used to handle a pending Autofill affordance such as the Save UI.
+ *
+ * <p>This class is not thread safe.
+ */
+// NOTE: this class could be an interface implemented by Session, but that would make it harder
+// to move the Autofill UI logic to a different process.
+public final class PendingUi {
+
+ public static final int STATE_CREATED = 1;
+ public static final int STATE_PENDING = 2;
+ public static final int STATE_FINISHED = 4;
+
+ private final IBinder mToken;
+ private int mState;
+ public final int id;
+ public final IAutoFillManagerClient client;
+
+ /**
+ * Default constructor.
+ *
+ * @param token token used to identify this pending UI.
+ */
+ public PendingUi(@NonNull IBinder token, int id, @NonNull IAutoFillManagerClient client) {
+ mToken = token;
+ mState = STATE_CREATED;
+ this.id = id;
+ this.client = client;
+ }
+
+ /**
+ * Gets the token used to identify this pending UI.
+ */
+ @NonNull
+ public IBinder getToken() {
+ return mToken;
+ }
+
+ /**
+ * Sets the current lifecycle state.
+ */
+ public void setState(int state) {
+ mState = state;
+ }
+
+ /**
+ * Gets the current lifecycle state.
+ */
+ public int getState() {
+ return mState;
+ }
+
+ /**
+ * Determines whether the given token matches the token used to identify this pending UI.
+ */
+ public boolean matches(IBinder token) {
+ return mToken.equals(token);
+ }
+
+ @Override
+ public String toString() {
+ return "PendingUi: [token=" + mToken + ", id=" + id + ", state="
+ + DebugUtils.flagsToString(PendingUi.class, "STATE_", mState) + "]";
+ }
+}
diff --git a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
index 3727c6eb0e6c..cd9bdb7205b1 100644
--- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
@@ -20,10 +20,18 @@ import static com.android.server.autofill.Helper.sDebug;
import static com.android.server.autofill.Helper.sVerbose;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.Dialog;
+import android.app.PendingIntent;
import android.content.Context;
+import android.content.Intent;
import android.content.IntentSender;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.metrics.LogMaker;
import android.os.Handler;
+import android.os.IBinder;
+import android.os.RemoteException;
import android.service.autofill.CustomDescription;
import android.service.autofill.SaveInfo;
import android.service.autofill.ValueFinder;
@@ -31,17 +39,21 @@ import android.text.Html;
import android.util.ArraySet;
import android.util.Slog;
import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
+import android.view.autofill.AutofillManager;
+import android.widget.ImageView;
import android.widget.RemoteViews;
import android.widget.ScrollView;
import android.widget.TextView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
import com.android.internal.R;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.server.UiThread;
import java.io.PrintWriter;
@@ -100,6 +112,7 @@ final class SaveUi {
}
private final Handler mHandler = UiThread.getHandler();
+ private final MetricsLogger mMetricsLogger = new MetricsLogger();
private final @NonNull Dialog mDialog;
@@ -109,14 +122,22 @@ final class SaveUi {
private final CharSequence mTitle;
private final CharSequence mSubTitle;
+ private final PendingUi mPendingUi;
+ private final String mServicePackageName;
+ private final String mPackageName;
private boolean mDestroyed;
- SaveUi(@NonNull Context context, @NonNull CharSequence providerLabel, @NonNull SaveInfo info,
- @NonNull ValueFinder valueFinder, @NonNull OverlayControl overlayControl,
- @NonNull OnSaveListener listener) {
+ SaveUi(@NonNull Context context, @NonNull PendingUi pendingUi,
+ @NonNull CharSequence serviceLabel, @NonNull Drawable serviceIcon,
+ @Nullable String servicePackageName, @NonNull String packageName,
+ @NonNull SaveInfo info, @NonNull ValueFinder valueFinder,
+ @NonNull OverlayControl overlayControl, @NonNull OnSaveListener listener) {
+ mPendingUi= pendingUi;
mListener = new OneTimeListener(listener);
mOverlayControl = overlayControl;
+ mServicePackageName = servicePackageName;
+ mPackageName = packageName;
final LayoutInflater inflater = LayoutInflater.from(context);
final View view = inflater.inflate(R.layout.autofill_save, null);
@@ -145,34 +166,73 @@ final class SaveUi {
switch (types.size()) {
case 1:
mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_type,
- types.valueAt(0), providerLabel), 0);
+ types.valueAt(0), serviceLabel), 0);
break;
case 2:
mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_2types,
- types.valueAt(0), types.valueAt(1), providerLabel), 0);
+ types.valueAt(0), types.valueAt(1), serviceLabel), 0);
break;
case 3:
mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_3types,
- types.valueAt(0), types.valueAt(1), types.valueAt(2), providerLabel), 0);
+ types.valueAt(0), types.valueAt(1), types.valueAt(2), serviceLabel), 0);
break;
default:
// Use generic if more than 3 or invalid type (size 0).
mTitle = Html.fromHtml(
- context.getString(R.string.autofill_save_title, providerLabel), 0);
+ context.getString(R.string.autofill_save_title, serviceLabel), 0);
}
-
titleView.setText(mTitle);
+ setServiceIcon(context, view, serviceIcon);
+
ScrollView subtitleContainer = null;
final CustomDescription customDescription = info.getCustomDescription();
if (customDescription != null) {
+ writeLog(MetricsEvent.AUTOFILL_SAVE_CUSTOM_DESCRIPTION, type);
+
mSubTitle = null;
if (sDebug) Slog.d(TAG, "Using custom description");
final RemoteViews presentation = customDescription.getPresentation(valueFinder);
if (presentation != null) {
+ final RemoteViews.OnClickHandler handler = new RemoteViews.OnClickHandler() {
+ @Override
+ public boolean onClickHandler(View view, PendingIntent pendingIntent,
+ Intent intent) {
+ final LogMaker log =
+ newLogMaker(MetricsEvent.AUTOFILL_SAVE_LINK_TAPPED, type);
+ // We need to hide the Save UI before launching the pending intent, and
+ // restore back it once the activity is finished, and that's achieved by
+ // adding a custom extra in the activity intent.
+ final boolean isValid = isValidLink(pendingIntent, intent);
+ if (!isValid) {
+ log.setType(MetricsEvent.TYPE_UNKNOWN);
+ mMetricsLogger.write(log);
+ return false;
+ }
+ if (sVerbose) Slog.v(TAG, "Intercepting custom description intent");
+ final IBinder token = mPendingUi.getToken();
+ intent.putExtra(AutofillManager.EXTRA_RESTORE_SESSION_TOKEN, token);
+ try {
+ pendingUi.client.startIntentSender(pendingIntent.getIntentSender(),
+ intent);
+ mPendingUi.setState(PendingUi.STATE_PENDING);
+ if (sDebug) Slog.d(TAG, "hiding UI until restored with token " + token);
+ hide();
+ log.setType(MetricsEvent.TYPE_OPEN);
+ mMetricsLogger.write(log);
+ return true;
+ } catch (RemoteException e) {
+ Slog.w(TAG, "error triggering pending intent: " + intent);
+ log.setType(MetricsEvent.TYPE_FAILURE);
+ mMetricsLogger.write(log);
+ return false;
+ }
+ }
+ };
+
try {
- final View customSubtitleView = presentation.apply(context, null);
+ final View customSubtitleView = presentation.apply(context, null, handler);
subtitleContainer = view.findViewById(R.id.autofill_save_custom_subtitle);
subtitleContainer.addView(customSubtitleView);
subtitleContainer.setVisibility(View.VISIBLE);
@@ -185,6 +245,7 @@ final class SaveUi {
} else {
mSubTitle = info.getDescription();
if (mSubTitle != null) {
+ writeLog(MetricsEvent.AUTOFILL_SAVE_CUSTOM_SUBTITLE, type);
subtitleContainer = view.findViewById(R.id.autofill_save_custom_subtitle);
final TextView subtitleView = new TextView(context);
subtitleView.setText(mSubTitle);
@@ -202,9 +263,7 @@ final class SaveUi {
} else {
noButton.setText(R.string.autofill_save_no);
}
- View.OnClickListener cancelListener =
- (v) -> mListener.onCancel(info.getNegativeActionListener());
- noButton.setOnClickListener(cancelListener);
+ noButton.setOnClickListener((v) -> mListener.onCancel(info.getNegativeActionListener()));
final View yesButton = view.findViewById(R.id.autofill_save_yes);
yesButton.setOnClickListener((v) -> mListener.onSave());
@@ -227,9 +286,114 @@ final class SaveUi {
params.accessibilityTitle = context.getString(R.string.autofill_save_accessibility_title);
params.windowAnimations = R.style.AutofillSaveAnimation;
+ show();
+ }
+
+ private void setServiceIcon(Context context, View view, Drawable serviceIcon) {
+ final ImageView iconView = view.findViewById(R.id.autofill_save_icon);
+ final Resources res = context.getResources();
+
+ final int maxWidth = res.getDimensionPixelSize(R.dimen.autofill_save_icon_max_size);
+ final int maxHeight = maxWidth;
+ final int actualWidth = serviceIcon.getMinimumWidth();
+ final int actualHeight = serviceIcon.getMinimumHeight();
+
+ if (actualWidth <= maxWidth && actualHeight <= maxHeight) {
+ if (sDebug) {
+ Slog.d(TAG, "Adding service icon "
+ + "(" + actualWidth + "x" + actualHeight + ") as it's less than maximum "
+ + "(" + maxWidth + "x" + maxHeight + ").");
+ }
+ iconView.setImageDrawable(serviceIcon);
+ } else {
+ Slog.w(TAG, "Not adding service icon of size "
+ + "(" + actualWidth + "x" + actualHeight + ") because maximum is "
+ + "(" + maxWidth + "x" + maxHeight + ").");
+ ((ViewGroup)iconView.getParent()).removeView(iconView);
+ }
+ }
+
+ private static boolean isValidLink(PendingIntent pendingIntent, Intent intent) {
+ if (pendingIntent == null) {
+ Slog.w(TAG, "isValidLink(): custom description without pending intent");
+ return false;
+ }
+ if (!pendingIntent.isActivity()) {
+ Slog.w(TAG, "isValidLink(): pending intent not for activity");
+ return false;
+ }
+ if (intent == null) {
+ Slog.w(TAG, "isValidLink(): no intent");
+ return false;
+ }
+ return true;
+ }
+
+ private LogMaker newLogMaker(int category, int saveType) {
+ return newLogMaker(category)
+ .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SAVE_TYPE, saveType);
+ }
+
+ private LogMaker newLogMaker(int category) {
+ return new LogMaker(category)
+ .setPackageName(mPackageName)
+ .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, mServicePackageName);
+ }
+
+ private void writeLog(int category, int saveType) {
+ mMetricsLogger.write(newLogMaker(category, saveType));
+ }
+
+ /**
+ * Update the pending UI, if any.
+ *
+ * @param operation how to update it.
+ * @param token token associated with the pending UI - if it doesn't match the pending token,
+ * the operation will be ignored.
+ */
+ void onPendingUi(int operation, @NonNull IBinder token) {
+ if (!mPendingUi.matches(token)) {
+ Slog.w(TAG, "restore(" + operation + "): got token " + token + " instead of "
+ + mPendingUi.getToken());
+ return;
+ }
+ final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_PENDING_SAVE_UI_OPERATION);
+ try {
+ switch (operation) {
+ case AutofillManager.PENDING_UI_OPERATION_RESTORE:
+ if (sDebug) Slog.d(TAG, "Restoring save dialog for " + token);
+ log.setType(MetricsEvent.TYPE_OPEN);
+ show();
+ break;
+ case AutofillManager.PENDING_UI_OPERATION_CANCEL:
+ log.setType(MetricsEvent.TYPE_DISMISS);
+ if (sDebug) Slog.d(TAG, "Cancelling pending save dialog for " + token);
+ hide();
+ break;
+ default:
+ log.setType(MetricsEvent.TYPE_FAILURE);
+ Slog.w(TAG, "restore(): invalid operation " + operation);
+ }
+ } finally {
+ mMetricsLogger.write(log);
+ }
+ mPendingUi.setState(PendingUi.STATE_FINISHED);
+ }
+
+ private void show() {
Slog.i(TAG, "Showing save dialog: " + mTitle);
mDialog.show();
mOverlayControl.hideOverlays();
+ }
+
+ PendingUi hide() {
+ if (sVerbose) Slog.v(TAG, "Hiding save dialog.");
+ try {
+ mDialog.hide();
+ } finally {
+ mOverlayControl.showOverlays();
+ }
+ return mPendingUi;
}
void destroy() {
@@ -238,7 +402,6 @@ final class SaveUi {
throwIfDestroyed();
mListener.onDestroy();
mHandler.removeCallbacksAndMessages(mListener);
- if (sVerbose) Slog.v(TAG, "destroy(): dismissing dialog");
mDialog.dismiss();
mDestroyed = true;
} finally {
@@ -260,6 +423,9 @@ final class SaveUi {
void dump(PrintWriter pw, String prefix) {
pw.print(prefix); pw.print("title: "); pw.println(mTitle);
pw.print(prefix); pw.print("subtitle: "); pw.println(mSubTitle);
+ pw.print(prefix); pw.print("pendingUi: "); pw.println(mPendingUi);
+ pw.print(prefix); pw.print("service: "); pw.println(mServicePackageName);
+ pw.print(prefix); pw.print("app: "); pw.println(mPackageName);
final View view = mDialog.getWindow().getDecorView();
final int[] loc = view.getLocationOnScreen();
diff --git a/services/backup/java/com/android/server/backup/BackupManagerConstants.java b/services/backup/java/com/android/server/backup/BackupManagerConstants.java
new file mode 100644
index 000000000000..cd601826cb5d
--- /dev/null
+++ b/services/backup/java/com/android/server/backup/BackupManagerConstants.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2017 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.backup;
+
+import android.app.AlarmManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.res.Resources;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.provider.Settings;
+import android.util.KeyValueListParser;
+import android.util.Slog;
+
+/**
+ * Class to access backup manager constants.
+ *
+ * The backup manager constants are encoded as a key value list separated by commas
+ * and stored as a Settings.Secure.
+ */
+class BackupManagerConstants extends ContentObserver {
+ private static final String TAG = "BackupManagerConstants";
+
+ // Key names stored in the secure settings value.
+ private static final String KEY_VALUE_BACKUP_INTERVAL_MILLISECONDS =
+ "key_value_backup_interval_milliseconds";
+ private static final String KEY_VALUE_BACKUP_FUZZ_MILLISECONDS =
+ "key_value_backup_fuzz_milliseconds";
+ private static final String KEY_VALUE_BACKUP_REQUIRE_CHARGING =
+ "key_value_backup_require_charging";
+ private static final String KEY_VALUE_BACKUP_REQUIRED_NETWORK_TYPE =
+ "key_value_backup_required_network_type";
+ private static final String FULL_BACKUP_INTERVAL_MILLISECONDS =
+ "full_backup_interval_milliseconds";
+ private static final String FULL_BACKUP_REQUIRE_CHARGING =
+ "full_backup_require_charging";
+ private static final String FULL_BACKUP_REQUIRED_NETWORK_TYPE =
+ "full_backup_required_network_type";
+
+ // Hard coded default values.
+ private static final long DEFAULT_KEY_VALUE_BACKUP_INTERVAL_MILLISECONDS =
+ 4 * AlarmManager.INTERVAL_HOUR;
+ private static final long DEFAULT_KEY_VALUE_BACKUP_FUZZ_MILLISECONDS =
+ 10 * 60 * 1000;
+ private static final boolean DEFAULT_KEY_VALUE_BACKUP_REQUIRE_CHARGING = true;
+ private static final int DEFAULT_KEY_VALUE_BACKUP_REQUIRED_NETWORK_TYPE = 1;
+ private static final long DEFAULT_FULL_BACKUP_INTERVAL_MILLISECONDS =
+ 24 * AlarmManager.INTERVAL_HOUR;
+ private static final boolean DEFAULT_FULL_BACKUP_REQUIRE_CHARGING = true;
+ private static final int DEFAULT_FULL_BACKUP_REQUIRED_NETWORK_TYPE = 2;
+
+ // Backup manager constants.
+ private long mKeyValueBackupIntervalMilliseconds;
+ private long mKeyValueBackupFuzzMilliseconds;
+ private boolean mKeyValueBackupRequireCharging;
+ private int mKeyValueBackupRequiredNetworkType;
+ private long mFullBackupIntervalMilliseconds;
+ private boolean mFullBackupRequireCharging;
+ private int mFullBackupRequiredNetworkType;
+
+ private ContentResolver mResolver;
+ private final KeyValueListParser mParser = new KeyValueListParser(',');
+
+ public BackupManagerConstants(Handler handler, ContentResolver resolver) {
+ super(handler);
+ mResolver = resolver;
+ updateSettings();
+ }
+
+ public void start() {
+ mResolver.registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.BACKUP_MANAGER_CONSTANTS), false, this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ updateSettings();
+ }
+
+ private synchronized void updateSettings() {
+ try {
+ mParser.setString(Settings.Secure.getString(mResolver,
+ Settings.Secure.BACKUP_MANAGER_CONSTANTS));
+ } catch (IllegalArgumentException e) {
+ // Failed to parse the settings string. Use defaults.
+ Slog.e(TAG, "Bad backup manager constants: " + e.getMessage());
+ }
+
+ mKeyValueBackupIntervalMilliseconds = mParser.getLong(
+ KEY_VALUE_BACKUP_INTERVAL_MILLISECONDS,
+ DEFAULT_KEY_VALUE_BACKUP_INTERVAL_MILLISECONDS);
+ mKeyValueBackupFuzzMilliseconds = mParser.getLong(KEY_VALUE_BACKUP_FUZZ_MILLISECONDS,
+ DEFAULT_KEY_VALUE_BACKUP_FUZZ_MILLISECONDS);
+ mKeyValueBackupRequireCharging = mParser.getBoolean(KEY_VALUE_BACKUP_REQUIRE_CHARGING,
+ DEFAULT_KEY_VALUE_BACKUP_REQUIRE_CHARGING);
+ mKeyValueBackupRequiredNetworkType = mParser.getInt(KEY_VALUE_BACKUP_REQUIRED_NETWORK_TYPE,
+ DEFAULT_KEY_VALUE_BACKUP_REQUIRED_NETWORK_TYPE);
+ mFullBackupIntervalMilliseconds = mParser.getLong(FULL_BACKUP_INTERVAL_MILLISECONDS,
+ DEFAULT_FULL_BACKUP_INTERVAL_MILLISECONDS);
+ mFullBackupRequireCharging = mParser.getBoolean(FULL_BACKUP_REQUIRE_CHARGING,
+ DEFAULT_FULL_BACKUP_REQUIRE_CHARGING);
+ mFullBackupRequiredNetworkType = mParser.getInt(FULL_BACKUP_REQUIRED_NETWORK_TYPE,
+ DEFAULT_FULL_BACKUP_REQUIRED_NETWORK_TYPE);
+ }
+
+ // The following are access methods for the individual parameters.
+ // To be sure to retrieve values from the same set of settings,
+ // group the calls of these methods in a block syncrhonized on
+ // a reference of this object.
+ public synchronized long getKeyValueBackupIntervalMilliseconds() {
+ if (BackupManagerService.DEBUG_SCHEDULING) {
+ Slog.v(TAG, "getKeyValueBackupIntervalMilliseconds(...) returns "
+ + mKeyValueBackupIntervalMilliseconds);
+ }
+ return mKeyValueBackupIntervalMilliseconds;
+ }
+
+ public synchronized long getKeyValueBackupFuzzMilliseconds() {
+ if (BackupManagerService.DEBUG_SCHEDULING) {
+ Slog.v(TAG, "getKeyValueBackupFuzzMilliseconds(...) returns "
+ + mKeyValueBackupFuzzMilliseconds);
+ }
+ return mKeyValueBackupFuzzMilliseconds;
+ }
+
+ public synchronized boolean getKeyValueBackupRequireCharging() {
+ if (BackupManagerService.DEBUG_SCHEDULING) {
+ Slog.v(TAG, "getKeyValueBackupRequireCharging(...) returns "
+ + mKeyValueBackupRequireCharging);
+ }
+ return mKeyValueBackupRequireCharging;
+ }
+
+ public synchronized int getKeyValueBackupRequiredNetworkType() {
+ if (BackupManagerService.DEBUG_SCHEDULING) {
+ Slog.v(TAG, "getKeyValueBackupRequiredNetworkType(...) returns "
+ + mKeyValueBackupRequiredNetworkType);
+ }
+ return mKeyValueBackupRequiredNetworkType;
+ }
+
+ public synchronized long getFullBackupIntervalMilliseconds() {
+ if (BackupManagerService.DEBUG_SCHEDULING) {
+ Slog.v(TAG, "getFullBackupIntervalMilliseconds(...) returns "
+ + mFullBackupIntervalMilliseconds);
+ }
+ return mFullBackupIntervalMilliseconds;
+ }
+
+ public synchronized boolean getFullBackupRequireCharging() {
+ if (BackupManagerService.DEBUG_SCHEDULING) {
+ Slog.v(TAG, "getFullBackupRequireCharging(...) returns " + mFullBackupRequireCharging);
+ }
+ return mFullBackupRequireCharging;
+
+ }
+
+ public synchronized int getFullBackupRequiredNetworkType() {
+ if (BackupManagerService.DEBUG_SCHEDULING) {
+ Slog.v(TAG, "getFullBackupRequiredNetworkType(...) returns "
+ + mFullBackupRequiredNetworkType);
+ }
+ return mFullBackupRequiredNetworkType;
+ }
+}
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 29d562b17deb..f525797870dc 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -293,14 +293,12 @@ public class BackupManagerService implements BackupManagerServiceInterface {
// order to give them time to enter the backup password.
static final long TIMEOUT_FULL_CONFIRMATION = 60 * 1000;
- // How long between attempts to perform a full-data backup of any given app
- static final long MIN_FULL_BACKUP_INTERVAL = 1000 * 60 * 60 * 24; // one day
-
// If an app is busy when we want to do a full-data backup, how long to defer the retry.
// This is fuzzed, so there are two parameters; backoff_min + Rand[0, backoff_fuzz)
static final long BUSY_BACKOFF_MIN_MILLIS = 1000 * 60 * 60; // one hour
static final int BUSY_BACKOFF_FUZZ = 1000 * 60 * 60 * 2; // two hours
+ BackupManagerConstants mConstants;
Context mContext;
private PackageManager mPackageManager;
IPackageManager mPackageManagerBinder;
@@ -457,7 +455,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
if (mProvisioned && !wasProvisioned && mEnabled) {
// we're now good to go, so start the backup alarms
if (MORE_DEBUG) Slog.d(TAG, "Now provisioned, so starting backups");
- KeyValueBackupJob.schedule(mContext);
+ KeyValueBackupJob.schedule(mContext, mConstants);
scheduleNextFullBackupJob(0);
}
}
@@ -1315,7 +1313,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
mRunBackupIntent = PendingIntent.getBroadcast(context, MSG_RUN_BACKUP, backupIntent, 0);
Intent initIntent = new Intent(RUN_INITIALIZE_ACTION);
- backupIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
+ initIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
mRunInitIntent = PendingIntent.getBroadcast(context, 0, initIntent, 0);
// Set up the backup-request journaling
@@ -1323,6 +1321,8 @@ public class BackupManagerService implements BackupManagerServiceInterface {
mJournalDir.mkdirs(); // creates mBaseStateDir along the way
mJournal = null; // will be created on first use
+ mConstants = new BackupManagerConstants(mBackupHandler, mContext.getContentResolver());
+
// Set up the various sorts of package tracking we do
mFullBackupScheduleFile = new File(mBaseStateDir, "fb-schedule");
initPackageTracking();
@@ -2478,8 +2478,8 @@ public class BackupManagerService implements BackupManagerServiceInterface {
}
// We don't want the backup jobs to kick in any time soon.
// Reschedules them to run in the distant future.
- KeyValueBackupJob.schedule(mContext, BUSY_BACKOFF_MIN_MILLIS);
- FullBackupJob.schedule(mContext, 2 * BUSY_BACKOFF_MIN_MILLIS);
+ KeyValueBackupJob.schedule(mContext, BUSY_BACKOFF_MIN_MILLIS, mConstants);
+ FullBackupJob.schedule(mContext, 2 * BUSY_BACKOFF_MIN_MILLIS, mConstants);
} finally {
Binder.restoreCallingIdentity(oldToken);
}
@@ -3558,7 +3558,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
Slog.w(TAG, "Unable to contact transport for recommended backoff: " + e.getMessage());
delay = 0; // use the scheduler's default
}
- KeyValueBackupJob.schedule(mContext, delay);
+ KeyValueBackupJob.schedule(mContext, delay, mConstants);
for (BackupRequest request : mOriginalQueue) {
dataChangedImpl(request.packageName);
@@ -4535,7 +4535,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
}
mOutputFile.close();
} catch (IOException e) {
- /* nothing we can do about this */
+ Slog.e(TAG, "IO error closing adb backup file: " + e.getMessage());
}
synchronized (mLatch) {
mLatch.set(true);
@@ -5370,12 +5370,12 @@ public class BackupManagerService implements BackupManagerServiceInterface {
// due.
final long upcomingLastBackup = mFullBackupQueue.get(0).lastBackup;
final long timeSinceLast = System.currentTimeMillis() - upcomingLastBackup;
- final long appLatency = (timeSinceLast < MIN_FULL_BACKUP_INTERVAL)
- ? (MIN_FULL_BACKUP_INTERVAL - timeSinceLast) : 0;
+ final long interval = mConstants.getFullBackupIntervalMilliseconds();
+ final long appLatency = (timeSinceLast < interval) ? (interval - timeSinceLast) : 0;
final long latency = Math.max(transportMinLatency, appLatency);
Runnable r = new Runnable() {
@Override public void run() {
- FullBackupJob.schedule(mContext, latency);
+ FullBackupJob.schedule(mContext, latency, mConstants);
}
};
mBackupHandler.postDelayed(r, 2500);
@@ -5470,9 +5470,15 @@ public class BackupManagerService implements BackupManagerServiceInterface {
*/
@Override
public boolean beginFullBackup(FullBackupJob scheduledJob) {
- long now = System.currentTimeMillis();
+ final long now = System.currentTimeMillis();
FullBackupEntry entry = null;
- long latency = MIN_FULL_BACKUP_INTERVAL;
+ final long fullBackupInterval;
+ final long keyValueBackupInterval;
+ synchronized (mConstants) {
+ fullBackupInterval = mConstants.getFullBackupIntervalMilliseconds();
+ keyValueBackupInterval = mConstants.getKeyValueBackupIntervalMilliseconds();
+ }
+ long latency = fullBackupInterval;
if (!mEnabled || !mProvisioned) {
// Backups are globally disabled, so don't proceed. We also don't reschedule
@@ -5491,7 +5497,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
mPowerManager.getPowerSaveState(ServiceType.FULL_BACKUP);
if (result.batterySaverEnabled) {
if (DEBUG) Slog.i(TAG, "Deferring scheduled full backups in battery saver mode");
- FullBackupJob.schedule(mContext, KeyValueBackupJob.BATCH_INTERVAL);
+ FullBackupJob.schedule(mContext, keyValueBackupInterval, mConstants);
return false;
}
@@ -5534,20 +5540,20 @@ public class BackupManagerService implements BackupManagerServiceInterface {
// Typically this means we haven't run a key/value backup yet. Back off
// full-backup operations by the key/value job's run interval so that
// next time we run, we are likely to be able to make progress.
- latency = KeyValueBackupJob.BATCH_INTERVAL;
+ latency = keyValueBackupInterval;
}
if (runBackup) {
entry = mFullBackupQueue.get(0);
long timeSinceRun = now - entry.lastBackup;
- runBackup = (timeSinceRun >= MIN_FULL_BACKUP_INTERVAL);
+ runBackup = (timeSinceRun >= fullBackupInterval);
if (!runBackup) {
// It's too early to back up the next thing in the queue, so bow out
if (MORE_DEBUG) {
Slog.i(TAG, "Device ready but too early to back up next app");
}
// Wait until the next app in the queue falls due for a full data backup
- latency = MIN_FULL_BACKUP_INTERVAL - timeSinceRun;
+ latency = fullBackupInterval - timeSinceRun;
break; // we know we aren't doing work yet, so bail.
}
@@ -5583,8 +5589,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
// This relocates the app's entry from the head of the queue to
// its order-appropriate position further down, so upon looping
// a new candidate will be considered at the head.
- enqueueFullBackup(entry.packageName,
- nextEligible - MIN_FULL_BACKUP_INTERVAL);
+ enqueueFullBackup(entry.packageName, nextEligible - fullBackupInterval);
}
} catch (NameNotFoundException nnf) {
// So, we think we want to back this up, but it turns out the package
@@ -5605,7 +5610,7 @@ public class BackupManagerService implements BackupManagerServiceInterface {
final long deferTime = latency; // pin for the closure
mBackupHandler.post(new Runnable() {
@Override public void run() {
- FullBackupJob.schedule(mContext, deferTime);
+ FullBackupJob.schedule(mContext, deferTime, mConstants);
}
});
return false;
@@ -9851,7 +9856,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
}
// ...and schedule a backup pass if necessary
- KeyValueBackupJob.schedule(mContext);
+ KeyValueBackupJob.schedule(mContext, mConstants);
}
// Note: packageName is currently unused, but may be in the future
@@ -10014,7 +10019,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
mPowerManager.getPowerSaveState(ServiceType.KEYVALUE_BACKUP);
if (result.batterySaverEnabled) {
if (DEBUG) Slog.v(TAG, "Not running backup while in battery save mode");
- KeyValueBackupJob.schedule(mContext); // try again in several hours
+ KeyValueBackupJob.schedule(mContext, mConstants); // try again in several hours
} else {
if (DEBUG) Slog.v(TAG, "Scheduling immediate backup pass");
synchronized (mQueueLock) {
@@ -10112,7 +10117,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
try {
fd.close();
} catch (IOException e) {
- // just eat it
+ Slog.e(TAG, "IO error closing output for adb backup: " + e.getMessage());
}
Binder.restoreCallingIdentity(oldId);
Slog.d(TAG, "Adb backup processing complete.");
@@ -10387,7 +10392,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
synchronized (mQueueLock) {
if (enable && !wasEnabled && mProvisioned) {
// if we've just been enabled, start scheduling backup passes
- KeyValueBackupJob.schedule(mContext);
+ KeyValueBackupJob.schedule(mContext, mConstants);
scheduleNextFullBackupJob(0);
} else if (!enable) {
// No longer enabled, so stop running backups
@@ -10475,7 +10480,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
public ComponentName[] listAllTransportComponents() {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP,
"listAllTransportComponents");
- return mTransportManager.getAllTransportCompenents();
+ return mTransportManager.getAllTransportComponents();
}
@Override
@@ -10520,7 +10525,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
Slog.v(TAG, "selectBackupTransportAsync() called with transport " +
transport.flattenToShortString());
- mTransportManager.ensureTransportReady(transport, new SelectBackupTransportCallback() {
+ mTransportManager.ensureTransportReady(transport, new TransportManager.TransportReadyCallback() {
@Override
public void onSuccess(String transportName) {
mTransportManager.selectTransport(transportName);
diff --git a/services/backup/java/com/android/server/backup/FullBackupJob.java b/services/backup/java/com/android/server/backup/FullBackupJob.java
index 7ad7657cdea3..82638b4ecee4 100644
--- a/services/backup/java/com/android/server/backup/FullBackupJob.java
+++ b/services/backup/java/com/android/server/backup/FullBackupJob.java
@@ -34,12 +34,14 @@ public class FullBackupJob extends JobService {
JobParameters mParams;
- public static void schedule(Context ctx, long minDelay) {
+ public static void schedule(Context ctx, long minDelay, BackupManagerConstants constants) {
JobScheduler js = (JobScheduler) ctx.getSystemService(Context.JOB_SCHEDULER_SERVICE);
- JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sIdleService)
- .setRequiresDeviceIdle(true)
- .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
- .setRequiresCharging(true);
+ JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sIdleService);
+ synchronized (constants) {
+ builder.setRequiresDeviceIdle(true)
+ .setRequiredNetworkType(constants.getFullBackupRequiredNetworkType())
+ .setRequiresCharging(constants.getFullBackupRequireCharging());
+ }
if (minDelay > 0) {
builder.setMinimumLatency(minDelay);
}
diff --git a/services/backup/java/com/android/server/backup/KeyValueBackupJob.java b/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
index e3ff5ce3dd5c..d8411e2a9ced 100644
--- a/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
+++ b/services/backup/java/com/android/server/backup/KeyValueBackupJob.java
@@ -38,12 +38,6 @@ public class KeyValueBackupJob extends JobService {
new ComponentName("android", KeyValueBackupJob.class.getName());
private static final int JOB_ID = 0x5039;
- // Minimum wait time between backups even while we're on charger
- static final long BATCH_INTERVAL = 4 * AlarmManager.INTERVAL_HOUR;
-
- // Random variation in next-backup scheduling time to avoid server load spikes
- private static final int FUZZ_MILLIS = 10 * 60 * 1000;
-
// Once someone asks for a backup, this is how long we hold off until we find
// an on-charging opportunity. If we hit this max latency we will run the operation
// regardless. Privileged callers can always trigger an immediate pass via
@@ -53,31 +47,43 @@ public class KeyValueBackupJob extends JobService {
private static boolean sScheduled = false;
private static long sNextScheduled = 0;
- public static void schedule(Context ctx) {
- schedule(ctx, 0);
+ public static void schedule(Context ctx, BackupManagerConstants constants) {
+ schedule(ctx, 0, constants);
}
- public static void schedule(Context ctx, long delay) {
+ public static void schedule(Context ctx, long delay, BackupManagerConstants constants) {
synchronized (KeyValueBackupJob.class) {
- if (!sScheduled) {
- if (delay <= 0) {
- delay = BATCH_INTERVAL + new Random().nextInt(FUZZ_MILLIS);
- }
- if (BackupManagerService.DEBUG_SCHEDULING) {
- Slog.v(TAG, "Scheduling k/v pass in "
- + (delay / 1000 / 60) + " minutes");
- }
- JobScheduler js = (JobScheduler) ctx.getSystemService(Context.JOB_SCHEDULER_SERVICE);
- JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sKeyValueJobService)
- .setMinimumLatency(delay)
- .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
- .setRequiresCharging(true)
- .setOverrideDeadline(MAX_DEFERRAL);
- js.schedule(builder.build());
-
- sNextScheduled = System.currentTimeMillis() + delay;
- sScheduled = true;
+ if (sScheduled) {
+ return;
+ }
+
+ final long interval;
+ final long fuzz;
+ final int networkType;
+ final boolean needsCharging;
+
+ synchronized (constants) {
+ interval = constants.getKeyValueBackupIntervalMilliseconds();
+ fuzz = constants.getKeyValueBackupFuzzMilliseconds();
+ networkType = constants.getKeyValueBackupRequiredNetworkType();
+ needsCharging = constants.getKeyValueBackupRequireCharging();
}
+ if (delay <= 0) {
+ delay = interval + new Random().nextInt((int) fuzz);
+ }
+ if (BackupManagerService.DEBUG_SCHEDULING) {
+ Slog.v(TAG, "Scheduling k/v pass in " + (delay / 1000 / 60) + " minutes");
+ }
+ JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, sKeyValueJobService)
+ .setMinimumLatency(delay)
+ .setRequiredNetworkType(networkType)
+ .setRequiresCharging(needsCharging)
+ .setOverrideDeadline(MAX_DEFERRAL);
+ JobScheduler js = (JobScheduler) ctx.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+ js.schedule(builder.build());
+
+ sNextScheduled = System.currentTimeMillis() + delay;
+ sScheduled = true;
}
}
diff --git a/services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java b/services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java
index 187d5d93bfdd..e29b7d58e018 100644
--- a/services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java
+++ b/services/backup/java/com/android/server/backup/ProcessedPackagesJournal.java
@@ -21,7 +21,10 @@ import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
import com.android.server.backup.RefactoredBackupManagerService;
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
import java.io.EOFException;
+import java.io.FileInputStream;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
@@ -130,7 +133,8 @@ final class ProcessedPackagesJournal {
return;
}
- try (RandomAccessFile oldJournal = new RandomAccessFile(journalFile, "r")) {
+ try (DataInputStream oldJournal = new DataInputStream(
+ new BufferedInputStream(new FileInputStream(journalFile)))) {
while (true) {
String packageName = oldJournal.readUTF();
if (DEBUG) {
diff --git a/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java b/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java
index b01cfc572432..8b4cc7f6d22b 100644
--- a/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java
@@ -17,6 +17,7 @@
package com.android.server.backup;
import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND;
+
import static com.android.server.backup.internal.BackupHandler.MSG_BACKUP_OPERATION_TIMEOUT;
import static com.android.server.backup.internal.BackupHandler.MSG_FULL_CONFIRMATION_TIMEOUT;
import static com.android.server.backup.internal.BackupHandler.MSG_OP_COMPLETE;
@@ -76,6 +77,7 @@ import android.os.RemoteException;
import android.os.SELinux;
import android.os.ServiceManager;
import android.os.SystemClock;
+import android.os.Trace;
import android.os.UserHandle;
import android.os.storage.IStorageManager;
import android.os.storage.StorageManager;
@@ -148,6 +150,7 @@ import java.util.Queue;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicInteger;
public class RefactoredBackupManagerService implements BackupManagerServiceInterface {
@@ -212,14 +215,12 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
// order to give them time to enter the backup password.
private static final long TIMEOUT_FULL_CONFIRMATION = 60 * 1000;
- // How long between attempts to perform a full-data backup of any given app
- private static final long MIN_FULL_BACKUP_INTERVAL = 1000 * 60 * 60 * 24; // one day
-
// If an app is busy when we want to do a full-data backup, how long to defer the retry.
// This is fuzzed, so there are two parameters; backoff_min + Rand[0, backoff_fuzz)
private static final long BUSY_BACKOFF_MIN_MILLIS = 1000 * 60 * 60; // one hour
private static final int BUSY_BACKOFF_FUZZ = 1000 * 60 * 60 * 2; // two hours
+ private BackupManagerConstants mConstants;
private Context mContext;
private PackageManager mPackageManager;
private IPackageManager mPackageManagerBinder;
@@ -297,6 +298,10 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
return sInstance;
}
+ public BackupManagerConstants getConstants() {
+ return mConstants;
+ }
+
public Context getContext() {
return mContext;
}
@@ -543,9 +548,12 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
@Override
public void onUnlockUser(int userId) {
if (userId == UserHandle.USER_SYSTEM) {
+ Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup init");
sInstance.initialize(userId);
+ Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
// Migrate legacy setting
+ Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup migrate");
if (!backupSettingMigrated(userId)) {
if (DEBUG) {
Slog.i(TAG, "Backup enable apparently not migrated");
@@ -566,12 +574,15 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
}
}
}
+ Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
+ Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup enable");
try {
sInstance.setBackupEnabled(readBackupEnableState(userId));
} catch (RemoteException e) {
// can't happen; it's a local object
}
+ Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
}
}
}
@@ -604,10 +615,10 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
* {@link RefactoredBackupManagerService#waitUntilOperationComplete(int)} is
* used in various places to 'wait' for notifyAll and detect change of pending state of an
* operation. So typically, an operation will be removed from this array by:
- * - BackupRestoreTask#handleCancel and
- * - BackupRestoreTask#operationComplete OR waitUntilOperationComplete. Do not remove at both
- * these places because waitUntilOperationComplete relies on the operation being present to
- * determine its completion status.
+ * - BackupRestoreTask#handleCancel and
+ * - BackupRestoreTask#operationComplete OR waitUntilOperationComplete. Do not remove at both
+ * these places because waitUntilOperationComplete relies on the operation being present to
+ * determine its completion status.
*
* If type of operation is OP_BACKUP, it is a task running backups. It provides a handle to
* cancel backup tasks.
@@ -616,6 +627,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
private final SparseArray<Operation> mCurrentOperations = new SparseArray<>();
private final Object mCurrentOpLock = new Object();
private final Random mTokenGenerator = new Random();
+ final AtomicInteger mNextToken = new AtomicInteger();
private final SparseArray<AdbParams> mAdbBackupRestoreConfirmations = new SparseArray<>();
@@ -623,7 +635,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
private File mBaseStateDir;
private File mDataDir;
private File mJournalDir;
- @Nullable private DataChangedJournal mJournal;
+ @Nullable
+ private DataChangedJournal mJournal;
private final SecureRandom mRng = new SecureRandom();
@@ -654,18 +667,41 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
@GuardedBy("mQueueLock")
private ArrayList<FullBackupEntry> mFullBackupQueue;
- // Utility: build a new random integer token
+ // Utility: build a new random integer token. The low bits are the ordinal of the
+ // operation for near-time uniqueness, and the upper bits are random for app-
+ // side unpredictability.
@Override
public int generateRandomIntegerToken() {
- int token;
- do {
- synchronized (mTokenGenerator) {
- token = mTokenGenerator.nextInt();
- }
- } while (token < 0);
+ int token = mTokenGenerator.nextInt();
+ if (token < 0) token = -token;
+ token &= ~0xFF;
+ token |= (mNextToken.incrementAndGet() & 0xFF);
return token;
}
+ /*
+ * Construct a backup agent instance for the metadata pseudopackage. This is a
+ * process-local non-lifecycle agent instance, so we manually set up the context
+ * topology for it.
+ */
+ public PackageManagerBackupAgent makeMetadataAgent() {
+ PackageManagerBackupAgent pmAgent = new PackageManagerBackupAgent(mPackageManager);
+ pmAgent.attach(mContext);
+ pmAgent.onCreate();
+ return pmAgent;
+ }
+
+ /*
+ * Same as above but with the explicit package-set configuration.
+ */
+ public PackageManagerBackupAgent makeMetadataAgent(List<PackageInfo> packages) {
+ PackageManagerBackupAgent pmAgent =
+ new PackageManagerBackupAgent(mPackageManager, packages);
+ pmAgent.attach(mContext);
+ pmAgent.onCreate();
+ return pmAgent;
+ }
+
// ----- Debug-only backup operation trace -----
public void addBackupTrace(String s) {
if (DEBUG_BACKUP_TRACE) {
@@ -745,7 +781,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
mRunBackupIntent = PendingIntent.getBroadcast(context, 0, backupIntent, 0);
Intent initIntent = new Intent(RUN_INITIALIZE_ACTION);
- backupIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
+ initIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
mRunInitIntent = PendingIntent.getBroadcast(context, 0, initIntent, 0);
// Set up the backup-request journaling
@@ -753,6 +789,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
mJournalDir.mkdirs(); // creates mBaseStateDir along the way
mJournal = null; // will be created on first use
+ mConstants = new BackupManagerConstants(mBackupHandler, mContext.getContentResolver());
+
// Set up the various sorts of package tracking we do
mFullBackupScheduleFile = new File(mBaseStateDir, "fb-schedule");
initPackageTracking();
@@ -794,17 +832,18 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
// Remember our ancestral dataset
mTokenFile = new File(mBaseStateDir, "ancestral");
- try (RandomAccessFile tf = new RandomAccessFile(mTokenFile, "r")) {
- int version = tf.readInt();
+ try (DataInputStream tokenStream = new DataInputStream(new BufferedInputStream(
+ new FileInputStream(mTokenFile)))) {
+ int version = tokenStream.readInt();
if (version == CURRENT_ANCESTRAL_RECORD_VERSION) {
- mAncestralToken = tf.readLong();
- mCurrentToken = tf.readLong();
+ mAncestralToken = tokenStream.readLong();
+ mCurrentToken = tokenStream.readLong();
- int numPackages = tf.readInt();
+ int numPackages = tokenStream.readInt();
if (numPackages >= 0) {
mAncestralPackages = new HashSet<>();
for (int i = 0; i < numPackages; i++) {
- String pkgName = tf.readUTF();
+ String pkgName = tokenStream.readUTF();
mAncestralPackages.add(pkgName);
}
}
@@ -872,7 +911,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
PackageInfo pkg = mPackageManager.getPackageInfo(pkgName, 0);
if (AppBackupUtils.appGetsFullBackup(pkg)
&& AppBackupUtils.appIsEligibleForBackup(
- pkg.applicationInfo)) {
+ pkg.applicationInfo, mPackageManager)) {
schedule.add(new FullBackupEntry(pkgName, lastBackup));
} else {
if (DEBUG) {
@@ -893,7 +932,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
for (PackageInfo app : apps) {
if (AppBackupUtils.appGetsFullBackup(app)
&& AppBackupUtils.appIsEligibleForBackup(
- app.applicationInfo)) {
+ app.applicationInfo, mPackageManager)) {
if (!foundApps.contains(app.packageName)) {
if (MORE_DEBUG) {
Slog.i(TAG, "New full backup app " + app.packageName + " found");
@@ -919,7 +958,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
schedule = new ArrayList<>(apps.size());
for (PackageInfo info : apps) {
if (AppBackupUtils.appGetsFullBackup(info) && AppBackupUtils.appIsEligibleForBackup(
- info.applicationInfo)) {
+ info.applicationInfo, mPackageManager)) {
schedule.add(new FullBackupEntry(info.packageName, 0));
}
}
@@ -1204,7 +1243,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
PackageInfo app = mPackageManager.getPackageInfo(packageName, 0);
if (AppBackupUtils.appGetsFullBackup(app)
&& AppBackupUtils.appIsEligibleForBackup(
- app.applicationInfo)) {
+ app.applicationInfo, mPackageManager)) {
enqueueFullBackup(packageName, now);
scheduleNextFullBackupJob(0);
} else {
@@ -1501,7 +1540,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
long token = mAncestralToken;
synchronized (mQueueLock) {
- if (mProcessedPackagesJournal.hasBeenProcessed(packageName)) {
+ if (mCurrentToken != 0 && mProcessedPackagesJournal.hasBeenProcessed(packageName)) {
if (MORE_DEBUG) {
Slog.i(TAG, "App in ever-stored, so using current token");
}
@@ -1532,8 +1571,9 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
}
if (!mEnabled || !mProvisioned) {
- Slog.i(TAG, "Backup requested but e=" + mEnabled + " p=" +mProvisioned);
- BackupObserverUtils.sendBackupFinished(observer, BackupManager.ERROR_BACKUP_NOT_ALLOWED);
+ Slog.i(TAG, "Backup requested but e=" + mEnabled + " p=" + mProvisioned);
+ BackupObserverUtils.sendBackupFinished(observer,
+ BackupManager.ERROR_BACKUP_NOT_ALLOWED);
final int logTag = mProvisioned
? BackupManagerMonitor.LOG_EVENT_ID_BACKUP_DISABLED
: BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED;
@@ -1561,7 +1601,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
try {
PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName,
PackageManager.GET_SIGNATURES);
- if (!AppBackupUtils.appIsEligibleForBackup(packageInfo.applicationInfo)) {
+ if (!AppBackupUtils.appIsEligibleForBackup(packageInfo.applicationInfo,
+ mPackageManager)) {
BackupObserverUtils.sendBackupOnPackageResult(observer, packageName,
BackupManager.ERROR_BACKUP_NOT_ALLOWED);
continue;
@@ -1626,8 +1667,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
}
// We don't want the backup jobs to kick in any time soon.
// Reschedules them to run in the distant future.
- KeyValueBackupJob.schedule(mContext, BUSY_BACKOFF_MIN_MILLIS);
- FullBackupJob.schedule(mContext, 2 * BUSY_BACKOFF_MIN_MILLIS);
+ KeyValueBackupJob.schedule(mContext, BUSY_BACKOFF_MIN_MILLIS, mConstants);
+ FullBackupJob.schedule(mContext, 2 * BUSY_BACKOFF_MIN_MILLIS, mConstants);
} finally {
Binder.restoreCallingIdentity(oldToken);
}
@@ -1752,8 +1793,12 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
// Can't delete op from mCurrentOperations here. waitUntilOperationComplete may be
// called after we receive cancel here. We need this op's state there.
- // Remove all pending timeout messages for this operation type.
- mBackupHandler.removeMessages(getMessageIdForOperationType(op.type));
+ // Remove all pending timeout messages of types OP_TYPE_BACKUP_WAIT and
+ // OP_TYPE_RESTORE_WAIT. On the other hand, OP_TYPE_BACKUP cannot time out and
+ // doesn't require cancellation.
+ if (op.type == OP_TYPE_BACKUP_WAIT || op.type == OP_TYPE_RESTORE_WAIT) {
+ mBackupHandler.removeMessages(getMessageIdForOperationType(op.type));
+ }
}
mCurrentOpLock.notifyAll();
}
@@ -1835,13 +1880,13 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
// due.
final long upcomingLastBackup = mFullBackupQueue.get(0).lastBackup;
final long timeSinceLast = System.currentTimeMillis() - upcomingLastBackup;
- final long appLatency = (timeSinceLast < MIN_FULL_BACKUP_INTERVAL)
- ? (MIN_FULL_BACKUP_INTERVAL - timeSinceLast) : 0;
+ final long interval = mConstants.getFullBackupIntervalMilliseconds();
+ final long appLatency = (timeSinceLast < interval) ? (interval - timeSinceLast) : 0;
final long latency = Math.max(transportMinLatency, appLatency);
Runnable r = new Runnable() {
@Override
public void run() {
- FullBackupJob.schedule(mContext, latency);
+ FullBackupJob.schedule(mContext, latency, mConstants);
}
};
mBackupHandler.postDelayed(r, 2500);
@@ -1932,13 +1977,19 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
* <p>This is the "start a full backup operation" entry point called by the scheduled job.
*
* @return Whether ongoing work will continue. The return value here will be passed
- * along as the return value to the scheduled job's onStartJob() callback.
+ * along as the return value to the scheduled job's onStartJob() callback.
*/
@Override
public boolean beginFullBackup(FullBackupJob scheduledJob) {
- long now = System.currentTimeMillis();
+ final long now = System.currentTimeMillis();
+ final long fullBackupInterval;
+ final long keyValueBackupInterval;
+ synchronized (mConstants) {
+ fullBackupInterval = mConstants.getFullBackupIntervalMilliseconds();
+ keyValueBackupInterval = mConstants.getKeyValueBackupIntervalMilliseconds();
+ }
FullBackupEntry entry = null;
- long latency = MIN_FULL_BACKUP_INTERVAL;
+ long latency = fullBackupInterval;
if (!mEnabled || !mProvisioned) {
// Backups are globally disabled, so don't proceed. We also don't reschedule
@@ -1957,7 +2008,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
mPowerManager.getPowerSaveState(ServiceType.FULL_BACKUP);
if (result.batterySaverEnabled) {
if (DEBUG) Slog.i(TAG, "Deferring scheduled full backups in battery saver mode");
- FullBackupJob.schedule(mContext, KeyValueBackupJob.BATCH_INTERVAL);
+ FullBackupJob.schedule(mContext, keyValueBackupInterval, mConstants);
return false;
}
@@ -2000,20 +2051,20 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
// Typically this means we haven't run a key/value backup yet. Back off
// full-backup operations by the key/value job's run interval so that
// next time we run, we are likely to be able to make progress.
- latency = KeyValueBackupJob.BATCH_INTERVAL;
+ latency = keyValueBackupInterval;
}
if (runBackup) {
entry = mFullBackupQueue.get(0);
long timeSinceRun = now - entry.lastBackup;
- runBackup = (timeSinceRun >= MIN_FULL_BACKUP_INTERVAL);
+ runBackup = (timeSinceRun >= fullBackupInterval);
if (!runBackup) {
// It's too early to back up the next thing in the queue, so bow out
if (MORE_DEBUG) {
Slog.i(TAG, "Device ready but too early to back up next app");
}
// Wait until the next app in the queue falls due for a full data backup
- latency = MIN_FULL_BACKUP_INTERVAL - timeSinceRun;
+ latency = fullBackupInterval - timeSinceRun;
break; // we know we aren't doing work yet, so bail.
}
@@ -2049,8 +2100,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
// This relocates the app's entry from the head of the queue to
// its order-appropriate position further down, so upon looping
// a new candidate will be considered at the head.
- enqueueFullBackup(entry.packageName,
- nextEligible - MIN_FULL_BACKUP_INTERVAL);
+ enqueueFullBackup(entry.packageName, nextEligible - fullBackupInterval);
}
} catch (NameNotFoundException nnf) {
// So, we think we want to back this up, but it turns out the package
@@ -2072,7 +2122,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
mBackupHandler.post(new Runnable() {
@Override
public void run() {
- FullBackupJob.schedule(mContext, deferTime);
+ FullBackupJob.schedule(mContext, deferTime, mConstants);
}
});
return false;
@@ -2096,14 +2146,26 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
// so tear down any ongoing backup task right away.
@Override
public void endFullBackup() {
- synchronized (mQueueLock) {
- if (mRunningFullBackupTask != null) {
- if (DEBUG_SCHEDULING) {
- Slog.i(TAG, "Telling running backup to stop");
+ // offload the mRunningFullBackupTask.handleCancel() call to another thread,
+ // as we might have to wait for mCancelLock
+ Runnable endFullBackupRunnable = new Runnable() {
+ @Override
+ public void run() {
+ PerformFullTransportBackupTask pftbt = null;
+ synchronized (mQueueLock) {
+ if (mRunningFullBackupTask != null) {
+ pftbt = mRunningFullBackupTask;
+ }
+ }
+ if (pftbt != null) {
+ if (DEBUG_SCHEDULING) {
+ Slog.i(TAG, "Telling running backup to stop");
+ }
+ pftbt.handleCancel(true);
}
- mRunningFullBackupTask.handleCancel(true);
}
- }
+ };
+ new Thread(endFullBackupRunnable, "end-full-backup").start();
}
// Used by both incremental and full restore
@@ -2153,7 +2215,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
}
// ...and schedule a backup pass if necessary
- KeyValueBackupJob.schedule(mContext);
+ KeyValueBackupJob.schedule(mContext, mConstants);
}
// Note: packageName is currently unused, but may be in the future
@@ -2222,7 +2284,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
// Run an initialize operation for the given transport
@Override
public void initializeTransports(String[] transportNames, IBackupObserver observer) {
- mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "initializeTransport");
+ mContext.enforceCallingPermission(android.Manifest.permission.BACKUP,
+ "initializeTransport");
if (MORE_DEBUG || true) {
Slog.v(TAG, "initializeTransport(): " + Arrays.asList(transportNames));
}
@@ -2296,7 +2359,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
mPowerManager.getPowerSaveState(ServiceType.KEYVALUE_BACKUP);
if (result.batterySaverEnabled) {
if (DEBUG) Slog.v(TAG, "Not running backup while in battery save mode");
- KeyValueBackupJob.schedule(mContext); // try again in several hours
+ KeyValueBackupJob.schedule(mContext, mConstants); // try again in several hours
} else {
if (DEBUG) Slog.v(TAG, "Scheduling immediate backup pass");
synchronized (mQueueLock) {
@@ -2396,7 +2459,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
try {
fd.close();
} catch (IOException e) {
- // just eat it
+ Slog.e(TAG, "IO error closing output for adb backup: " + e.getMessage());
}
Binder.restoreCallingIdentity(oldId);
Slog.d(TAG, "Adb backup processing complete.");
@@ -2672,7 +2735,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
synchronized (mQueueLock) {
if (enable && !wasEnabled && mProvisioned) {
// if we've just been enabled, start scheduling backup passes
- KeyValueBackupJob.schedule(mContext);
+ KeyValueBackupJob.schedule(mContext, mConstants);
scheduleNextFullBackupJob(0);
} else if (!enable) {
// No longer enabled, so stop running backups
@@ -2762,7 +2825,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
public ComponentName[] listAllTransportComponents() {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP,
"listAllTransportComponents");
- return mTransportManager.getAllTransportCompenents();
+ return mTransportManager.getAllTransportComponents();
}
@Override
@@ -2787,8 +2850,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
final long oldId = Binder.clearCallingIdentity();
try {
String prevTransport = mTransportManager.selectTransport(transport);
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.BACKUP_TRANSPORT, transport);
+ updateStateForTransport(transport);
Slog.v(TAG, "selectBackupTransport() set " + mTransportManager.getCurrentTransportName()
+ " returning " + prevTransport);
return prevTransport;
@@ -2808,35 +2870,58 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
Slog.v(TAG, "selectBackupTransportAsync() called with transport " +
transport.flattenToShortString());
- mTransportManager.ensureTransportReady(transport, new SelectBackupTransportCallback() {
- @Override
- public void onSuccess(String transportName) {
- mTransportManager.selectTransport(transportName);
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.BACKUP_TRANSPORT,
- mTransportManager.getCurrentTransportName());
- Slog.v(TAG, "Transport successfully selected: " + transport.flattenToShortString());
- try {
- listener.onSuccess(transportName);
- } catch (RemoteException e) {
- // Nothing to do here.
- }
- }
+ mTransportManager.ensureTransportReady(transport,
+ new TransportManager.TransportReadyCallback() {
+ @Override
+ public void onSuccess(String transportName) {
+ mTransportManager.selectTransport(transportName);
+ updateStateForTransport(mTransportManager.getCurrentTransportName());
+ Slog.v(TAG, "Transport successfully selected: "
+ + transport.flattenToShortString());
+ try {
+ listener.onSuccess(transportName);
+ } catch (RemoteException e) {
+ // Nothing to do here.
+ }
+ }
- @Override
- public void onFailure(int reason) {
- Slog.v(TAG, "Failed to select transport: " + transport.flattenToShortString());
- try {
- listener.onFailure(reason);
- } catch (RemoteException e) {
- // Nothing to do here.
- }
- }
- });
+ @Override
+ public void onFailure(int reason) {
+ Slog.v(TAG,
+ "Failed to select transport: " + transport.flattenToShortString());
+ try {
+ listener.onFailure(reason);
+ } catch (RemoteException e) {
+ // Nothing to do here.
+ }
+ }
+ });
Binder.restoreCallingIdentity(oldId);
}
+ private void updateStateForTransport(String newTransportName) {
+ // Publish the name change
+ Settings.Secure.putString(mContext.getContentResolver(),
+ Settings.Secure.BACKUP_TRANSPORT, newTransportName);
+
+ // And update our current-dataset bookkeeping
+ IBackupTransport transport = mTransportManager.getTransportBinder(newTransportName);
+ if (transport != null) {
+ try {
+ mCurrentToken = transport.getCurrentRestoreSet();
+ } catch (Exception e) {
+ // Oops. We can't know the current dataset token, so reset and figure it out
+ // when we do the next k/v backup operation on this transport.
+ mCurrentToken = 0;
+ }
+ } else {
+ // The named transport isn't bound at this particular moment, so we can't
+ // know yet what its current dataset token is. Reset as above.
+ mCurrentToken = 0;
+ }
+ }
+
// Supply the configuration Intent for the given transport. If the name is not one
// of the available transports, or if the transport does not supply any configuration
// UI, the method returns null.
@@ -3146,19 +3231,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
}
}
- // We also avoid backups of 'disabled' apps
- private static boolean appIsDisabled(ApplicationInfo app, PackageManager pm) {
- switch (pm.getApplicationEnabledSetting(app.packageName)) {
- case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
- case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER:
- case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED:
- return true;
-
- default:
- return false;
- }
- }
-
@Override
public boolean isAppEligibleForBackup(String packageName) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP,
@@ -3166,9 +3238,10 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter
try {
PackageInfo packageInfo = mPackageManager.getPackageInfo(packageName,
PackageManager.GET_SIGNATURES);
- if (!AppBackupUtils.appIsEligibleForBackup(packageInfo.applicationInfo) ||
+ if (!AppBackupUtils.appIsEligibleForBackup(packageInfo.applicationInfo,
+ mPackageManager) ||
AppBackupUtils.appIsStopped(packageInfo.applicationInfo) ||
- appIsDisabled(packageInfo.applicationInfo, mPackageManager)) {
+ AppBackupUtils.appIsDisabled(packageInfo.applicationInfo, mPackageManager)) {
return false;
}
IBackupTransport transport = mTransportManager.getCurrentTransportBinder();
diff --git a/services/backup/java/com/android/server/backup/TransportManager.java b/services/backup/java/com/android/server/backup/TransportManager.java
index fb2982eb0baa..9aae38416bd1 100644
--- a/services/backup/java/com/android/server/backup/TransportManager.java
+++ b/services/backup/java/com/android/server/backup/TransportManager.java
@@ -41,10 +41,12 @@ import android.util.Log;
import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.backup.IBackupTransport;
import com.android.server.EventLogTags;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -57,7 +59,9 @@ public class TransportManager {
private static final String TAG = "BackupTransportManager";
- private static final String SERVICE_ACTION_TRANSPORT_HOST = "android.backup.TRANSPORT_HOST";
+ @VisibleForTesting
+ /* package */ static final String SERVICE_ACTION_TRANSPORT_HOST =
+ "android.backup.TRANSPORT_HOST";
private static final long REBINDING_TIMEOUT_UNPROVISIONED_MS = 30 * 1000; // 30 sec
private static final long REBINDING_TIMEOUT_PROVISIONED_MS = 5 * 60 * 1000; // 5 mins
@@ -91,11 +95,31 @@ public class TransportManager {
@GuardedBy("mTransportLock")
private final Map<String, ComponentName> mBoundTransports = new ArrayMap<>();
+ /**
+ * Callback interface for {@link #ensureTransportReady(ComponentName, TransportReadyCallback)}.
+ */
+ public interface TransportReadyCallback {
+
+ /**
+ * Will be called when the transport is ready.
+ */
+ void onSuccess(String transportName);
+
+ /**
+ * Will be called when it's not possible to make transport ready.
+ */
+ void onFailure(int reason);
+ }
+
TransportManager(Context context, Set<ComponentName> whitelist, String defaultTransport,
TransportBoundListener listener, Looper looper) {
mContext = context;
mPackageManager = context.getPackageManager();
- mTransportWhitelist = (whitelist != null) ? whitelist : new ArraySet<>();
+ if (whitelist != null) {
+ mTransportWhitelist = whitelist;
+ } else {
+ mTransportWhitelist = new ArraySet<>();
+ }
mCurrentTransportName = defaultTransport;
mTransportBoundListener = listener;
mHandler = new RebindOnTimeoutHandler(looper);
@@ -186,7 +210,7 @@ public class TransportManager {
}
}
- ComponentName[] getAllTransportCompenents() {
+ ComponentName[] getAllTransportComponents() {
synchronized (mTransportLock) {
return mValidTransports.keySet().toArray(new ComponentName[mValidTransports.size()]);
}
@@ -208,7 +232,8 @@ public class TransportManager {
}
}
- void ensureTransportReady(ComponentName transportComponent, SelectBackupTransportCallback listener) {
+ void ensureTransportReady(ComponentName transportComponent,
+ TransportReadyCallback listener) {
synchronized (mTransportLock) {
TransportConnection conn = mValidTransports.get(transportComponent);
if (conn == null) {
@@ -252,7 +277,7 @@ public class TransportManager {
intent, 0, UserHandle.USER_SYSTEM);
if (hosts != null) {
for (ResolveInfo host : hosts) {
- final ComponentName infoComponentName = host.serviceInfo.getComponentName();
+ final ComponentName infoComponentName = getComponentName(host.serviceInfo);
boolean shouldBind = false;
if (components != null && packageName != null) {
for (String component : components) {
@@ -310,14 +335,14 @@ public class TransportManager {
Intent intent = new Intent(mTransportServiceIntent)
.setComponent(componentName);
return mContext.bindServiceAsUser(intent, connection, Context.BIND_AUTO_CREATE,
- UserHandle.SYSTEM);
+ createSystemUserHandle());
}
private class TransportConnection implements ServiceConnection {
// Hold mTransportsLock to access these fields so as to provide a consistent view of them.
private IBackupTransport mBinder;
- private final List<SelectBackupTransportCallback> mListeners = new ArrayList<>();
+ private final List<TransportReadyCallback> mListeners = new ArrayList<>();
private String mTransportName;
private final ComponentName mTransportComponent;
@@ -333,7 +358,7 @@ public class TransportManager {
boolean success = false;
EventLog.writeEvent(EventLogTags.BACKUP_TRANSPORT_LIFECYCLE,
- component.flattenToShortString(), 1);
+ component.flattenToShortString(), 1);
try {
mTransportName = mBinder.name();
@@ -350,7 +375,7 @@ public class TransportManager {
if (success) {
Slog.d(TAG, "Bound to transport: " + componentShortString);
mBoundTransports.put(mTransportName, component);
- for (SelectBackupTransportCallback listener : mListeners) {
+ for (TransportReadyCallback listener : mListeners) {
listener.onSuccess(mTransportName);
}
// cancel rebinding on timeout for this component as we've already connected
@@ -363,7 +388,7 @@ public class TransportManager {
mContext.unbindService(this);
mValidTransports.remove(component);
mBinder = null;
- for (SelectBackupTransportCallback listener : mListeners) {
+ for (TransportReadyCallback listener : mListeners) {
listener.onFailure(BackupManager.ERROR_TRANSPORT_INVALID);
}
}
@@ -423,7 +448,7 @@ public class TransportManager {
}
}
- private void addListener(SelectBackupTransportCallback listener) {
+ private void addListener(TransportReadyCallback listener) {
synchronized (mTransportLock) {
if (mBinder == null) {
// We are waiting for bind to complete. If mBinder is set to null after the bind
@@ -437,7 +462,8 @@ public class TransportManager {
}
private long getRebindTimeout() {
- final boolean isDeviceProvisioned = Settings.Global.getInt(mContext.getContentResolver(),
+ final boolean isDeviceProvisioned = Settings.Global.getInt(
+ mContext.getContentResolver(),
Settings.Global.DEVICE_PROVISIONED, 0) != 0;
return isDeviceProvisioned
? REBINDING_TIMEOUT_PROVISIONED_MS
@@ -445,7 +471,7 @@ public class TransportManager {
}
}
- interface TransportBoundListener {
+ public interface TransportBoundListener {
/** Should return true if this is a valid transport. */
boolean onTransportBound(IBackupTransport binder);
}
@@ -465,7 +491,7 @@ public class TransportManager {
synchronized (mTransportLock) {
if (mBoundTransports.containsValue(transportComponent)) {
Slog.d(TAG, "Explicit rebinding timeout passed, but already bound to "
- + componentShortString + " so not attempting to rebind");
+ + componentShortString + " so not attempting to rebind");
return;
}
Slog.d(TAG, "Explicit rebinding timeout passed, attempting rebinding to: "
@@ -492,4 +518,18 @@ public class TransportManager {
Slog.v(TAG, message);
}
}
+
+ // These only exists to make it testable with Robolectric, which is not updated to API level 24
+ // yet.
+ // TODO: Get rid of this once Robolectric is updated.
+ private static ComponentName getComponentName(ServiceInfo serviceInfo) {
+ return new ComponentName(serviceInfo.packageName, serviceInfo.name);
+ }
+
+ // These only exists to make it testable with Robolectric, which is not updated to API level 24
+ // yet.
+ // TODO: Get rid of this once Robolectric is updated.
+ private static UserHandle createSystemUserHandle() {
+ return new UserHandle(UserHandle.USER_SYSTEM);
+ }
}
diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java
index 804e92c88eb7..f0b3e4a023f0 100644
--- a/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java
+++ b/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java
@@ -236,12 +236,11 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor
obbConnection.establish(); // we'll want this later
sendStartBackup();
+ PackageManager pm = backupManagerService.getPackageManager();
// doAllApps supersedes the package set if any
if (mAllApps) {
- List<PackageInfo> allPackages =
- backupManagerService.getPackageManager().getInstalledPackages(
- PackageManager.GET_SIGNATURES);
+ List<PackageInfo> allPackages = pm.getInstalledPackages(PackageManager.GET_SIGNATURES);
for (int i = 0; i < allPackages.size(); i++) {
PackageInfo pkg = allPackages.get(i);
// Exclude system apps if we've been asked to do so
@@ -288,7 +287,7 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor
Iterator<Entry<String, PackageInfo>> iter = packagesToBackup.entrySet().iterator();
while (iter.hasNext()) {
PackageInfo pkg = iter.next().getValue();
- if (!AppBackupUtils.appIsEligibleForBackup(pkg.applicationInfo)
+ if (!AppBackupUtils.appIsEligibleForBackup(pkg.applicationInfo, pm)
|| AppBackupUtils.appIsStopped(pkg.applicationInfo)) {
iter.remove();
if (DEBUG) {
@@ -459,7 +458,7 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor
}
mOutputFile.close();
} catch (IOException e) {
- /* nothing we can do about this */
+ Slog.e(TAG, "IO error closing adb backup file: " + e.getMessage());
}
synchronized (mLatch) {
mLatch.set(true);
diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
index bc7c1174d17f..90134e1a3ead 100644
--- a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
+++ b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java
@@ -140,10 +140,10 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
for (String pkg : whichPackages) {
try {
- PackageInfo info = backupManagerService.getPackageManager().getPackageInfo(pkg,
- PackageManager.GET_SIGNATURES);
+ PackageManager pm = backupManagerService.getPackageManager();
+ PackageInfo info = pm.getPackageInfo(pkg, PackageManager.GET_SIGNATURES);
mCurrentPackage = info;
- if (!AppBackupUtils.appIsEligibleForBackup(info.applicationInfo)) {
+ if (!AppBackupUtils.appIsEligibleForBackup(info.applicationInfo, pm)) {
// Cull any packages that have indicated that backups are not permitted,
// that run as system-domain uids but do not define their own backup agents,
// as well as any explicit mention of the 'special' shared-storage agent
@@ -306,6 +306,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
final int N = mPackages.size();
final byte[] buffer = new byte[8192];
for (int i = 0; i < N; i++) {
+ mBackupRunner = null;
PackageInfo currentPackage = mPackages.get(i);
String packageName = currentPackage.packageName;
if (DEBUG) {
@@ -491,7 +492,13 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
}
EventLog.writeEvent(EventLogTags.FULL_BACKUP_AGENT_FAILURE, packageName,
"transport rejected");
- // Do nothing, clean up, and continue looping.
+ // This failure state can come either a-priori from the transport, or
+ // from the preflight pass. If we got as far as preflight, we now need
+ // to tear down the target process.
+ if (mBackupRunner != null) {
+ backupManagerService.tearDownAgentAndKill(currentPackage.applicationInfo);
+ }
+ // ... and continue looping.
} else if (backupPackageStatus == BackupTransport.TRANSPORT_QUOTA_EXCEEDED) {
BackupObserverUtils
.sendBackupOnPackageResult(mBackupObserver, packageName,
@@ -501,6 +508,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
EventLog.writeEvent(EventLogTags.FULL_BACKUP_QUOTA_EXCEEDED,
packageName);
}
+ backupManagerService.tearDownAgentAndKill(currentPackage.applicationInfo);
// Do nothing, clean up, and continue looping.
} else if (backupPackageStatus == BackupTransport.AGENT_ERROR) {
BackupObserverUtils
@@ -527,6 +535,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba
EventLog.writeEvent(EventLogTags.FULL_BACKUP_TRANSPORT_FAILURE);
// Abort entire backup pass.
backupRunStatus = BackupManager.ERROR_TRANSPORT_ABORTED;
+ backupManagerService.tearDownAgentAndKill(currentPackage.applicationInfo);
return;
} else {
// Success!
diff --git a/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java b/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java
index 5d4fcf4c16d9..7a8a920e7df7 100644
--- a/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java
+++ b/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java
@@ -227,9 +227,8 @@ public class PerformBackupTask implements BackupRestoreTask {
if (!mFinished) {
finalizeBackup();
} else {
- Slog.e(TAG, "Duplicate finish");
+ Slog.e(TAG, "Duplicate finish of K/V pass");
}
- mFinished = true;
break;
}
}
@@ -322,8 +321,7 @@ public class PerformBackupTask implements BackupRestoreTask {
// because it's cheap and this way we guarantee that we don't get out of
// step even if we're selecting among various transports at run time.
if (mStatus == BackupTransport.TRANSPORT_OK) {
- PackageManagerBackupAgent pmAgent = new PackageManagerBackupAgent(
- backupManagerService.getPackageManager());
+ PackageManagerBackupAgent pmAgent = backupManagerService.makeMetadataAgent();
mStatus = invokeAgentForBackup(
PACKAGE_MANAGER_SENTINEL,
IBackupAgent.Stub.asInterface(pmAgent.onBind()), mTransport);
@@ -391,11 +389,9 @@ public class PerformBackupTask implements BackupRestoreTask {
// to sanity-check here. This also gives us the classname of the
// package's backup agent.
try {
- mCurrentPackage = backupManagerService.getPackageManager().getPackageInfo(
- request.packageName,
- PackageManager.GET_SIGNATURES);
- if (!AppBackupUtils.appIsEligibleForBackup(
- mCurrentPackage.applicationInfo)) {
+ PackageManager pm = backupManagerService.getPackageManager();
+ mCurrentPackage = pm.getPackageInfo(request.packageName, PackageManager.GET_SIGNATURES);
+ if (!AppBackupUtils.appIsEligibleForBackup(mCurrentPackage.applicationInfo, pm)) {
// The manifest has changed but we had a stale backup request pending.
// This won't happen again because the app won't be requesting further
// backups.
@@ -609,6 +605,7 @@ public class PerformBackupTask implements BackupRestoreTask {
break;
}
}
+ mFinished = true;
Slog.i(TAG, "K/V backup pass finished.");
// Only once we're entirely finished do we release the wakelock for k/v backup.
backupManagerService.getWakelock().release();
@@ -1060,7 +1057,8 @@ public class PerformBackupTask implements BackupRestoreTask {
Slog.w(TAG, "Unable to contact transport for recommended backoff: " + e.getMessage());
delay = 0; // use the scheduler's default
}
- KeyValueBackupJob.schedule(backupManagerService.getContext(), delay);
+ KeyValueBackupJob.schedule(backupManagerService.getContext(), delay,
+ backupManagerService.getConstants());
for (BackupRequest request : mOriginalQueue) {
backupManagerService.dataChangedImpl(request.packageName);
diff --git a/services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java b/services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java
index e92b8be6aaba..1001d3a2c8de 100644
--- a/services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java
+++ b/services/backup/java/com/android/server/backup/internal/ProvisionedObserver.java
@@ -53,7 +53,8 @@ public class ProvisionedObserver extends ContentObserver {
if (MORE_DEBUG) {
Slog.d(TAG, "Now provisioned, so starting backups");
}
- KeyValueBackupJob.schedule(backupManagerService.getContext());
+ KeyValueBackupJob.schedule(backupManagerService.getContext(),
+ backupManagerService.getConstants());
backupManagerService.scheduleNextFullBackupJob(0);
}
}
diff --git a/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java
index 62ae065be1ac..22691bb60bfa 100644
--- a/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java
+++ b/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java
@@ -150,8 +150,7 @@ public class PerformAdbRestoreTask implements Runnable {
mObserver = observer;
mLatchObject = latch;
mAgent = null;
- mPackageManagerBackupAgent = new PackageManagerBackupAgent(
- backupManagerService.getPackageManager());
+ mPackageManagerBackupAgent = backupManagerService.makeMetadataAgent();
mAgentPackage = null;
mTargetApp = null;
mObbConnection = new FullBackupObbConnection(backupManagerService);
diff --git a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
index 21d5dc21c196..b538c6d4e472 100644
--- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
+++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
@@ -198,8 +198,8 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask {
boolean hasSettings = false;
for (int i = 0; i < filterSet.length; i++) {
try {
- PackageInfo info = backupManagerService.getPackageManager().getPackageInfo(
- filterSet[i], 0);
+ PackageManager pm = backupManagerService.getPackageManager();
+ PackageInfo info = pm.getPackageInfo(filterSet[i], 0);
if ("android".equals(info.packageName)) {
hasSystem = true;
continue;
@@ -209,8 +209,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask {
continue;
}
- if (AppBackupUtils.appIsEligibleForBackup(
- info.applicationInfo)) {
+ if (AppBackupUtils.appIsEligibleForBackup(info.applicationInfo, pm)) {
mAcceptSet.add(info);
}
} catch (NameNotFoundException e) {
@@ -387,8 +386,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask {
// Pull the Package Manager metadata from the restore set first
mCurrentPackage = new PackageInfo();
mCurrentPackage.packageName = PACKAGE_MANAGER_SENTINEL;
- mPmAgent = new PackageManagerBackupAgent(backupManagerService.getPackageManager(),
- null);
+ mPmAgent = backupManagerService.makeMetadataAgent(null);
mAgent = IBackupAgent.Stub.asInterface(mPmAgent.onBind());
if (MORE_DEBUG) {
Slog.v(TAG, "initiating restore for PMBA");
@@ -779,6 +777,9 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask {
// state RESTORE_FINISHED : provide the "no more data" signpost callback at the end
private void restoreFinished() {
+ if (DEBUG) {
+ Slog.d(TAG, "restoreFinished packageName=" + mCurrentPackage.packageName);
+ }
try {
backupManagerService
.prepareOperationTimeout(mEphemeralOpToken,
diff --git a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
index 4abf18add469..d7cac7770cc8 100644
--- a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
+++ b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
@@ -22,6 +22,7 @@ import static com.android.server.backup.RefactoredBackupManagerService.TAG;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.os.Process;
import android.util.Slog;
@@ -44,7 +45,7 @@ public class AppBackupUtils {
* <li>it is the special shared-storage backup package used for 'adb backup'
* </ol>
*/
- public static boolean appIsEligibleForBackup(ApplicationInfo app) {
+ public static boolean appIsEligibleForBackup(ApplicationInfo app, PackageManager pm) {
// 1. their manifest states android:allowBackup="false"
if ((app.flags & ApplicationInfo.FLAG_ALLOW_BACKUP) == 0) {
return false;
@@ -60,11 +61,33 @@ public class AppBackupUtils {
return false;
}
- return true;
+ // 4. it is an "instant" app
+ if (app.isInstantApp()) {
+ return false;
+ }
+
+ // Everything else checks out; the only remaining roadblock would be if the
+ // package were disabled
+ return !appIsDisabled(app, pm);
+ }
+
+ /** Avoid backups of 'disabled' apps. */
+ public static boolean appIsDisabled(ApplicationInfo app, PackageManager pm) {
+ switch (pm.getApplicationEnabledSetting(app.packageName)) {
+ case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
+ case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER:
+ case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED:
+ return true;
+
+ default:
+ return false;
+ }
}
/**
- * Checks if the app is in a stopped state, that means it won't receive broadcasts.
+ * Checks if the app is in a stopped state. This is not part of the general "eligible for
+ * backup?" check because we *do* still need to restore data to apps in this state (e.g.
+ * newly-installing ones)
*/
public static boolean appIsStopped(ApplicationInfo app) {
return ((app.flags & ApplicationInfo.FLAG_STOPPED) != 0);
diff --git a/services/core/Android.mk b/services/core/Android.mk
index 5e188e03307e..599485ffe5c1 100644
--- a/services/core/Android.mk
+++ b/services/core/Android.mk
@@ -4,7 +4,10 @@ include $(CLEAR_VARS)
LOCAL_MODULE := services.core
-LOCAL_AIDL_INCLUDES := system/netd/server/binder
+LOCAL_AIDL_INCLUDES := \
+ frameworks/native/aidl/binder \
+ system/netd/server/binder \
+ system/vold/binder
LOCAL_SRC_FILES += \
$(call all-java-files-under,java) \
@@ -12,6 +15,9 @@ LOCAL_SRC_FILES += \
java/com/android/server/am/EventLogTags.logtags \
../../../../system/netd/server/binder/android/net/INetd.aidl \
../../../../system/netd/server/binder/android/net/metrics/INetdEventListener.aidl \
+ ../../../../system/vold/binder/android/os/IVold.aidl \
+ ../../../../system/vold/binder/android/os/IVoldListener.aidl \
+ ../../../../system/vold/binder/android/os/IVoldTaskListener.aidl \
../../../native/cmds/installd/binder/android/os/IInstalld.aidl \
LOCAL_AIDL_INCLUDES += \
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index d1cf0255b18c..4c08f6290c6c 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -46,6 +46,7 @@ import android.os.Message;
import android.os.PowerManager;
import android.os.Process;
import android.os.RemoteException;
+import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -54,6 +55,7 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.ArrayMap;
+import android.util.ArraySet;
import android.util.KeyValueListParser;
import android.util.Log;
import android.util.Slog;
@@ -85,6 +87,8 @@ import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP;
import static android.app.AlarmManager.ELAPSED_REALTIME;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.app.IAppOpsCallback;
+import com.android.internal.app.IAppOpsService;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.LocalLog;
@@ -106,6 +110,7 @@ class AlarmManagerService extends SystemService {
static final boolean DEBUG_ALARM_CLOCK = localLOGV || false;
static final boolean DEBUG_LISTENER_CALLBACK = localLOGV || false;
static final boolean DEBUG_WAKELOCK = localLOGV || false;
+ static final boolean DEBUG_BG_LIMIT = localLOGV || false;
static final boolean RECORD_ALARMS_IN_HISTORY = true;
static final boolean RECORD_DEVICE_IDLE_ALARMS = false;
static final int ALARM_EVENT = 1;
@@ -114,7 +119,7 @@ class AlarmManagerService extends SystemService {
private final Intent mBackgroundIntent
= new Intent().addFlags(Intent.FLAG_FROM_BACKGROUND);
static final IncreasingTimeOrder sIncreasingTimeOrder = new IncreasingTimeOrder();
-
+
static final boolean WAKEUP_STATS = false;
private static final Intent NEXT_ALARM_CLOCK_CHANGED_INTENT =
@@ -125,10 +130,15 @@ class AlarmManagerService extends SystemService {
final LocalLog mLog = new LocalLog(TAG);
AppOpsManager mAppOps;
+ IAppOpsService mAppOpsService;
DeviceIdleController.LocalService mLocalDeviceIdleController;
final Object mLock = new Object();
+ ArraySet<String> mForcedAppStandbyPackages = new ArraySet<>();
+ SparseBooleanArray mForegroundUids = new SparseBooleanArray();
+ // List of alarms per uid deferred due to user applied background restrictions on the source app
+ SparseArray<ArrayList<Alarm>> mPendingBackgroundAlarms = new SparseArray<>();
long mNativeData;
private long mNextWakeup;
private long mNextNonWakeup;
@@ -225,6 +235,7 @@ class AlarmManagerService extends SystemService {
private static final String KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION
= "allow_while_idle_whitelist_duration";
private static final String KEY_LISTENER_TIMEOUT = "listener_timeout";
+ private static final String KEY_BG_RESTRICTIONS_ENABLED = "limit_bg_alarms_enabled";
private static final long DEFAULT_MIN_FUTURITY = 5 * 1000;
private static final long DEFAULT_MIN_INTERVAL = 60 * 1000;
@@ -705,7 +716,7 @@ class AlarmManagerService extends SystemService {
static final BatchTimeOrder sBatchOrder = new BatchTimeOrder();
final ArrayList<Batch> mAlarmBatches = new ArrayList<>();
- // set to null if in idle mode; while in this mode, any alarms we don't want
+ // set to non-null if in idle mode; while in this mode, any alarms we don't want
// to run during this time are placed in mPendingWhileIdleAlarms
Alarm mPendingIdleUntil = null;
Alarm mNextWakeFromIdle = null;
@@ -814,6 +825,108 @@ class AlarmManagerService extends SystemService {
setImplLocked(a, true, doValidate);
}
+ /**
+ * Sends alarms that were blocked due to user applied background restrictions - either because
+ * the user lifted those or the uid came to foreground.
+ *
+ * @param uid uid to filter on
+ * @param packageName package to filter on, or null for all packages in uid
+ */
+ void sendPendingBackgroundAlarmsLocked(int uid, String packageName) {
+ final ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.get(uid);
+ if (alarmsForUid == null || alarmsForUid.size() == 0) {
+ return;
+ }
+ final ArrayList<Alarm> alarmsToDeliver;
+ if (packageName != null) {
+ if (DEBUG_BG_LIMIT) {
+ Slog.d(TAG, "Sending blocked alarms for uid " + uid + ", package " + packageName);
+ }
+ alarmsToDeliver = new ArrayList<>();
+ for (int i = alarmsForUid.size() - 1; i >= 0; i--) {
+ final Alarm a = alarmsForUid.get(i);
+ if (a.matches(packageName)) {
+ alarmsToDeliver.add(alarmsForUid.remove(i));
+ }
+ }
+ if (alarmsForUid.size() == 0) {
+ mPendingBackgroundAlarms.remove(uid);
+ }
+ } else {
+ if (DEBUG_BG_LIMIT) {
+ Slog.d(TAG, "Sending blocked alarms for uid " + uid);
+ }
+ alarmsToDeliver = alarmsForUid;
+ mPendingBackgroundAlarms.remove(uid);
+ }
+ deliverPendingBackgroundAlarmsLocked(alarmsToDeliver, SystemClock.elapsedRealtime());
+ }
+
+ void sendPendingBackgroundAlarmsForAppIdLocked(int appId) {
+ final ArrayList<Alarm> alarmsToDeliver = new ArrayList<>();
+ for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i--) {
+ final int uid = mPendingBackgroundAlarms.keyAt(i);
+ final ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.valueAt(i);
+ if (UserHandle.getAppId(uid) == appId) {
+ alarmsToDeliver.addAll(alarmsForUid);
+ mPendingBackgroundAlarms.removeAt(i);
+ }
+ }
+ deliverPendingBackgroundAlarmsLocked(alarmsToDeliver, SystemClock.elapsedRealtime());
+ }
+
+ private void deliverPendingBackgroundAlarmsLocked(ArrayList<Alarm> alarms, long nowELAPSED) {
+ final int N = alarms.size();
+ boolean hasWakeup = false;
+ for (int i = 0; i < N; i++) {
+ final Alarm alarm = alarms.get(i);
+ if (alarm.wakeup) {
+ hasWakeup = true;
+ }
+ alarm.count = 1;
+ // Recurring alarms may have passed several alarm intervals while the
+ // alarm was kept pending. Send the appropriate trigger count.
+ if (alarm.repeatInterval > 0) {
+ alarm.count += (nowELAPSED - alarm.whenElapsed) / alarm.repeatInterval;
+ // Also schedule its next recurrence
+ final long delta = alarm.count * alarm.repeatInterval;
+ final long nextElapsed = alarm.whenElapsed + delta;
+ setImplLocked(alarm.type, alarm.when + delta, nextElapsed, alarm.windowLength,
+ maxTriggerTime(nowELAPSED, nextElapsed, alarm.repeatInterval),
+ alarm.repeatInterval, alarm.operation, null, null, alarm.flags, true,
+ alarm.workSource, alarm.alarmClock, alarm.uid, alarm.packageName);
+ // Kernel alarms will be rescheduled as needed in setImplLocked
+ }
+ }
+ if (!hasWakeup && checkAllowNonWakeupDelayLocked(nowELAPSED)) {
+ // No need to wakeup for non wakeup alarms
+ if (mPendingNonWakeupAlarms.size() == 0) {
+ mStartCurrentDelayTime = nowELAPSED;
+ mNextNonWakeupDeliveryTime = nowELAPSED
+ + ((currentNonWakeupFuzzLocked(nowELAPSED)*3)/2);
+ }
+ mPendingNonWakeupAlarms.addAll(alarms);
+ mNumDelayedAlarms += alarms.size();
+ } else {
+ if (DEBUG_BG_LIMIT) {
+ Slog.d(TAG, "Waking up to deliver pending blocked alarms");
+ }
+ // Since we are waking up, also deliver any pending non wakeup alarms we have.
+ if (mPendingNonWakeupAlarms.size() > 0) {
+ alarms.addAll(mPendingNonWakeupAlarms);
+ final long thisDelayTime = nowELAPSED - mStartCurrentDelayTime;
+ mTotalDelayTime += thisDelayTime;
+ if (mMaxDelayTime < thisDelayTime) {
+ mMaxDelayTime = thisDelayTime;
+ }
+ mPendingNonWakeupAlarms.clear();
+ }
+ calculateDeliveryPriorities(alarms);
+ Collections.sort(alarms, mAlarmDispatchComparator);
+ deliverAlarmsLocked(alarms, nowELAPSED);
+ }
+ }
+
void restorePendingWhileIdleAlarmsLocked() {
if (RECORD_DEVICE_IDLE_ALARMS) {
IdleDispatchEntry ent = new IdleDispatchEntry();
@@ -1032,11 +1145,14 @@ class AlarmManagerService extends SystemService {
try {
ActivityManager.getService().registerUidObserver(new UidObserver(),
- ActivityManager.UID_OBSERVER_IDLE, ActivityManager.PROCESS_STATE_UNKNOWN, null);
+ ActivityManager.UID_OBSERVER_GONE | ActivityManager.UID_OBSERVER_IDLE
+ | ActivityManager.UID_OBSERVER_ACTIVE,
+ ActivityManager.PROCESS_STATE_UNKNOWN, null);
} catch (RemoteException e) {
// ignored; both services live in system_server
}
-
+ mAppOpsService = IAppOpsService.Stub.asInterface(
+ ServiceManager.getService(Context.APP_OPS_SERVICE));
publishBinderService(Context.ALARM_SERVICE, mService);
publishLocalService(LocalService.class, new LocalService());
}
@@ -1048,6 +1164,13 @@ class AlarmManagerService extends SystemService {
mAppOps = (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE);
mLocalDeviceIdleController
= LocalServices.getService(DeviceIdleController.LocalService.class);
+ try {
+ mAppOpsService.startWatchingMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, null,
+ new AppOpsWatcher());
+ } catch (RemoteException rexc) {
+ // Shouldn't happen as they are in the same process.
+ Slog.e(TAG, "AppOps service not reachable", rexc);
+ }
}
}
@@ -1461,6 +1584,12 @@ class AlarmManagerService extends SystemService {
mConstants.dump(pw);
pw.println();
+ pw.print(" Foreground uids: [");
+ for (int i = 0; i < mForegroundUids.size(); i++) {
+ if (mForegroundUids.valueAt(i)) pw.print(mForegroundUids.keyAt(i) + " ");
+ }
+ pw.println("]");
+ pw.println(" Forced app standby packages: " + mForcedAppStandbyPackages);
final long nowRTC = System.currentTimeMillis();
final long nowELAPSED = SystemClock.elapsedRealtime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -1533,6 +1662,19 @@ class AlarmManagerService extends SystemService {
dumpAlarmList(pw, b.alarms, " ", nowELAPSED, nowRTC, sdf);
}
}
+ pw.println();
+ pw.println(" Pending user blocked background alarms: ");
+ boolean blocked = false;
+ for (int i = 0; i < mPendingBackgroundAlarms.size(); i++) {
+ final ArrayList<Alarm> blockedAlarms = mPendingBackgroundAlarms.valueAt(i);
+ if (blockedAlarms != null && blockedAlarms.size() > 0) {
+ blocked = true;
+ dumpAlarmList(pw, blockedAlarms, " ", nowELAPSED, nowRTC, sdf);
+ }
+ }
+ if (!blocked) {
+ pw.println(" none");
+ }
if (mPendingIdleUntil != null || mPendingWhileIdleAlarms.size() > 0) {
pw.println();
pw.println(" Idle mode state:");
@@ -1799,6 +1941,22 @@ class AlarmManagerService extends SystemService {
void setDeviceIdleUserWhitelistImpl(int[] appids) {
synchronized (mLock) {
+ // appids are sorted, just send pending alarms for any new appids added to the whitelist
+ int i = 0, j = 0;
+ while (i < appids.length) {
+ while (j < mDeviceIdleUserWhitelist.length
+ && mDeviceIdleUserWhitelist[j] < appids[i]) {
+ j++;
+ }
+ if (j < mDeviceIdleUserWhitelist.length
+ && appids[i] != mDeviceIdleUserWhitelist[j]) {
+ if (DEBUG_BG_LIMIT) {
+ Slog.d(TAG, "Sending blocked alarms for whitelisted appid " + appids[j]);
+ }
+ sendPendingBackgroundAlarmsForAppIdLocked(appids[j]);
+ }
+ i++;
+ }
mDeviceIdleUserWhitelist = appids;
}
}
@@ -1979,7 +2137,18 @@ class AlarmManagerService extends SystemService {
mPendingWhileIdleAlarms.remove(i);
}
}
-
+ for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i--) {
+ final ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.valueAt(i);
+ for (int j = alarmsForUid.size() - 1; j >= 0; j--) {
+ if (alarmsForUid.get(j).matches(operation, directReceiver)) {
+ // Don't set didRemove, since this doesn't impact the scheduled alarms.
+ alarmsForUid.remove(j);
+ }
+ }
+ if (alarmsForUid.size() == 0) {
+ mPendingBackgroundAlarms.removeAt(i);
+ }
+ }
if (didRemove) {
if (DEBUG_BATCH) {
Slog.v(TAG, "remove(operation) changed bounds; rebatching");
@@ -2016,7 +2185,17 @@ class AlarmManagerService extends SystemService {
mPendingWhileIdleAlarms.remove(i);
}
}
-
+ for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i --) {
+ final ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.valueAt(i);
+ for (int j = alarmsForUid.size() - 1; j >= 0; j--) {
+ if (alarmsForUid.get(j).matches(packageName)) {
+ alarmsForUid.remove(j);
+ }
+ }
+ if (alarmsForUid.size() == 0) {
+ mPendingBackgroundAlarms.removeAt(i);
+ }
+ }
if (didRemove) {
if (DEBUG_BATCH) {
Slog.v(TAG, "remove(package) changed bounds; rebatching");
@@ -2043,7 +2222,11 @@ class AlarmManagerService extends SystemService {
mPendingWhileIdleAlarms.remove(i);
}
}
-
+ for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i--) {
+ if (mPendingBackgroundAlarms.keyAt(i) == uid) {
+ mPendingBackgroundAlarms.removeAt(i);
+ }
+ }
if (didRemove) {
if (DEBUG_BATCH) {
Slog.v(TAG, "remove(package) changed bounds; rebatching");
@@ -2070,6 +2253,11 @@ class AlarmManagerService extends SystemService {
mPendingWhileIdleAlarms.remove(i);
}
}
+ for (int i = mPendingBackgroundAlarms.size() - 1; i >= 0; i--) {
+ if (UserHandle.getUserId(mPendingBackgroundAlarms.keyAt(i)) == userHandle) {
+ mPendingBackgroundAlarms.removeAt(i);
+ }
+ }
for (int i = mLastAllowWhileIdleDispatch.size() - 1; i >= 0; i--) {
if (UserHandle.getUserId(mLastAllowWhileIdleDispatch.keyAt(i)) == userHandle) {
mLastAllowWhileIdleDispatch.removeAt(i);
@@ -2184,6 +2372,24 @@ class AlarmManagerService extends SystemService {
}
}
+ private boolean isBackgroundRestricted(Alarm alarm) {
+ if (alarm.alarmClock != null) {
+ // Don't block alarm clocks
+ return false;
+ }
+ if (alarm.operation != null
+ && (alarm.operation.isActivity() || alarm.operation.isForegroundService())) {
+ // Don't block starting foreground components
+ return false;
+ }
+ final String sourcePackage =
+ (alarm.operation != null) ? alarm.operation.getCreatorPackage() : alarm.packageName;
+ final int sourceUid = alarm.creatorUid;
+ return mForcedAppStandbyPackages.contains(sourcePackage) && !mForegroundUids.get(sourceUid)
+ && Arrays.binarySearch(mDeviceIdleUserWhitelist, UserHandle.getAppId(sourceUid))
+ < 0;
+ }
+
private native long init();
private native void close(long nativeData);
private native void set(long nativeData, int type, long seconds, long nanoseconds);
@@ -2239,6 +2445,19 @@ class AlarmManagerService extends SystemService {
continue;
}
}
+ if (isBackgroundRestricted(alarm)) {
+ // Alarms with FLAG_WAKE_FROM_IDLE or mPendingIdleUntil alarm are not deferred
+ if (DEBUG_BG_LIMIT) {
+ Slog.d(TAG, "Deferring alarm " + alarm + " due to user forced app standby");
+ }
+ ArrayList<Alarm> alarmsForUid = mPendingBackgroundAlarms.get(alarm.creatorUid);
+ if (alarmsForUid == null) {
+ alarmsForUid = new ArrayList<>();
+ mPendingBackgroundAlarms.put(alarm.creatorUid, alarmsForUid);
+ }
+ alarmsForUid.add(alarm);
+ continue;
+ }
alarm.count = 1;
triggerList.add(alarm);
@@ -2904,21 +3123,29 @@ class AlarmManagerService extends SystemService {
}
@Override public void onUidGone(int uid, boolean disabled) {
- if (disabled) {
- synchronized (mLock) {
+ synchronized (mLock) {
+ if (disabled) {
removeForStoppedLocked(uid);
}
+ mForegroundUids.delete(uid);
}
}
@Override public void onUidActive(int uid) {
+ synchronized (mLock) {
+ if (!mForegroundUids.get(uid)) {
+ mForegroundUids.put(uid, true);
+ sendPendingBackgroundAlarmsLocked(uid, null);
+ }
+ }
}
@Override public void onUidIdle(int uid, boolean disabled) {
- if (disabled) {
- synchronized (mLock) {
+ synchronized (mLock) {
+ if (disabled) {
removeForStoppedLocked(uid);
}
+ mForegroundUids.delete(uid);
}
}
@@ -2926,6 +3153,28 @@ class AlarmManagerService extends SystemService {
}
};
+ private final class AppOpsWatcher extends IAppOpsCallback.Stub {
+ @Override
+ public void opChanged(int op, int uid, String packageName) throws RemoteException {
+ synchronized (mLock) {
+ final int mode = mAppOpsService.checkOperation(op, uid, packageName);
+ if (DEBUG_BG_LIMIT) {
+ Slog.d(TAG,
+ "Appop changed for " + uid + ", " + packageName + " to " + mode);
+ }
+ final boolean changed;
+ if (mode != AppOpsManager.MODE_ALLOWED) {
+ changed = mForcedAppStandbyPackages.add(packageName);
+ } else {
+ changed = mForcedAppStandbyPackages.remove(packageName);
+ }
+ if (changed && mode == AppOpsManager.MODE_ALLOWED) {
+ sendPendingBackgroundAlarmsLocked(uid, packageName);
+ }
+ }
+ }
+ }
+
private final BroadcastStats getStatsLocked(PendingIntent pi) {
String pkg = pi.getCreatorPackage();
int uid = pi.getCreatorUid();
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index ec83a03f8aff..3ac6f2e847f6 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -128,7 +128,6 @@ import com.android.server.connectivity.DataConnectionStats;
import com.android.server.connectivity.KeepaliveTracker;
import com.android.server.connectivity.LingerMonitor;
import com.android.server.connectivity.MockableSystemProperties;
-import com.android.server.connectivity.Nat464Xlat;
import com.android.server.connectivity.NetworkAgentInfo;
import com.android.server.connectivity.NetworkDiagnostics;
import com.android.server.connectivity.NetworkMonitor;
@@ -456,6 +455,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
private static final int MAX_WAKELOCK_LOGS = 20;
private final LocalLog mWakelockLogs = new LocalLog(MAX_WAKELOCK_LOGS);
+ private int mTotalWakelockAcquisitions = 0;
+ private int mTotalWakelockReleases = 0;
+ private long mTotalWakelockDurationMs = 0;
+ private long mMaxWakelockDurationMs = 0;
+ private long mLastWakeLockAcquireTimestamp = 0;
// Array of <Network,ReadOnlyLocalLogs> tracking network validation and results
private static final int MAX_VALIDATION_LOGS = 10;
@@ -1947,6 +1951,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
pw.println();
pw.println("NetTransition WakeLock activity (most recent first):");
pw.increaseIndent();
+ pw.println("total acquisitions: " + mTotalWakelockAcquisitions);
+ pw.println("total releases: " + mTotalWakelockReleases);
+ pw.println("cumulative duration: " + (mTotalWakelockDurationMs / 1000) + "s");
+ pw.println("longest duration: " + (mMaxWakelockDurationMs / 1000) + "s");
+ if (mTotalWakelockAcquisitions > mTotalWakelockReleases) {
+ long duration = SystemClock.elapsedRealtime() - mLastWakeLockAcquireTimestamp;
+ pw.println("currently holding WakeLock for: " + (duration / 1000) + "s");
+ }
mWakelockLogs.reverseDump(fd, pw, args);
pw.decreaseIndent();
}
@@ -2011,16 +2023,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
break;
}
case NetworkAgent.EVENT_NETWORK_PROPERTIES_CHANGED: {
- if (VDBG) {
- log("Update of LinkProperties for " + nai.name() +
- "; created=" + nai.created +
- "; everConnected=" + nai.everConnected);
- }
- LinkProperties oldLp = nai.linkProperties;
- synchronized (nai) {
- nai.linkProperties = (LinkProperties)msg.obj;
- }
- if (nai.everConnected) updateLinkProperties(nai, oldLp);
+ handleUpdateLinkProperties(nai, (LinkProperties) msg.obj);
break;
}
case NetworkAgent.EVENT_NETWORK_INFO_CHANGED: {
@@ -2201,7 +2204,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// A network factory has connected. Send it all current NetworkRequests.
for (NetworkRequestInfo nri : mNetworkRequests.values()) {
if (nri.request.isListen()) continue;
- NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId);
+ NetworkAgentInfo nai = getNetworkForRequest(nri.request.requestId);
ac.sendMessage(android.net.NetworkFactory.CMD_REQUEST_NETWORK,
(nai != null ? nai.getCurrentScore() : 0), 0, nri.request);
}
@@ -2269,7 +2272,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
nai.networkMonitor.sendMessage(NetworkMonitor.CMD_NETWORK_DISCONNECTED);
mNetworkAgentInfos.remove(msg.replyTo);
- updateClat(null, nai.linkProperties, nai);
+ nai.maybeStopClat();
synchronized (mNetworkForNetId) {
// Remove the NetworkAgent, but don't mark the netId as
// available until we've told netd to delete it below.
@@ -2278,9 +2281,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
// Remove all previously satisfied requests.
for (int i = 0; i < nai.numNetworkRequests(); i++) {
NetworkRequest request = nai.requestAt(i);
- NetworkAgentInfo currentNetwork = mNetworkForRequestId.get(request.requestId);
+ NetworkAgentInfo currentNetwork = getNetworkForRequest(request.requestId);
if (currentNetwork != null && currentNetwork.network.netId == nai.network.netId) {
- mNetworkForRequestId.remove(request.requestId);
+ clearNetworkForRequest(request.requestId);
sendUpdatedScoreToFactories(request, 0);
}
}
@@ -2356,7 +2359,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
}
rematchAllNetworksAndRequests(null, 0);
- if (nri.request.isRequest() && mNetworkForRequestId.get(nri.request.requestId) == null) {
+ if (nri.request.isRequest() && getNetworkForRequest(nri.request.requestId) == null) {
sendUpdatedScoreToFactories(nri.request, 0);
}
}
@@ -2411,7 +2414,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// 2. Unvalidated WiFi will not be reaped when validated cellular
// is currently satisfying the request. This is desirable when
// WiFi ends up validating and out scoring cellular.
- mNetworkForRequestId.get(nri.request.requestId).getCurrentScore() <
+ getNetworkForRequest(nri.request.requestId).getCurrentScore() <
nai.getCurrentScoreAsValidated())) {
return false;
}
@@ -2438,7 +2441,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (mNetworkRequests.get(nri.request) == null) {
return;
}
- if (mNetworkForRequestId.get(nri.request.requestId) != null) {
+ if (getNetworkForRequest(nri.request.requestId) != null) {
return;
}
if (VDBG || (DBG && nri.request.isRequest())) {
@@ -2478,7 +2481,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mNetworkRequestInfoLogs.log("RELEASE " + nri);
if (nri.request.isRequest()) {
boolean wasKept = false;
- NetworkAgentInfo nai = mNetworkForRequestId.get(nri.request.requestId);
+ NetworkAgentInfo nai = getNetworkForRequest(nri.request.requestId);
if (nai != null) {
boolean wasBackgroundNetwork = nai.isBackgroundNetwork();
nai.removeRequest(nri.request.requestId);
@@ -2495,7 +2498,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
} else {
wasKept = true;
}
- mNetworkForRequestId.remove(nri.request.requestId);
+ clearNetworkForRequest(nri.request.requestId);
if (!wasBackgroundNetwork && nai.isBackgroundNetwork()) {
// Went from foreground to background.
updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities);
@@ -3014,6 +3017,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
return;
}
mNetTransitionWakeLock.acquire();
+ mLastWakeLockAcquireTimestamp = SystemClock.elapsedRealtime();
+ mTotalWakelockAcquisitions++;
}
mWakelockLogs.log("ACQUIRE for " + forWhom);
Message msg = mHandler.obtainMessage(EVENT_EXPIRE_NET_TRANSITION_WAKELOCK);
@@ -3046,6 +3051,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
return;
}
mNetTransitionWakeLock.release();
+ long lockDuration = SystemClock.elapsedRealtime() - mLastWakeLockAcquireTimestamp;
+ mTotalWakelockDurationMs += lockDuration;
+ mMaxWakelockDurationMs = Math.max(mMaxWakelockDurationMs, lockDuration);
+ mTotalWakelockReleases++;
}
mWakelockLogs.log(String.format("RELEASE (%s)", event));
}
@@ -4286,7 +4295,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
* and the are the highest scored network available.
* the are keyed off the Requests requestId.
*/
- // TODO: Yikes, this is accessed on multiple threads: add synchronization.
+ // NOTE: Accessed on multiple threads, must be synchronized on itself.
+ @GuardedBy("mNetworkForRequestId")
private final SparseArray<NetworkAgentInfo> mNetworkForRequestId =
new SparseArray<NetworkAgentInfo>();
@@ -4316,8 +4326,26 @@ public class ConnectivityService extends IConnectivityManager.Stub
// priority networks like Wi-Fi are active.
private final NetworkRequest mDefaultMobileDataRequest;
+ private NetworkAgentInfo getNetworkForRequest(int requestId) {
+ synchronized (mNetworkForRequestId) {
+ return mNetworkForRequestId.get(requestId);
+ }
+ }
+
+ private void clearNetworkForRequest(int requestId) {
+ synchronized (mNetworkForRequestId) {
+ mNetworkForRequestId.remove(requestId);
+ }
+ }
+
+ private void setNetworkForRequest(int requestId, NetworkAgentInfo nai) {
+ synchronized (mNetworkForRequestId) {
+ mNetworkForRequestId.put(requestId, nai);
+ }
+ }
+
private NetworkAgentInfo getDefaultNetwork() {
- return mNetworkForRequestId.get(mDefaultRequest.requestId);
+ return getNetworkForRequest(mDefaultRequest.requestId);
}
private boolean isDefaultNetwork(NetworkAgentInfo nai) {
@@ -4333,11 +4361,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
int currentScore, NetworkMisc networkMisc) {
enforceConnectivityInternalPermission();
+ LinkProperties lp = new LinkProperties(linkProperties);
+ lp.ensureDirectlyConnectedRoutes();
// TODO: Instead of passing mDefaultRequest, provide an API to determine whether a Network
// satisfies mDefaultRequest.
final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(),
- new Network(reserveNetId()), new NetworkInfo(networkInfo), new LinkProperties(
- linkProperties), new NetworkCapabilities(networkCapabilities), currentScore,
+ new Network(reserveNetId()), new NetworkInfo(networkInfo), lp,
+ new NetworkCapabilities(networkCapabilities), currentScore,
mContext, mTrackerHandler, new NetworkMisc(networkMisc), mDefaultRequest, this);
synchronized (this) {
nai.networkMonitor.systemReady = mSystemReady;
@@ -4382,7 +4412,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
updateRoutes(newLp, oldLp, netId);
updateDnses(newLp, oldLp, netId);
- updateClat(newLp, oldLp, networkAgent);
+ // Start or stop clat accordingly to network state.
+ networkAgent.updateClat(mNetd);
if (isDefaultNetwork(networkAgent)) {
handleApplyDefaultProxy(newLp.getHttpProxy());
} else {
@@ -4397,18 +4428,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
mKeepaliveTracker.handleCheckKeepalivesStillValid(networkAgent);
}
- private void updateClat(LinkProperties newLp, LinkProperties oldLp, NetworkAgentInfo nai) {
- final boolean wasRunningClat = nai.clatd != null && nai.clatd.isStarted();
- final boolean shouldRunClat = Nat464Xlat.requiresClat(nai);
-
- if (!wasRunningClat && shouldRunClat) {
- nai.clatd = new Nat464Xlat(mContext, mNetd, mTrackerHandler, nai);
- nai.clatd.start();
- } else if (wasRunningClat && !shouldRunClat) {
- nai.clatd.stop();
- }
- }
-
private void wakeupModifyInterface(String iface, NetworkCapabilities caps, boolean add) {
// Marks are only available on WiFi interaces. Checking for
// marks on unsupported interfaces is harmless.
@@ -4442,12 +4461,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
private void updateInterfaces(LinkProperties newLp, LinkProperties oldLp, int netId,
NetworkCapabilities caps) {
- CompareResult<String> interfaceDiff = new CompareResult<String>();
- if (oldLp != null) {
- interfaceDiff = oldLp.compareAllInterfaceNames(newLp);
- } else if (newLp != null) {
- interfaceDiff.added = newLp.getAllInterfaceNames();
- }
+ CompareResult<String> interfaceDiff = new CompareResult<String>(
+ oldLp != null ? oldLp.getAllInterfaceNames() : null,
+ newLp != null ? newLp.getAllInterfaceNames() : null);
for (String iface : interfaceDiff.added) {
try {
if (DBG) log("Adding iface " + iface + " to network " + netId);
@@ -4473,12 +4489,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
* @return true if routes changed between oldLp and newLp
*/
private boolean updateRoutes(LinkProperties newLp, LinkProperties oldLp, int netId) {
- CompareResult<RouteInfo> routeDiff = new CompareResult<RouteInfo>();
- if (oldLp != null) {
- routeDiff = oldLp.compareAllRoutes(newLp);
- } else if (newLp != null) {
- routeDiff.added = newLp.getAllRoutes();
- }
+ // Compare the route diff to determine which routes should be added and removed.
+ CompareResult<RouteInfo> routeDiff = new CompareResult<RouteInfo>(
+ oldLp != null ? oldLp.getAllRoutes() : null,
+ newLp != null ? newLp.getAllRoutes() : null);
// add routes before removing old in case it helps with continuous connectivity
@@ -4643,6 +4657,27 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
}
+ public void handleUpdateLinkProperties(NetworkAgentInfo nai, LinkProperties newLp) {
+ if (mNetworkForNetId.get(nai.network.netId) != nai) {
+ // Ignore updates for disconnected networks
+ return;
+ }
+ // newLp is already a defensive copy.
+ newLp.ensureDirectlyConnectedRoutes();
+ if (VDBG) {
+ log("Update of LinkProperties for " + nai.name() +
+ "; created=" + nai.created +
+ "; everConnected=" + nai.everConnected);
+ }
+ LinkProperties oldLp = nai.linkProperties;
+ synchronized (nai) {
+ nai.linkProperties = newLp;
+ }
+ if (nai.everConnected) {
+ updateLinkProperties(nai, oldLp);
+ }
+ }
+
private void sendUpdatedScoreToFactories(NetworkAgentInfo nai) {
for (int i = 0; i < nai.numNetworkRequests(); i++) {
NetworkRequest nr = nai.requestAt(i);
@@ -4864,7 +4899,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// requests or not, and doesn't affect the network's score.
if (nri.request.isListen()) continue;
- final NetworkAgentInfo currentNetwork = mNetworkForRequestId.get(nri.request.requestId);
+ final NetworkAgentInfo currentNetwork = getNetworkForRequest(nri.request.requestId);
final boolean satisfies = newNetwork.satisfies(nri.request);
if (newNetwork == currentNetwork && satisfies) {
if (VDBG) {
@@ -4896,7 +4931,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (VDBG) log(" accepting network in place of null");
}
newNetwork.unlingerRequest(nri.request);
- mNetworkForRequestId.put(nri.request.requestId, newNetwork);
+ setNetworkForRequest(nri.request.requestId, newNetwork);
if (!newNetwork.addRequest(nri.request)) {
Slog.wtf(TAG, "BUG: " + newNetwork.name() + " already has " + nri.request);
}
@@ -4930,7 +4965,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
newNetwork.removeRequest(nri.request.requestId);
if (currentNetwork == newNetwork) {
- mNetworkForRequestId.remove(nri.request.requestId);
+ clearNetworkForRequest(nri.request.requestId);
sendUpdatedScoreToFactories(nri.request, 0);
} else {
Slog.wtf(TAG, "BUG: Removing request " + nri.request.requestId + " from " +
diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java
index 0c2cf60ccea7..abbc89e45c99 100644
--- a/services/core/java/com/android/server/DeviceIdleController.java
+++ b/services/core/java/com/android/server/DeviceIdleController.java
@@ -35,7 +35,6 @@ import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.TriggerEvent;
import android.hardware.TriggerEventListener;
-import android.hardware.display.DisplayManager;
import android.location.LocationRequest;
import android.location.Location;
import android.location.LocationListener;
@@ -76,7 +75,6 @@ import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.TimeUtils;
import android.util.Xml;
-import android.view.Display;
import com.android.internal.app.IBatteryStats;
import com.android.internal.os.AtomicFile;
@@ -123,14 +121,12 @@ public class DeviceIdleController extends SystemService
private ConnectivityService mConnectivityService;
private AlarmManagerService.LocalService mLocalAlarmManager;
private INetworkPolicyManager mNetworkPolicyManager;
- private DisplayManager mDisplayManager;
private SensorManager mSensorManager;
private Sensor mMotionSensor;
private LocationManager mLocationManager;
private LocationRequest mLocationRequest;
private Intent mIdleIntent;
private Intent mLightIdleIntent;
- private Display mCurDisplay;
private AnyMotionDetector mAnyMotionDetector;
private boolean mLightEnabled;
private boolean mDeepEnabled;
@@ -402,19 +398,11 @@ public class DeviceIdleController extends SystemService
}
};
- private final DisplayManager.DisplayListener mDisplayListener
- = new DisplayManager.DisplayListener() {
- @Override public void onDisplayAdded(int displayId) {
- }
-
- @Override public void onDisplayRemoved(int displayId) {
- }
-
- @Override public void onDisplayChanged(int displayId) {
- if (displayId == Display.DEFAULT_DISPLAY) {
- synchronized (DeviceIdleController.this) {
- updateDisplayLocked();
- }
+ private final BroadcastReceiver mInteractivityReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ synchronized (DeviceIdleController.this) {
+ updateInteractivityLocked();
}
}
};
@@ -1412,8 +1400,6 @@ public class DeviceIdleController extends SystemService
mNetworkPolicyManager = INetworkPolicyManager.Stub.asInterface(
ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
mNetworkPolicyManagerInternal = getLocalService(NetworkPolicyManagerInternal.class);
- mDisplayManager = (DisplayManager) getContext().getSystemService(
- Context.DISPLAY_SERVICE);
mSensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
int sigMotionSensorId = getContext().getResources().getInteger(
com.android.internal.R.integer.config_autoPowerModeAnyMotionSensor);
@@ -1468,11 +1454,16 @@ public class DeviceIdleController extends SystemService
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
getContext().registerReceiver(mReceiver, filter);
+ filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_SCREEN_OFF);
+ filter.addAction(Intent.ACTION_SCREEN_ON);
+ getContext().registerReceiver(mInteractivityReceiver, filter);
+
mLocalActivityManager.setDeviceIdleWhitelist(mPowerSaveWhitelistAllAppIdArray);
mLocalPowerManager.setDeviceIdleWhitelist(mPowerSaveWhitelistAllAppIdArray);
mLocalAlarmManager.setDeviceIdleUserWhitelist(mPowerSaveWhitelistUserAppIdArray);
- mDisplayManager.registerDisplayListener(mDisplayListener, null);
- updateDisplayLocked();
+
+ updateInteractivityLocked();
}
updateConnectivityState(null);
}
@@ -1830,13 +1821,12 @@ public class DeviceIdleController extends SystemService
}
}
- void updateDisplayLocked() {
- mCurDisplay = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY);
- // We consider any situation where the display is showing something to be it on,
- // because if there is anything shown we are going to be updating it at some
- // frequency so can't be allowed to go into deep sleeps.
- boolean screenOn = mCurDisplay.getState() == Display.STATE_ON;
- if (DEBUG) Slog.d(TAG, "updateDisplayLocked: screenOn=" + screenOn);
+ void updateInteractivityLocked() {
+ // The interactivity state from the power manager tells us whether the display is
+ // in a state that we need to keep things running so they will update at a normal
+ // frequency.
+ boolean screenOn = mPowerManager.isInteractive();
+ if (DEBUG) Slog.d(TAG, "updateInteractivityLocked: screenOn=" + screenOn);
if (!screenOn && mScreenOn) {
mScreenOn = false;
if (!mForceIdle) {
@@ -3088,7 +3078,6 @@ public class DeviceIdleController extends SystemService
pw.print(" mDeepEnabled="); pw.println(mDeepEnabled);
pw.print(" mForceIdle="); pw.println(mForceIdle);
pw.print(" mMotionSensor="); pw.println(mMotionSensor);
- pw.print(" mCurDisplay="); pw.println(mCurDisplay);
pw.print(" mScreenOn="); pw.println(mScreenOn);
pw.print(" mNetworkConnected="); pw.println(mNetworkConnected);
pw.print(" mCharging="); pw.println(mCharging);
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 966e553a6396..340d672df21c 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -1542,18 +1542,7 @@ public class LocationManagerService extends ILocationManager.Stub {
*/
@Override
public List<String> getAllProviders() {
- ArrayList<String> out;
- synchronized (mLock) {
- out = new ArrayList<>(mProviders.size());
- for (LocationProviderInterface provider : mProviders) {
- String name = provider.getName();
- if (LocationManager.FUSED_PROVIDER.equals(name)) {
- continue;
- }
- out.add(name);
- }
- }
-
+ List<String> out = getProviders(null /*criteria*/, false /*enabledOnly*/);
if (D) Log.d(TAG, "getAllProviders()=" + out);
return out;
}
diff --git a/services/core/java/com/android/server/NativeDaemonConnector.java b/services/core/java/com/android/server/NativeDaemonConnector.java
index f5f773214124..b5a8332375f4 100644
--- a/services/core/java/com/android/server/NativeDaemonConnector.java
+++ b/services/core/java/com/android/server/NativeDaemonConnector.java
@@ -24,11 +24,13 @@ import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
import android.os.SystemClock;
+import android.os.SystemProperties;
import android.util.LocalLog;
import android.util.Slog;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.Preconditions;
+import com.android.server.power.ShutdownThread;
import com.google.android.collect.Lists;
import java.io.FileDescriptor;
@@ -136,6 +138,12 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo
listenToSocket();
} catch (Exception e) {
loge("Error in NativeDaemonConnector: " + e);
+ String shutdownAct = SystemProperties.get(
+ ShutdownThread.SHUTDOWN_ACTION_PROPERTY, "");
+ if (shutdownAct != null && shutdownAct.length() > 0) {
+ // The device is in middle of shutdown.
+ break;
+ }
SystemClock.sleep(5000);
}
}
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index f17c770becde..2f95aa2cf2f6 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -76,6 +76,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.INetworkActivityListener;
import android.os.INetworkManagementService;
+import android.os.PersistableBundle;
import android.os.PowerManager;
import android.os.Process;
import android.os.RemoteCallbackList;
@@ -1897,38 +1898,34 @@ public class NetworkManagementService extends INetworkManagementService.Stub
return new NetworkStats(SystemClock.elapsedRealtime(), 0);
}
- final NativeDaemonEvent[] events;
+ final PersistableBundle bundle;
try {
- events = mConnector.executeForList("bandwidth", "gettetherstats");
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ bundle = mNetdService.tetherGetStats();
+ } catch (RemoteException | ServiceSpecificException e) {
+ throw new IllegalStateException("problem parsing tethering stats: ", e);
}
- final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 1);
- for (NativeDaemonEvent event : events) {
- if (event.getCode() != TetheringStatsListResult) continue;
- // 114 ifaceIn ifaceOut rx_bytes rx_packets tx_bytes tx_packets
- final StringTokenizer tok = new StringTokenizer(event.getMessage());
- try {
- final String ifaceIn = tok.nextToken();
- final String ifaceOut = tok.nextToken();
+ final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(),
+ bundle.size());
+ final NetworkStats.Entry entry = new NetworkStats.Entry();
- final NetworkStats.Entry entry = new NetworkStats.Entry();
- entry.iface = ifaceOut;
+ for (String iface : bundle.keySet()) {
+ long[] statsArray = bundle.getLongArray(iface);
+ try {
+ entry.iface = iface;
entry.uid = UID_TETHERING;
entry.set = SET_DEFAULT;
entry.tag = TAG_NONE;
- entry.rxBytes = Long.parseLong(tok.nextToken());
- entry.rxPackets = Long.parseLong(tok.nextToken());
- entry.txBytes = Long.parseLong(tok.nextToken());
- entry.txPackets = Long.parseLong(tok.nextToken());
+ entry.rxBytes = statsArray[INetd.TETHER_STATS_RX_BYTES];
+ entry.rxPackets = statsArray[INetd.TETHER_STATS_RX_PACKETS];
+ entry.txBytes = statsArray[INetd.TETHER_STATS_TX_BYTES];
+ entry.txPackets = statsArray[INetd.TETHER_STATS_TX_PACKETS];
stats.combineValues(entry);
- } catch (NoSuchElementException e) {
- throw new IllegalStateException("problem parsing tethering stats: " + event);
- } catch (NumberFormatException e) {
- throw new IllegalStateException("problem parsing tethering stats: " + event);
+ } catch (ArrayIndexOutOfBoundsException e) {
+ throw new IllegalStateException("invalid tethering stats for " + iface, e);
}
}
+
return stats;
}
diff --git a/services/core/java/com/android/server/RecoverySystemService.java b/services/core/java/com/android/server/RecoverySystemService.java
index 3c8c699a65bb..1517887efec2 100644
--- a/services/core/java/com/android/server/RecoverySystemService.java
+++ b/services/core/java/com/android/server/RecoverySystemService.java
@@ -285,8 +285,9 @@ public final class RecoverySystemService extends SystemService {
// Send the BCB commands if it's to setup BCB.
if (isSetup) {
- dos.writeInt(command.length());
- dos.writeBytes(command);
+ byte[] cmdUtf8 = command.getBytes("UTF-8");
+ dos.writeInt(cmdUtf8.length);
+ dos.write(cmdUtf8, 0, cmdUtf8.length);
dos.flush();
}
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index 1ca0112cb4f3..c7e22be1972d 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -56,10 +56,14 @@ import android.os.FileUtils;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
+import android.os.IVold;
+import android.os.IVoldListener;
+import android.os.IVoldTaskListener;
import android.os.Looper;
import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.os.ParcelableException;
+import android.os.PersistableBundle;
import android.os.PowerManager;
import android.os.Process;
import android.os.RemoteCallbackList;
@@ -96,6 +100,7 @@ import android.util.Xml;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.IMediaContainerService;
import com.android.internal.os.AppFuseMount;
+import com.android.internal.os.BackgroundThread;
import com.android.internal.os.FuseUnavailableMountException;
import com.android.internal.os.SomeArgs;
import com.android.internal.os.Zygote;
@@ -106,9 +111,6 @@ import com.android.internal.util.HexDump;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.internal.widget.LockPatternUtils;
-import com.android.server.NativeDaemonConnector.Command;
-import com.android.server.NativeDaemonConnector.SensitiveArg;
-import com.android.server.pm.PackageManagerException;
import com.android.server.pm.PackageManagerService;
import com.android.server.storage.AppFuseBridge;
@@ -134,7 +136,6 @@ import java.security.spec.KeySpec;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -142,6 +143,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -156,8 +158,7 @@ import javax.crypto.spec.PBEKeySpec;
* watch for and manage dynamically added storage, such as SD cards and USB mass
* storage. Also decides how storage should be presented to users on the device.
*/
-class StorageManagerService extends IStorageManager.Stub
- implements INativeDaemonConnectorCallbacks, Watchdog.Monitor {
+class StorageManagerService extends IStorageManager.Stub implements Watchdog.Monitor {
// Static direct instance pointer for the tightly-coupled idle service to use
static StorageManagerService sSelf = null;
@@ -221,70 +222,9 @@ class StorageManagerService extends IStorageManager.Stub
private static final String TAG_STORAGE_BENCHMARK = "storage_benchmark";
private static final String TAG_STORAGE_TRIM = "storage_trim";
- private static final String VOLD_TAG = "VoldConnector";
- private static final String CRYPTD_TAG = "CryptdConnector";
-
- /** Maximum number of ASEC containers allowed to be mounted. */
- private static final int MAX_CONTAINERS = 250;
-
/** Magic value sent by MoveTask.cpp */
private static final int MOVE_STATUS_COPY_FINISHED = 82;
- /*
- * Internal vold response code constants
- */
- class VoldResponseCode {
- /*
- * 100 series - Requestion action was initiated; expect another reply
- * before proceeding with a new command.
- */
- public static final int VolumeListResult = 110;
- public static final int AsecListResult = 111;
- public static final int StorageUsersListResult = 112;
- public static final int CryptfsGetfieldResult = 113;
-
- /*
- * 200 series - Requestion action has been successfully completed.
- */
- public static final int ShareStatusResult = 210;
- public static final int AsecPathResult = 211;
- public static final int ShareEnabledResult = 212;
-
- /*
- * 400 series - Command was accepted, but the requested action
- * did not take place.
- */
- public static final int OpFailedNoMedia = 401;
- public static final int OpFailedMediaBlank = 402;
- public static final int OpFailedMediaCorrupt = 403;
- public static final int OpFailedVolNotMounted = 404;
- public static final int OpFailedStorageBusy = 405;
- public static final int OpFailedStorageNotFound = 406;
-
- /*
- * 600 series - Unsolicited broadcasts.
- */
- public static final int DISK_CREATED = 640;
- public static final int DISK_SIZE_CHANGED = 641;
- public static final int DISK_LABEL_CHANGED = 642;
- public static final int DISK_SCANNED = 643;
- public static final int DISK_SYS_PATH_CHANGED = 644;
- public static final int DISK_DESTROYED = 649;
-
- public static final int VOLUME_CREATED = 650;
- public static final int VOLUME_STATE_CHANGED = 651;
- public static final int VOLUME_FS_TYPE_CHANGED = 652;
- public static final int VOLUME_FS_UUID_CHANGED = 653;
- public static final int VOLUME_FS_LABEL_CHANGED = 654;
- public static final int VOLUME_PATH_CHANGED = 655;
- public static final int VOLUME_INTERNAL_PATH_CHANGED = 656;
- public static final int VOLUME_DESTROYED = 659;
-
- public static final int MOVE_STATUS = 660;
- public static final int BENCHMARK_RESULT = 661;
- public static final int TRIM_RESULT = 662;
- }
-
private static final int VERSION_INIT = 1;
private static final int VERSION_ADD_PRIMARY = 2;
private static final int VERSION_FIX_PRIMARY = 3;
@@ -465,11 +405,7 @@ class StorageManagerService extends IStorageManager.Stub
private final Context mContext;
- private final NativeDaemonConnector mConnector;
- private final NativeDaemonConnector mCryptConnector;
-
- private final Thread mConnectorThread;
- private final Thread mCryptConnectorThread;
+ private volatile IVold mVold;
private volatile boolean mSystemReady = false;
private volatile boolean mBootCompleted = false;
@@ -480,21 +416,11 @@ class StorageManagerService extends IStorageManager.Stub
private final Callbacks mCallbacks;
private final LockPatternUtils mLockPatternUtils;
- // Two connectors - mConnector & mCryptConnector
- private final CountDownLatch mConnectedSignal = new CountDownLatch(2);
- private final CountDownLatch mAsecsScanned = new CountDownLatch(1);
-
private final Object mUnmountLock = new Object();
@GuardedBy("mUnmountLock")
private CountDownLatch mUnmountSignal;
/**
- * Private hash of currently mounted secure containers.
- * Used as a lock in methods to manipulate secure containers.
- */
- final private HashSet<String> mAsecMountSet = new HashSet<String>();
-
- /**
* The size of the crypto algorithm key in bits for OBB files. Currently
* Twofish is used which takes 128-bit keys.
*/
@@ -521,13 +447,13 @@ class StorageManagerService extends IStorageManager.Stub
class ObbState implements IBinder.DeathRecipient {
public ObbState(String rawPath, String canonicalPath, int callingUid,
- IObbActionListener token, int nonce) {
+ IObbActionListener token, int nonce, String volId) {
this.rawPath = rawPath;
this.canonicalPath = canonicalPath;
-
this.ownerGid = UserHandle.getSharedAppGid(callingUid);
this.token = token;
this.nonce = nonce;
+ this.volId = volId;
}
final String rawPath;
@@ -541,6 +467,8 @@ class StorageManagerService extends IStorageManager.Stub
// Identifier to pass back to the token
final int nonce;
+ String volId;
+
public IBinder getBinder() {
return token.asBinder();
}
@@ -567,6 +495,7 @@ class StorageManagerService extends IStorageManager.Stub
sb.append(",ownerGid=").append(ownerGid);
sb.append(",token=").append(token);
sb.append(",binder=").append(getBinder());
+ sb.append(",volId=").append(volId);
sb.append('}');
return sb.toString();
}
@@ -604,7 +533,7 @@ class StorageManagerService extends IStorageManager.Stub
if (DEBUG_OBB)
Slog.i(TAG, "onServiceDisconnected");
}
- };
+ }
// Used in the ObbActionHandler
private IMediaContainerService mContainerService = null;
@@ -643,13 +572,6 @@ class StorageManagerService extends IStorageManager.Stub
break;
}
case H_FSTRIM: {
- if (!isReady()) {
- Slog.i(TAG, "fstrim requested, but no daemon connection yet; trying again");
- sendMessageDelayed(obtainMessage(H_FSTRIM, msg.obj),
- DateUtils.SECOND_IN_MILLIS);
- break;
- }
-
Slog.i(TAG, "Running fstrim idle maintenance");
// Remember when we kicked it off
@@ -660,8 +582,8 @@ class StorageManagerService extends IStorageManager.Stub
Slog.e(TAG, "Unable to record last fstrim!");
}
- final int flags = shouldBenchmark() ? StorageManager.FSTRIM_FLAG_BENCHMARK : 0;
- fstrim(flags);
+ // TODO: Reintroduce shouldBenchmark() test
+ fstrim(0);
// invoke the completion callback, if any
// TODO: fstrim is non-blocking, so remove this useless callback
@@ -675,13 +597,15 @@ class StorageManagerService extends IStorageManager.Stub
final IStorageShutdownObserver obs = (IStorageShutdownObserver) msg.obj;
boolean success = false;
try {
- success = mConnector.execute("volume", "shutdown").isClassOk();
- } catch (NativeDaemonConnectorException ignored) {
+ mVold.shutdown();
+ success = true;
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
if (obs != null) {
try {
obs.onShutDownComplete(success ? 0 : -1);
- } catch (RemoteException ignored) {
+ } catch (Exception ignored) {
}
}
break;
@@ -693,9 +617,9 @@ class StorageManagerService extends IStorageManager.Stub
break;
}
try {
- mConnector.execute("volume", "mount", vol.id, vol.mountFlags,
- vol.mountUserId);
- } catch (NativeDaemonConnectorException ignored) {
+ mVold.mount(vol.id, vol.mountFlags, vol.mountUserId);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
break;
}
@@ -755,7 +679,7 @@ class StorageManagerService extends IStorageManager.Stub
if (Intent.ACTION_USER_ADDED.equals(action)) {
final UserManager um = mContext.getSystemService(UserManager.class);
final int userSerialNumber = um.getUserSerialNumber(userId);
- mConnector.execute("volume", "user_added", userId, userSerialNumber);
+ mVold.onUserAdded(userId, userSerialNumber);
} else if (Intent.ACTION_USER_REMOVED.equals(action)) {
synchronized (mVolumes) {
final int size = mVolumes.size();
@@ -767,21 +691,17 @@ class StorageManagerService extends IStorageManager.Stub
}
}
}
- mConnector.execute("volume", "user_removed", userId);
+ mVold.onUserRemoved(userId);
}
- } catch (NativeDaemonConnectorException e) {
- Slog.w(TAG, "Failed to send user details to vold", e);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
};
@Override
public void waitForAsecScan() {
- waitForLatch(mAsecsScanned, "mAsecsScanned");
- }
-
- private void waitForReady() {
- waitForLatch(mConnectedSignal, "mConnectedSignal");
+ throw new UnsupportedOperationException();
}
private void waitForLatch(CountDownLatch latch, String condition) {
@@ -812,14 +732,6 @@ class StorageManagerService extends IStorageManager.Stub
}
}
- private boolean isReady() {
- try {
- return mConnectedSignal.await(0, TimeUnit.MILLISECONDS);
- } catch (InterruptedException e) {
- return false;
- }
- }
-
private void handleSystemReady() {
initIfReadyAndConnected();
resetIfReadyAndConnected();
@@ -886,13 +798,13 @@ class StorageManagerService extends IStorageManager.Stub
for (UserInfo user : users) {
try {
if (initLocked) {
- mCryptConnector.execute("cryptfs", "lock_user_key", user.id);
+ mVold.lockUserKey(user.id);
} else {
- mCryptConnector.execute("cryptfs", "unlock_user_key", user.id,
- user.serialNumber, "!", "!");
+ mVold.unlockUserKey(user.id, user.serialNumber, encodeBytes(null),
+ encodeBytes(null));
}
- } catch (NativeDaemonConnectorException e) {
- Slog.w(TAG, "Failed to init vold", e);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
}
@@ -916,17 +828,17 @@ class StorageManagerService extends IStorageManager.Stub
}
try {
- mConnector.execute("volume", "reset");
+ mVold.reset();
// Tell vold about all existing and started users
for (UserInfo user : users) {
- mConnector.execute("volume", "user_added", user.id, user.serialNumber);
+ mVold.onUserAdded(user.id, user.serialNumber);
}
for (int userId : systemUnlockedUsers) {
- mConnector.execute("volume", "user_started", userId);
+ mVold.onUserStarted(userId);
}
- } catch (NativeDaemonConnectorException e) {
- Slog.w(TAG, "Failed to reset vold", e);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
}
@@ -938,8 +850,9 @@ class StorageManagerService extends IStorageManager.Stub
// staging area is ready so it's ready for zygote-forked apps to
// bind mount against.
try {
- mConnector.execute("volume", "user_started", userId);
- } catch (NativeDaemonConnectorException ignored) {
+ mVold.onUserStarted(userId);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
// Record user as started so newly mounted volumes kick off events
@@ -963,8 +876,9 @@ class StorageManagerService extends IStorageManager.Stub
Slog.d(TAG, "onCleanupUser " + userId);
try {
- mConnector.execute("volume", "user_stopped", userId);
- } catch (NativeDaemonConnectorException ignored) {
+ mVold.onUserStopped(userId);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
synchronized (mLock) {
@@ -988,10 +902,6 @@ class StorageManagerService extends IStorageManager.Stub
return mLastMaintenance;
}
- /**
- * Callback from NativeDaemonConnector
- */
- @Override
public void onDaemonConnected() {
mDaemonConnected = true;
mHandler.obtainMessage(H_DAEMON_CONNECTED).sendToTarget();
@@ -1001,27 +911,11 @@ class StorageManagerService extends IStorageManager.Stub
initIfReadyAndConnected();
resetIfReadyAndConnected();
- /*
- * Now that we've done our initialization, release
- * the hounds!
- */
- mConnectedSignal.countDown();
- if (mConnectedSignal.getCount() != 0) {
- // More daemons need to connect
- return;
- }
-
// On an encrypted device we can't see system properties yet, so pull
// the system locale out of the mount service.
if ("".equals(SystemProperties.get("vold.encrypt_progress"))) {
copyLocaleFromMountService();
}
-
- // Let package manager load internal ASECs.
- mPms.scanAvailableAsecs();
-
- // Notify people waiting for ASECs to be scanned that it's done.
- mAsecsScanned.countDown();
}
private void copyLocaleFromMountService() {
@@ -1050,30 +944,10 @@ class StorageManagerService extends IStorageManager.Stub
SystemProperties.set("persist.sys.locale", locale.toLanguageTag());
}
- /**
- * Callback from NativeDaemonConnector
- */
- @Override
- public boolean onCheckHoldWakeLock(int code) {
- return false;
- }
-
- /**
- * Callback from NativeDaemonConnector
- */
- @Override
- public boolean onEvent(int code, String raw, String[] cooked) {
- synchronized (mLock) {
- return onEventLocked(code, raw, cooked);
- }
- }
-
- private boolean onEventLocked(int code, String raw, String[] cooked) {
- switch (code) {
- case VoldResponseCode.DISK_CREATED: {
- if (cooked.length != 3) break;
- final String id = cooked[1];
- int flags = Integer.parseInt(cooked[2]);
+ private final IVoldListener mListener = new IVoldListener.Stub() {
+ @Override
+ public void onDiskCreated(String diskId, int flags) {
+ synchronized (mLock) {
if (SystemProperties.getBoolean(StorageManager.PROP_FORCE_ADOPTABLE, false)
|| mForceAdoptable) {
flags |= DiskInfo.FLAG_ADOPTABLE;
@@ -1083,178 +957,106 @@ class StorageManagerService extends IStorageManager.Stub
&& !SystemProperties.getBoolean(StorageManager.PROP_ADOPTABLE_FBE, false)) {
flags &= ~DiskInfo.FLAG_ADOPTABLE;
}
- mDisks.put(id, new DiskInfo(id, flags));
- break;
- }
- case VoldResponseCode.DISK_SIZE_CHANGED: {
- if (cooked.length != 3) break;
- final DiskInfo disk = mDisks.get(cooked[1]);
- if (disk != null) {
- disk.size = Long.parseLong(cooked[2]);
- }
- break;
- }
- case VoldResponseCode.DISK_LABEL_CHANGED: {
- final DiskInfo disk = mDisks.get(cooked[1]);
- if (disk != null) {
- final StringBuilder builder = new StringBuilder();
- for (int i = 2; i < cooked.length; i++) {
- builder.append(cooked[i]).append(' ');
- }
- disk.label = builder.toString().trim();
- }
- break;
+ mDisks.put(diskId, new DiskInfo(diskId, flags));
}
- case VoldResponseCode.DISK_SCANNED: {
- if (cooked.length != 2) break;
- final DiskInfo disk = mDisks.get(cooked[1]);
+ }
+
+ @Override
+ public void onDiskScanned(String diskId) {
+ synchronized (mLock) {
+ final DiskInfo disk = mDisks.get(diskId);
if (disk != null) {
onDiskScannedLocked(disk);
}
- break;
}
- case VoldResponseCode.DISK_SYS_PATH_CHANGED: {
- if (cooked.length != 3) break;
- final DiskInfo disk = mDisks.get(cooked[1]);
+ }
+
+ @Override
+ public void onDiskMetadataChanged(String diskId, long sizeBytes, String label,
+ String sysPath) {
+ synchronized (mLock) {
+ final DiskInfo disk = mDisks.get(diskId);
if (disk != null) {
- disk.sysPath = cooked[2];
+ disk.size = sizeBytes;
+ disk.label = label;
+ disk.sysPath = sysPath;
}
- break;
}
- case VoldResponseCode.DISK_DESTROYED: {
- if (cooked.length != 2) break;
- final DiskInfo disk = mDisks.remove(cooked[1]);
+ }
+
+ @Override
+ public void onDiskDestroyed(String diskId) {
+ synchronized (mLock) {
+ final DiskInfo disk = mDisks.remove(diskId);
if (disk != null) {
mCallbacks.notifyDiskDestroyed(disk);
}
- break;
}
+ }
- case VoldResponseCode.VOLUME_CREATED: {
- final String id = cooked[1];
- final int type = Integer.parseInt(cooked[2]);
- final String diskId = TextUtils.nullIfEmpty(cooked[3]);
- final String partGuid = TextUtils.nullIfEmpty(cooked[4]);
-
+ @Override
+ public void onVolumeCreated(String volId, int type, String diskId, String partGuid) {
+ synchronized (mLock) {
final DiskInfo disk = mDisks.get(diskId);
- final VolumeInfo vol = new VolumeInfo(id, type, disk, partGuid);
- mVolumes.put(id, vol);
+ final VolumeInfo vol = new VolumeInfo(volId, type, disk, partGuid);
+ mVolumes.put(volId, vol);
onVolumeCreatedLocked(vol);
- break;
}
- case VoldResponseCode.VOLUME_STATE_CHANGED: {
- if (cooked.length != 3) break;
- final VolumeInfo vol = mVolumes.get(cooked[1]);
+ }
+
+ @Override
+ public void onVolumeStateChanged(String volId, int state) {
+ synchronized (mLock) {
+ final VolumeInfo vol = mVolumes.get(volId);
if (vol != null) {
final int oldState = vol.state;
- final int newState = Integer.parseInt(cooked[2]);
+ final int newState = state;
vol.state = newState;
onVolumeStateChangedLocked(vol, oldState, newState);
}
- break;
- }
- case VoldResponseCode.VOLUME_FS_TYPE_CHANGED: {
- if (cooked.length != 3) break;
- final VolumeInfo vol = mVolumes.get(cooked[1]);
- if (vol != null) {
- vol.fsType = cooked[2];
- }
- break;
}
- case VoldResponseCode.VOLUME_FS_UUID_CHANGED: {
- if (cooked.length != 3) break;
- final VolumeInfo vol = mVolumes.get(cooked[1]);
- if (vol != null) {
- vol.fsUuid = cooked[2];
- }
- break;
- }
- case VoldResponseCode.VOLUME_FS_LABEL_CHANGED: {
- final VolumeInfo vol = mVolumes.get(cooked[1]);
- if (vol != null) {
- final StringBuilder builder = new StringBuilder();
- for (int i = 2; i < cooked.length; i++) {
- builder.append(cooked[i]).append(' ');
- }
- vol.fsLabel = builder.toString().trim();
- }
- // TODO: notify listeners that label changed
- break;
- }
- case VoldResponseCode.VOLUME_PATH_CHANGED: {
- if (cooked.length != 3) break;
- final VolumeInfo vol = mVolumes.get(cooked[1]);
+ }
+
+ @Override
+ public void onVolumeMetadataChanged(String volId, String fsType, String fsUuid,
+ String fsLabel) {
+ synchronized (mLock) {
+ final VolumeInfo vol = mVolumes.get(volId);
if (vol != null) {
- vol.path = cooked[2];
+ vol.fsType = fsType;
+ vol.fsUuid = fsUuid;
+ vol.fsLabel = fsLabel;
}
- break;
}
- case VoldResponseCode.VOLUME_INTERNAL_PATH_CHANGED: {
- if (cooked.length != 3) break;
- final VolumeInfo vol = mVolumes.get(cooked[1]);
+ }
+
+ @Override
+ public void onVolumePathChanged(String volId, String path) {
+ synchronized (mLock) {
+ final VolumeInfo vol = mVolumes.get(volId);
if (vol != null) {
- vol.internalPath = cooked[2];
+ vol.path = path;
}
- break;
- }
- case VoldResponseCode.VOLUME_DESTROYED: {
- if (cooked.length != 2) break;
- mVolumes.remove(cooked[1]);
- break;
- }
-
- case VoldResponseCode.MOVE_STATUS: {
- final int status = Integer.parseInt(cooked[1]);
- onMoveStatusLocked(status);
- break;
}
- case VoldResponseCode.BENCHMARK_RESULT: {
- if (cooked.length != 7) break;
- final String path = cooked[1];
- final String ident = cooked[2];
- final long create = Long.parseLong(cooked[3]);
- final long drop = Long.parseLong(cooked[4]);
- final long run = Long.parseLong(cooked[5]);
- final long destroy = Long.parseLong(cooked[6]);
-
- final DropBoxManager dropBox = mContext.getSystemService(DropBoxManager.class);
- dropBox.addText(TAG_STORAGE_BENCHMARK, scrubPath(path)
- + " " + ident + " " + create + " " + run + " " + destroy);
-
- final VolumeRecord rec = findRecordForPath(path);
- if (rec != null) {
- rec.lastBenchMillis = System.currentTimeMillis();
- writeSettingsLocked();
- }
+ }
- break;
- }
- case VoldResponseCode.TRIM_RESULT: {
- if (cooked.length != 4) break;
- final String path = cooked[1];
- final long bytes = Long.parseLong(cooked[2]);
- final long time = Long.parseLong(cooked[3]);
-
- final DropBoxManager dropBox = mContext.getSystemService(DropBoxManager.class);
- dropBox.addText(TAG_STORAGE_TRIM, scrubPath(path)
- + " " + bytes + " " + time);
-
- final VolumeRecord rec = findRecordForPath(path);
- if (rec != null) {
- rec.lastTrimMillis = System.currentTimeMillis();
- writeSettingsLocked();
+ @Override
+ public void onVolumeInternalPathChanged(String volId, String internalPath) {
+ synchronized (mLock) {
+ final VolumeInfo vol = mVolumes.get(volId);
+ if (vol != null) {
+ vol.internalPath = internalPath;
}
-
- break;
}
+ }
- default: {
- Slog.d(TAG, "Unhandled vold event " + code);
+ @Override
+ public void onVolumeDestroyed(String volId) {
+ synchronized (mLock) {
+ mVolumes.remove(volId);
}
}
-
- return true;
- }
+ };
private void onDiskScannedLocked(DiskInfo disk) {
int volumeCount = 0;
@@ -1540,24 +1342,6 @@ class StorageManagerService extends IStorageManager.Stub
LocalServices.addService(StorageManagerInternal.class, mStorageManagerInternal);
- /*
- * Create the connection to vold with a maximum queue of twice the
- * amount of containers we'd ever expect to have. This keeps an
- * "asec list" from blocking a thread repeatedly.
- */
-
- mConnector = new NativeDaemonConnector(this, "vold", MAX_CONTAINERS * 2, VOLD_TAG, 25,
- null);
- mConnector.setDebug(true);
- mConnector.setWarnIfHeld(mLock);
- mConnectorThread = new Thread(mConnector, VOLD_TAG);
-
- // Reuse parameters from first connector since they are tested and safe
- mCryptConnector = new NativeDaemonConnector(this, "cryptd",
- MAX_CONTAINERS * 2, CRYPTD_TAG, 25, null);
- mCryptConnector.setDebug(true);
- mCryptConnectorThread = new Thread(mCryptConnector, CRYPTD_TAG);
-
final IntentFilter userFilter = new IntentFilter();
userFilter.addAction(Intent.ACTION_USER_ADDED);
userFilter.addAction(Intent.ACTION_USER_REMOVED);
@@ -1574,8 +1358,41 @@ class StorageManagerService extends IStorageManager.Stub
}
private void start() {
- mConnectorThread.start();
- mCryptConnectorThread.start();
+ connect();
+ }
+
+ private void connect() {
+ IBinder binder = ServiceManager.getService("vold");
+ if (binder != null) {
+ try {
+ binder.linkToDeath(new DeathRecipient() {
+ @Override
+ public void binderDied() {
+ Slog.w(TAG, "vold died; reconnecting");
+ connect();
+ }
+ }, 0);
+ } catch (RemoteException e) {
+ binder = null;
+ }
+ }
+
+ if (binder != null) {
+ mVold = IVold.Stub.asInterface(binder);
+ try {
+ mVold.setListener(mListener);
+ onDaemonConnected();
+ return;
+ } catch (RemoteException e) {
+ Slog.w(TAG, "vold listener rejected; trying again", e);
+ }
+ } else {
+ Slog.w(TAG, "vold not found; trying again");
+ }
+
+ BackgroundThread.getHandler().postDelayed(() -> {
+ connect();
+ }, DateUtils.SECOND_IN_MILLIS);
}
private void systemReady() {
@@ -1760,23 +1577,21 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void mount(String volId) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
final VolumeInfo vol = findVolumeByIdOrThrow(volId);
if (isMountDisallowed(vol)) {
throw new SecurityException("Mounting " + volId + " restricted by policy");
}
try {
- mConnector.execute("volume", "mount", vol.id, vol.mountFlags, vol.mountUserId);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.mount(vol.id, vol.mountFlags, vol.mountUserId);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void unmount(String volId) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
final VolumeInfo vol = findVolumeByIdOrThrow(volId);
@@ -1796,55 +1611,77 @@ class StorageManagerService extends IStorageManager.Stub
}
try {
- mConnector.execute("volume", "unmount", vol.id);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.unmount(vol.id);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void format(String volId) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
- waitForReady();
final VolumeInfo vol = findVolumeByIdOrThrow(volId);
try {
- mConnector.execute("volume", "format", vol.id, "auto");
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.format(vol.id, "auto");
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public long benchmark(String volId) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
- waitForReady();
+ // TODO: refactor for callers to provide a listener
try {
- // TODO: make benchmark async so we don't block other commands
- final NativeDaemonEvent res = mConnector.execute(3 * DateUtils.MINUTE_IN_MILLIS,
- "volume", "benchmark", volId);
- return Long.parseLong(res.getMessage());
- } catch (NativeDaemonTimeoutException e) {
+ final CompletableFuture<PersistableBundle> result = new CompletableFuture<>();
+ mVold.benchmark(volId, new IVoldTaskListener.Stub() {
+ @Override
+ public void onStatus(int status, PersistableBundle extras) {
+ // Not currently used
+ }
+
+ @Override
+ public void onFinished(int status, PersistableBundle extras) {
+ result.complete(extras);
+
+ final String path = extras.getString("path");
+ final String ident = extras.getString("ident");
+ final long create = extras.getLong("create");
+ final long run = extras.getLong("run");
+ final long destroy = extras.getLong("destroy");
+
+ final DropBoxManager dropBox = mContext.getSystemService(DropBoxManager.class);
+ dropBox.addText(TAG_STORAGE_BENCHMARK, scrubPath(path)
+ + " " + ident + " " + create + " " + run + " " + destroy);
+
+ synchronized (mLock) {
+ final VolumeRecord rec = findRecordForPath(path);
+ if (rec != null) {
+ rec.lastBenchMillis = System.currentTimeMillis();
+ writeSettingsLocked();
+ }
+ }
+ }
+ });
+ return result.get(3, TimeUnit.MINUTES).getLong("run", Long.MAX_VALUE);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
return Long.MAX_VALUE;
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
}
}
@Override
public void partitionPublic(String diskId) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
- waitForReady();
final CountDownLatch latch = findOrCreateDiskScanLatch(diskId);
try {
- mConnector.execute("volume", "partition", diskId, "public");
+ mVold.partition(diskId, IVold.PARTITION_TYPE_PUBLIC, -1);
waitForLatch(latch, "partitionPublic", 3 * DateUtils.MINUTE_IN_MILLIS);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
- } catch (TimeoutException e) {
- throw new IllegalStateException(e);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@@ -1852,16 +1689,13 @@ class StorageManagerService extends IStorageManager.Stub
public void partitionPrivate(String diskId) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
enforceAdminUser();
- waitForReady();
final CountDownLatch latch = findOrCreateDiskScanLatch(diskId);
try {
- mConnector.execute("volume", "partition", diskId, "private");
+ mVold.partition(diskId, IVold.PARTITION_TYPE_PRIVATE, -1);
waitForLatch(latch, "partitionPrivate", 3 * DateUtils.MINUTE_IN_MILLIS);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
- } catch (TimeoutException e) {
- throw new IllegalStateException(e);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@@ -1869,23 +1703,19 @@ class StorageManagerService extends IStorageManager.Stub
public void partitionMixed(String diskId, int ratio) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
enforceAdminUser();
- waitForReady();
final CountDownLatch latch = findOrCreateDiskScanLatch(diskId);
try {
- mConnector.execute("volume", "partition", diskId, "mixed", ratio);
+ mVold.partition(diskId, IVold.PARTITION_TYPE_MIXED, ratio);
waitForLatch(latch, "partitionMixed", 3 * DateUtils.MINUTE_IN_MILLIS);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
- } catch (TimeoutException e) {
- throw new IllegalStateException(e);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void setVolumeNickname(String fsUuid, String nickname) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
Preconditions.checkNotNull(fsUuid);
synchronized (mLock) {
@@ -1899,7 +1729,6 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void setVolumeUserFlags(String fsUuid, int flags, int mask) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
Preconditions.checkNotNull(fsUuid);
synchronized (mLock) {
@@ -1913,7 +1742,6 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void forgetVolume(String fsUuid) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
Preconditions.checkNotNull(fsUuid);
@@ -1938,7 +1766,6 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void forgetAllVolumes() {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
synchronized (mLock) {
for (int i = 0; i < mRecords.size(); i++) {
@@ -1962,63 +1789,61 @@ class StorageManagerService extends IStorageManager.Stub
private void forgetPartition(String partGuid) {
try {
- mConnector.execute("volume", "forget_partition", partGuid);
- } catch (NativeDaemonConnectorException e) {
- Slog.w(TAG, "Failed to forget key for " + partGuid + ": " + e);
+ mVold.forgetPartition(partGuid);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void fstrim(int flags) {
enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);
- waitForReady();
-
- String cmd;
- if ((flags & StorageManager.FSTRIM_FLAG_DEEP) != 0) {
- cmd = "dodtrim";
- } else {
- cmd = "dotrim";
- }
- if ((flags & StorageManager.FSTRIM_FLAG_BENCHMARK) != 0) {
- cmd += "bench";
- }
try {
- mConnector.execute("fstrim", cmd);
- } catch (NativeDaemonConnectorException e) {
- Slog.e(TAG, "Failed to run fstrim: " + e);
+ mVold.fstrim(flags, new IVoldTaskListener.Stub() {
+ @Override
+ public void onStatus(int status, PersistableBundle extras) {
+ // Ignore trim failures
+ if (status != 0) return;
+
+ final String path = extras.getString("path");
+ final long bytes = extras.getLong("bytes");
+ final long time = extras.getLong("time");
+
+ final DropBoxManager dropBox = mContext.getSystemService(DropBoxManager.class);
+ dropBox.addText(TAG_STORAGE_TRIM, scrubPath(path) + " " + bytes + " " + time);
+
+ synchronized (mLock) {
+ final VolumeRecord rec = findRecordForPath(path);
+ if (rec != null) {
+ rec.lastTrimMillis = System.currentTimeMillis();
+ writeSettingsLocked();
+ }
+ }
+ }
+
+ @Override
+ public void onFinished(int status, PersistableBundle extras) {
+ // Not currently used
+ // TODO: benchmark when desired
+ }
+ });
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
private void remountUidExternalStorage(int uid, int mode) {
- waitForReady();
-
- String modeName = "none";
- switch (mode) {
- case Zygote.MOUNT_EXTERNAL_DEFAULT: {
- modeName = "default";
- } break;
-
- case Zygote.MOUNT_EXTERNAL_READ: {
- modeName = "read";
- } break;
-
- case Zygote.MOUNT_EXTERNAL_WRITE: {
- modeName = "write";
- } break;
- }
-
try {
- mConnector.execute("volume", "remount_uid", uid, modeName);
- } catch (NativeDaemonConnectorException e) {
- Slog.w(TAG, "Failed to remount UID " + uid + " as " + modeName + ": " + e);
+ mVold.remountUid(uid, mode);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void setDebugFlags(int flags, int mask) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
if ((mask & StorageManager.DEBUG_EMULATE_FBE) != 0) {
if (!EMULATE_FBE_SUPPORTED) {
@@ -2108,7 +1933,6 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void setPrimaryStorageUuid(String volumeUuid, IPackageMoveObserver callback) {
enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
final VolumeInfo from;
final VolumeInfo to;
@@ -2162,37 +1986,27 @@ class StorageManagerService extends IStorageManager.Stub
}
try {
- mConnector.execute("volume", "move_storage", from.id, to.id);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.moveStorage(from.id, to.id, new IVoldTaskListener.Stub() {
+ @Override
+ public void onStatus(int status, PersistableBundle extras) {
+ synchronized (mLock) {
+ onMoveStatusLocked(status);
+ }
+ }
+
+ @Override
+ public void onFinished(int status, PersistableBundle extras) {
+ // Not currently used
+ }
+ });
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public int[] getStorageUsers(String path) {
- enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
- waitForReady();
- try {
- final String[] r = NativeDaemonEvent.filterMessageList(
- mConnector.executeForList("storage", "users", path),
- VoldResponseCode.StorageUsersListResult);
-
- // FMT: <pid> <process name>
- int[] data = new int[r.length];
- for (int i = 0; i < r.length; i++) {
- String[] tok = r[i].split(" ");
- try {
- data[i] = Integer.parseInt(tok[0]);
- } catch (NumberFormatException nfe) {
- Slog.e(TAG, String.format("Error parsing pid %s", tok[0]));
- return new int[0];
- }
- }
- return data;
- } catch (NativeDaemonConnectorException e) {
- Slog.e(TAG, "Failed to retrieve storage users list", e);
- return new int[0];
- }
+ throw new UnsupportedOperationException();
}
private void warnOnNotMounted() {
@@ -2209,278 +2023,65 @@ class StorageManagerService extends IStorageManager.Stub
Slog.w(TAG, "No primary storage mounted!");
}
+ @Override
public String[] getSecureContainerList() {
- enforcePermission(android.Manifest.permission.ASEC_ACCESS);
- waitForReady();
- warnOnNotMounted();
-
- try {
- return NativeDaemonEvent.filterMessageList(
- mConnector.executeForList("asec", "list"), VoldResponseCode.AsecListResult);
- } catch (NativeDaemonConnectorException e) {
- return new String[0];
- }
+ throw new UnsupportedOperationException();
}
+ @Override
public int createSecureContainer(String id, int sizeMb, String fstype, String key,
int ownerUid, boolean external) {
- enforcePermission(android.Manifest.permission.ASEC_CREATE);
- waitForReady();
- warnOnNotMounted();
-
- int rc = StorageResultCode.OperationSucceeded;
- try {
- mConnector.execute("asec", "create", id, sizeMb, fstype, new SensitiveArg(key),
- ownerUid, external ? "1" : "0");
- } catch (NativeDaemonConnectorException e) {
- rc = StorageResultCode.OperationFailedInternalError;
- }
-
- if (rc == StorageResultCode.OperationSucceeded) {
- synchronized (mAsecMountSet) {
- mAsecMountSet.add(id);
- }
- }
- return rc;
+ throw new UnsupportedOperationException();
}
@Override
public int resizeSecureContainer(String id, int sizeMb, String key) {
- enforcePermission(android.Manifest.permission.ASEC_CREATE);
- waitForReady();
- warnOnNotMounted();
-
- int rc = StorageResultCode.OperationSucceeded;
- try {
- mConnector.execute("asec", "resize", id, sizeMb, new SensitiveArg(key));
- } catch (NativeDaemonConnectorException e) {
- rc = StorageResultCode.OperationFailedInternalError;
- }
- return rc;
+ throw new UnsupportedOperationException();
}
+ @Override
public int finalizeSecureContainer(String id) {
- enforcePermission(android.Manifest.permission.ASEC_CREATE);
- warnOnNotMounted();
-
- int rc = StorageResultCode.OperationSucceeded;
- try {
- mConnector.execute("asec", "finalize", id);
- /*
- * Finalization does a remount, so no need
- * to update mAsecMountSet
- */
- } catch (NativeDaemonConnectorException e) {
- rc = StorageResultCode.OperationFailedInternalError;
- }
- return rc;
+ throw new UnsupportedOperationException();
}
+ @Override
public int fixPermissionsSecureContainer(String id, int gid, String filename) {
- enforcePermission(android.Manifest.permission.ASEC_CREATE);
- warnOnNotMounted();
-
- int rc = StorageResultCode.OperationSucceeded;
- try {
- mConnector.execute("asec", "fixperms", id, gid, filename);
- /*
- * Fix permissions does a remount, so no need to update
- * mAsecMountSet
- */
- } catch (NativeDaemonConnectorException e) {
- rc = StorageResultCode.OperationFailedInternalError;
- }
- return rc;
+ throw new UnsupportedOperationException();
}
+ @Override
public int destroySecureContainer(String id, boolean force) {
- enforcePermission(android.Manifest.permission.ASEC_DESTROY);
- waitForReady();
- warnOnNotMounted();
-
- /*
- * Force a GC to make sure AssetManagers in other threads of the
- * system_server are cleaned up. We have to do this since AssetManager
- * instances are kept as a WeakReference and it's possible we have files
- * open on the external storage.
- */
- Runtime.getRuntime().gc();
-
- int rc = StorageResultCode.OperationSucceeded;
- try {
- final Command cmd = new Command("asec", "destroy", id);
- if (force) {
- cmd.appendArg("force");
- }
- mConnector.execute(cmd);
- } catch (NativeDaemonConnectorException e) {
- int code = e.getCode();
- if (code == VoldResponseCode.OpFailedStorageBusy) {
- rc = StorageResultCode.OperationFailedStorageBusy;
- } else {
- rc = StorageResultCode.OperationFailedInternalError;
- }
- }
-
- if (rc == StorageResultCode.OperationSucceeded) {
- synchronized (mAsecMountSet) {
- if (mAsecMountSet.contains(id)) {
- mAsecMountSet.remove(id);
- }
- }
- }
-
- return rc;
+ throw new UnsupportedOperationException();
}
+ @Override
public int mountSecureContainer(String id, String key, int ownerUid, boolean readOnly) {
- enforcePermission(android.Manifest.permission.ASEC_MOUNT_UNMOUNT);
- waitForReady();
- warnOnNotMounted();
-
- synchronized (mAsecMountSet) {
- if (mAsecMountSet.contains(id)) {
- return StorageResultCode.OperationFailedStorageMounted;
- }
- }
-
- int rc = StorageResultCode.OperationSucceeded;
- try {
- mConnector.execute("asec", "mount", id, new SensitiveArg(key), ownerUid,
- readOnly ? "ro" : "rw");
- } catch (NativeDaemonConnectorException e) {
- int code = e.getCode();
- if (code != VoldResponseCode.OpFailedStorageBusy) {
- rc = StorageResultCode.OperationFailedInternalError;
- }
- }
-
- if (rc == StorageResultCode.OperationSucceeded) {
- synchronized (mAsecMountSet) {
- mAsecMountSet.add(id);
- }
- }
- return rc;
+ throw new UnsupportedOperationException();
}
+ @Override
public int unmountSecureContainer(String id, boolean force) {
- enforcePermission(android.Manifest.permission.ASEC_MOUNT_UNMOUNT);
- waitForReady();
- warnOnNotMounted();
-
- synchronized (mAsecMountSet) {
- if (!mAsecMountSet.contains(id)) {
- return StorageResultCode.OperationFailedStorageNotMounted;
- }
- }
-
- /*
- * Force a GC to make sure AssetManagers in other threads of the
- * system_server are cleaned up. We have to do this since AssetManager
- * instances are kept as a WeakReference and it's possible we have files
- * open on the external storage.
- */
- Runtime.getRuntime().gc();
-
- int rc = StorageResultCode.OperationSucceeded;
- try {
- final Command cmd = new Command("asec", "unmount", id);
- if (force) {
- cmd.appendArg("force");
- }
- mConnector.execute(cmd);
- } catch (NativeDaemonConnectorException e) {
- int code = e.getCode();
- if (code == VoldResponseCode.OpFailedStorageBusy) {
- rc = StorageResultCode.OperationFailedStorageBusy;
- } else {
- rc = StorageResultCode.OperationFailedInternalError;
- }
- }
-
- if (rc == StorageResultCode.OperationSucceeded) {
- synchronized (mAsecMountSet) {
- mAsecMountSet.remove(id);
- }
- }
- return rc;
+ throw new UnsupportedOperationException();
}
+ @Override
public boolean isSecureContainerMounted(String id) {
- enforcePermission(android.Manifest.permission.ASEC_ACCESS);
- waitForReady();
- warnOnNotMounted();
-
- synchronized (mAsecMountSet) {
- return mAsecMountSet.contains(id);
- }
+ throw new UnsupportedOperationException();
}
+ @Override
public int renameSecureContainer(String oldId, String newId) {
- enforcePermission(android.Manifest.permission.ASEC_RENAME);
- waitForReady();
- warnOnNotMounted();
-
- synchronized (mAsecMountSet) {
- /*
- * Because a mounted container has active internal state which cannot be
- * changed while active, we must ensure both ids are not currently mounted.
- */
- if (mAsecMountSet.contains(oldId) || mAsecMountSet.contains(newId)) {
- return StorageResultCode.OperationFailedStorageMounted;
- }
- }
-
- int rc = StorageResultCode.OperationSucceeded;
- try {
- mConnector.execute("asec", "rename", oldId, newId);
- } catch (NativeDaemonConnectorException e) {
- rc = StorageResultCode.OperationFailedInternalError;
- }
-
- return rc;
+ throw new UnsupportedOperationException();
}
+ @Override
public String getSecureContainerPath(String id) {
- enforcePermission(android.Manifest.permission.ASEC_ACCESS);
- waitForReady();
- warnOnNotMounted();
-
- final NativeDaemonEvent event;
- try {
- event = mConnector.execute("asec", "path", id);
- event.checkCode(VoldResponseCode.AsecPathResult);
- return event.getMessage();
- } catch (NativeDaemonConnectorException e) {
- int code = e.getCode();
- if (code == VoldResponseCode.OpFailedStorageNotFound) {
- Slog.i(TAG, String.format("Container '%s' not found", id));
- return null;
- } else {
- throw new IllegalStateException(String.format("Unexpected response code %d", code));
- }
- }
+ throw new UnsupportedOperationException();
}
+ @Override
public String getSecureContainerFilesystemPath(String id) {
- enforcePermission(android.Manifest.permission.ASEC_ACCESS);
- waitForReady();
- warnOnNotMounted();
-
- final NativeDaemonEvent event;
- try {
- event = mConnector.execute("asec", "fspath", id);
- event.checkCode(VoldResponseCode.AsecPathResult);
- return event.getMessage();
- } catch (NativeDaemonConnectorException e) {
- int code = e.getCode();
- if (code == VoldResponseCode.OpFailedStorageNotFound) {
- Slog.i(TAG, String.format("Container '%s' not found", id));
- return null;
- } else {
- throw new IllegalStateException(String.format("Unexpected response code %d", code));
- }
- }
+ throw new UnsupportedOperationException();
}
@Override
@@ -2515,10 +2116,10 @@ class StorageManagerService extends IStorageManager.Stub
return callerUid == packageUid;
}
+ @Override
public String getMountedObbPath(String rawPath) {
Preconditions.checkNotNull(rawPath, "rawPath cannot be null");
- waitForReady();
warnOnNotMounted();
final ObbState state;
@@ -2530,19 +2131,7 @@ class StorageManagerService extends IStorageManager.Stub
return null;
}
- final NativeDaemonEvent event;
- try {
- event = mConnector.execute("obb", "path", state.canonicalPath);
- event.checkCode(VoldResponseCode.AsecPathResult);
- return event.getMessage();
- } catch (NativeDaemonConnectorException e) {
- int code = e.getCode();
- if (code == VoldResponseCode.OpFailedStorageNotFound) {
- return null;
- } else {
- throw new IllegalStateException(String.format("Unexpected response code %d", code));
- }
- }
+ return findVolumeByIdOrThrow(state.volId).getPath().getAbsolutePath();
}
@Override
@@ -2561,7 +2150,8 @@ class StorageManagerService extends IStorageManager.Stub
Preconditions.checkNotNull(token, "token cannot be null");
final int callingUid = Binder.getCallingUid();
- final ObbState obbState = new ObbState(rawPath, canonicalPath, callingUid, token, nonce);
+ final ObbState obbState = new ObbState(rawPath, canonicalPath,
+ callingUid, token, nonce, null);
final ObbAction action = new MountObbAction(obbState, key, callingUid);
mObbActionHandler.sendMessage(mObbActionHandler.obtainMessage(OBB_RUN_ACTION, action));
@@ -2581,8 +2171,8 @@ class StorageManagerService extends IStorageManager.Stub
if (existingState != null) {
// TODO: separate state object from request data
final int callingUid = Binder.getCallingUid();
- final ObbState newState = new ObbState(
- rawPath, existingState.canonicalPath, callingUid, token, nonce);
+ final ObbState newState = new ObbState(rawPath, existingState.canonicalPath,
+ callingUid, token, nonce, existingState.volId);
final ObbAction action = new UnmountObbAction(newState, force);
mObbActionHandler.sendMessage(mObbActionHandler.obtainMessage(OBB_RUN_ACTION, action));
@@ -2598,89 +2188,63 @@ class StorageManagerService extends IStorageManager.Stub
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"no permission to access the crypt keeper");
- waitForReady();
-
- final NativeDaemonEvent event;
try {
- event = mCryptConnector.execute("cryptfs", "cryptocomplete");
- return Integer.parseInt(event.getMessage());
- } catch (NumberFormatException e) {
- // Bad result - unexpected.
- Slog.w(TAG, "Unable to parse result from cryptfs cryptocomplete");
- return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN;
- } catch (NativeDaemonConnectorException e) {
- // Something bad happened.
- Slog.w(TAG, "Error in communicating with cryptfs in validating");
+ return mVold.fdeComplete();
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN;
}
}
@Override
public int decryptStorage(String password) {
- if (TextUtils.isEmpty(password)) {
- throw new IllegalArgumentException("password cannot be empty");
- }
-
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"no permission to access the crypt keeper");
- waitForReady();
+ if (TextUtils.isEmpty(password)) {
+ throw new IllegalArgumentException("password cannot be empty");
+ }
if (DEBUG_EVENTS) {
Slog.i(TAG, "decrypting storage...");
}
- final NativeDaemonEvent event;
try {
- event = mCryptConnector.execute("cryptfs", "checkpw", new SensitiveArg(password));
-
- final int code = Integer.parseInt(event.getMessage());
- if (code == 0) {
- // Decrypt was successful. Post a delayed message before restarting in order
- // to let the UI to clear itself
- mHandler.postDelayed(new Runnable() {
- public void run() {
- try {
- mCryptConnector.execute("cryptfs", "restart");
- } catch (NativeDaemonConnectorException e) {
- Slog.e(TAG, "problem executing in background", e);
- }
- }
- }, 1000); // 1 second
- }
-
- return code;
- } catch (NativeDaemonConnectorException e) {
- // Decryption failed
- return e.getCode();
+ mVold.fdeCheckPassword(password);
+ mHandler.postDelayed(() -> {
+ try {
+ mVold.fdeRestart();
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ }
+ }, DateUtils.SECOND_IN_MILLIS);
+ return 0;
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return StorageManager.ENCRYPTION_STATE_ERROR_UNKNOWN;
}
}
+ @Override
public int encryptStorage(int type, String password) {
- if (TextUtils.isEmpty(password) && type != StorageManager.CRYPT_TYPE_DEFAULT) {
- throw new IllegalArgumentException("password cannot be empty");
- }
-
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"no permission to access the crypt keeper");
- waitForReady();
+ if (type == StorageManager.CRYPT_TYPE_DEFAULT) {
+ password = "";
+ } else if (TextUtils.isEmpty(password)) {
+ throw new IllegalArgumentException("password cannot be empty");
+ }
if (DEBUG_EVENTS) {
Slog.i(TAG, "encrypting storage...");
}
try {
- if (type == StorageManager.CRYPT_TYPE_DEFAULT) {
- mCryptConnector.execute("cryptfs", "enablecrypto", "inplace",
- CRYPTO_TYPES[type]);
- } else {
- mCryptConnector.execute("cryptfs", "enablecrypto", "inplace",
- CRYPTO_TYPES[type], new SensitiveArg(password));
- }
- } catch (NativeDaemonConnectorException e) {
- // Encryption failed
- return e.getCode();
+ mVold.fdeEnable(type, password, IVold.ENCRYPTION_FLAG_IN_PLACE);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return -1;
}
return 0;
@@ -2690,23 +2254,27 @@ class StorageManagerService extends IStorageManager.Stub
* @param type One of the CRYPTO_TYPE_XXX consts defined in StorageManager.
* @param password The password to set.
*/
+ @Override
public int changeEncryptionPassword(int type, String password) {
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"no permission to access the crypt keeper");
- waitForReady();
+ if (type == StorageManager.CRYPT_TYPE_DEFAULT) {
+ password = "";
+ } else if (TextUtils.isEmpty(password)) {
+ throw new IllegalArgumentException("password cannot be empty");
+ }
if (DEBUG_EVENTS) {
Slog.i(TAG, "changing encryption password...");
}
try {
- NativeDaemonEvent event = mCryptConnector.execute("cryptfs", "changepw", CRYPTO_TYPES[type],
- new SensitiveArg(password));
- return Integer.parseInt(event.getMessage());
- } catch (NativeDaemonConnectorException e) {
- // Encryption failed
- return e.getCode();
+ mVold.fdeChangePassword(type, password);
+ return 0;
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return -1;
}
}
@@ -2727,20 +2295,16 @@ class StorageManagerService extends IStorageManager.Stub
throw new IllegalArgumentException("password cannot be empty");
}
- waitForReady();
-
if (DEBUG_EVENTS) {
Slog.i(TAG, "validating encryption password...");
}
- final NativeDaemonEvent event;
try {
- event = mCryptConnector.execute("cryptfs", "verifypw", new SensitiveArg(password));
- Slog.i(TAG, "cryptfs verifypw => " + event.getMessage());
- return Integer.parseInt(event.getMessage());
- } catch (NativeDaemonConnectorException e) {
- // Encryption failed
- return e.getCode();
+ mVold.fdeVerifyPassword(password);
+ return 0;
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return -1;
}
}
@@ -2753,19 +2317,11 @@ class StorageManagerService extends IStorageManager.Stub
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"no permission to access the crypt keeper");
- waitForReady();
-
- final NativeDaemonEvent event;
try {
- event = mCryptConnector.execute("cryptfs", "getpwtype");
- for (int i = 0; i < CRYPTO_TYPES.length; ++i) {
- if (CRYPTO_TYPES[i].equals(event.getMessage()))
- return i;
- }
-
- throw new IllegalStateException("unexpected return from cryptfs");
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ return mVold.fdeGetPasswordType();
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return -1;
}
}
@@ -2779,13 +2335,12 @@ class StorageManagerService extends IStorageManager.Stub
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"no permission to access the crypt keeper");
- waitForReady();
-
- final NativeDaemonEvent event;
try {
- event = mCryptConnector.execute("cryptfs", "setfield", field, contents);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.fdeSetField(field, contents);
+ return;
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return;
}
}
@@ -2799,20 +2354,11 @@ class StorageManagerService extends IStorageManager.Stub
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"no permission to access the crypt keeper");
- waitForReady();
-
- final NativeDaemonEvent event;
try {
- final String[] contents = NativeDaemonEvent.filterMessageList(
- mCryptConnector.executeForList("cryptfs", "getfield", field),
- VoldResponseCode.CryptfsGetfieldResult);
- String result = new String();
- for (String content : contents) {
- result += content;
- }
- return result;
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ return mVold.fdeGetField(field);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return null;
}
}
@@ -2825,14 +2371,11 @@ class StorageManagerService extends IStorageManager.Stub
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"no permission to access the crypt keeper");
- waitForReady();
-
- final NativeDaemonEvent event;
try {
- event = mCryptConnector.execute("cryptfs", "isConvertibleToFBE");
- return Integer.parseInt(event.getMessage()) != 0;
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ return mVold.isConvertibleToFbe();
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return false;
}
}
@@ -2841,22 +2384,10 @@ class StorageManagerService extends IStorageManager.Stub
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"only keyguard can retrieve password");
- if (!isReady()) {
- return new String();
- }
-
- final NativeDaemonEvent event;
try {
- event = mCryptConnector.execute("cryptfs", "getpw");
- if ("-1".equals(event.getMessage())) {
- // -1 equals no password
- return null;
- }
- return event.getMessage();
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
- } catch (IllegalArgumentException e) {
- Slog.e(TAG, "Invalid response to getPassword");
+ return mVold.fdeGetPassword();
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
return null;
}
}
@@ -2866,48 +2397,42 @@ class StorageManagerService extends IStorageManager.Stub
mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
"only keyguard can clear password");
- if (!isReady()) {
- return;
- }
-
- final NativeDaemonEvent event;
try {
- event = mCryptConnector.execute("cryptfs", "clearpw");
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.fdeClearPassword();
+ return;
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return;
}
}
@Override
public void createUserKey(int userId, int serialNumber, boolean ephemeral) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
try {
- mCryptConnector.execute("cryptfs", "create_user_key", userId, serialNumber,
- ephemeral ? 1 : 0);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.createUserKey(userId, serialNumber, ephemeral);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void destroyUserKey(int userId) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
try {
- mCryptConnector.execute("cryptfs", "destroy_user_key", userId);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.destroyUserKey(userId);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
- private SensitiveArg encodeBytes(byte[] bytes) {
+ private String encodeBytes(byte[] bytes) {
if (ArrayUtils.isEmpty(bytes)) {
- return new SensitiveArg("!");
+ return "!";
} else {
- return new SensitiveArg(HexDump.toHexString(bytes));
+ return HexDump.toHexString(bytes);
}
}
@@ -2921,13 +2446,11 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void addUserKeyAuth(int userId, int serialNumber, byte[] token, byte[] secret) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
try {
- mCryptConnector.execute("cryptfs", "add_user_key_auth", userId, serialNumber,
- encodeBytes(token), encodeBytes(secret));
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.addUserKeyAuth(userId, serialNumber, encodeBytes(token), encodeBytes(secret));
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@@ -2937,19 +2460,17 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void fixateNewestUserKeyAuth(int userId) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
try {
- mCryptConnector.execute("cryptfs", "fixate_newest_user_key_auth", userId);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.fixateNewestUserKeyAuth(userId);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void unlockUserKey(int userId, int serialNumber, byte[] token, byte[] secret) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
if (StorageManager.isFileEncryptedNativeOrEmulated()) {
// When a user has secure lock screen, require secret to actually unlock.
@@ -2959,10 +2480,11 @@ class StorageManagerService extends IStorageManager.Stub
}
try {
- mCryptConnector.execute("cryptfs", "unlock_user_key", userId, serialNumber,
- encodeBytes(token), encodeBytes(secret));
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.unlockUserKey(userId, serialNumber, encodeBytes(token),
+ encodeBytes(secret));
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return;
}
}
@@ -2979,12 +2501,12 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void lockUserKey(int userId) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
try {
- mCryptConnector.execute("cryptfs", "lock_user_key", userId);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.lockUserKey(userId);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
+ return;
}
synchronized (mLock) {
@@ -3002,38 +2524,33 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void prepareUserStorage(String volumeUuid, int userId, int serialNumber, int flags) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
try {
- mCryptConnector.execute("cryptfs", "prepare_user_storage", escapeNull(volumeUuid),
- userId, serialNumber, flags);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.prepareUserStorage(volumeUuid, userId, serialNumber, flags);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void destroyUserStorage(String volumeUuid, int userId, int flags) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
try {
- mCryptConnector.execute("cryptfs", "destroy_user_storage", escapeNull(volumeUuid),
- userId, flags);
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.destroyUserStorage(volumeUuid, userId, flags);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@Override
public void secdiscard(String path) {
enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);
- waitForReady();
try {
- mCryptConnector.execute("cryptfs", "secdiscard", escapeNull(path));
- } catch (NativeDaemonConnectorException e) {
- throw e.rethrowAsParcelableException();
+ mVold.secdiscard(path);
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@@ -3046,20 +2563,18 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public ParcelFileDescriptor open() throws NativeDaemonConnectorException {
- final NativeDaemonEvent event = StorageManagerService.this.mConnector.execute(
- "appfuse", "mount", uid, Process.myPid(), mountId);
- opened = true;
- if (event.getFileDescriptors() == null ||
- event.getFileDescriptors().length == 0) {
- throw new NativeDaemonConnectorException("Cannot obtain device FD");
+ try {
+ return new ParcelFileDescriptor(
+ mVold.mountAppFuse(uid, Process.myPid(), mountId));
+ } catch (Exception e) {
+ throw new NativeDaemonConnectorException("Failed to mount", e);
}
- return new ParcelFileDescriptor(event.getFileDescriptors()[0]);
}
@Override
public void close() throws Exception {
if (opened) {
- mConnector.execute("appfuse", "unmount", uid, Process.myPid(), mountId);
+ mVold.unmountAppFuse(uid, Process.myPid(), mountId);
opened = false;
}
}
@@ -3148,10 +2663,10 @@ class StorageManagerService extends IStorageManager.Stub
}
try {
- mConnector.execute("volume", "mkdirs", appPath);
+ mVold.mkdirs(appPath);
return 0;
- } catch (NativeDaemonConnectorException e) {
- return e.getCode();
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
@@ -3700,7 +3215,6 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void handleExecute() throws IOException, RemoteException {
- waitForReady();
warnOnNotMounted();
final ObbInfo obbInfo = getObbInfo();
@@ -3723,8 +3237,10 @@ class StorageManagerService extends IStorageManager.Stub
}
final String hashedKey;
+ final String binderKey;
if (mKey == null) {
hashedKey = "none";
+ binderKey = "";
} else {
try {
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
@@ -3734,6 +3250,7 @@ class StorageManagerService extends IStorageManager.Stub
SecretKey key = factory.generateSecret(ks);
BigInteger bi = new BigInteger(key.getEncoded());
hashedKey = bi.toString(16);
+ binderKey = hashedKey;
} catch (NoSuchAlgorithmException e) {
Slog.e(TAG, "Could not load PBKDF2 algorithm", e);
sendNewStatusOrIgnore(OnObbStateChangeListener.ERROR_INTERNAL);
@@ -3747,13 +3264,12 @@ class StorageManagerService extends IStorageManager.Stub
int rc = StorageResultCode.OperationSucceeded;
try {
- mConnector.execute("obb", "mount", mObbState.canonicalPath, new SensitiveArg(hashedKey),
+ mObbState.volId = mVold.createObb(mObbState.canonicalPath, binderKey,
mObbState.ownerGid);
- } catch (NativeDaemonConnectorException e) {
- int code = e.getCode();
- if (code != VoldResponseCode.OpFailedStorageBusy) {
- rc = StorageResultCode.OperationFailedInternalError;
- }
+ mVold.mount(mObbState.volId, 0, -1);
+ } catch (Exception e) {
+ Slog.w(TAG, e);
+ rc = StorageResultCode.OperationFailedInternalError;
}
if (rc == StorageResultCode.OperationSucceeded) {
@@ -3797,7 +3313,6 @@ class StorageManagerService extends IStorageManager.Stub
@Override
public void handleExecute() throws IOException {
- waitForReady();
warnOnNotMounted();
final ObbState existingState;
@@ -3819,21 +3334,12 @@ class StorageManagerService extends IStorageManager.Stub
int rc = StorageResultCode.OperationSucceeded;
try {
- final Command cmd = new Command("obb", "unmount", mObbState.canonicalPath);
- if (mForceUnmount) {
- cmd.appendArg("force");
- }
- mConnector.execute(cmd);
- } catch (NativeDaemonConnectorException e) {
- int code = e.getCode();
- if (code == VoldResponseCode.OpFailedStorageBusy) {
- rc = StorageResultCode.OperationFailedStorageBusy;
- } else if (code == VoldResponseCode.OpFailedStorageNotFound) {
- // If it's not mounted then we've already won.
- rc = StorageResultCode.OperationSucceeded;
- } else {
- rc = StorageResultCode.OperationFailedInternalError;
- }
+ mVold.unmount(mObbState.volId);
+ mVold.destroyObb(mObbState.volId);
+ mObbState.volId = null;
+ } catch (Exception e) {
+ Slog.w(TAG, e);
+ rc = StorageResultCode.OperationFailedInternalError;
}
if (rc == StorageResultCode.OperationSucceeded) {
@@ -4061,18 +3567,6 @@ class StorageManagerService extends IStorageManager.Stub
}
pw.println();
- pw.println("mConnector:");
- pw.increaseIndent();
- mConnector.dump(fd, pw, args);
- pw.decreaseIndent();
-
- pw.println();
- pw.println("mCryptConnector:");
- pw.increaseIndent();
- mCryptConnector.dump(fd, pw, args);
- pw.decreaseIndent();
-
- pw.println();
pw.print("Last maintenance: ");
pw.println(TimeUtils.formatForLogging(mLastMaintenance));
}
@@ -4080,11 +3574,10 @@ class StorageManagerService extends IStorageManager.Stub
/** {@inheritDoc} */
@Override
public void monitor() {
- if (mConnector != null) {
- mConnector.monitor();
- }
- if (mCryptConnector != null) {
- mCryptConnector.monitor();
+ try {
+ mVold.monitor();
+ } catch (Exception e) {
+ Slog.wtf(TAG, e);
}
}
diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java
index 951a0734717b..7cd34065c427 100644
--- a/services/core/java/com/android/server/TextServicesManagerService.java
+++ b/services/core/java/com/android/server/TextServicesManagerService.java
@@ -16,7 +16,6 @@
package com.android.server;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.content.PackageMonitor;
import com.android.internal.inputmethod.InputMethodUtils;
import com.android.internal.textservice.ISpellCheckerService;
@@ -37,6 +36,7 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
@@ -122,13 +122,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
}
private void putSelectedSpellChecker(@Nullable String sciId) {
- if (TextUtils.isEmpty(sciId)) {
- // OK to coalesce to null, since getSelectedSpellChecker() can take care of the
- // empty data scenario.
- putString(Settings.Secure.SELECTED_SPELL_CHECKER, null);
- } else {
- putString(Settings.Secure.SELECTED_SPELL_CHECKER, sciId);
- }
+ putString(Settings.Secure.SELECTED_SPELL_CHECKER, sciId);
}
private void putSelectedSpellCheckerSubtype(int hashCode) {
@@ -157,8 +151,12 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
return mSpellCheckerMap.get(curSpellCheckerId);
}
- public void setCurrentSpellChecker(SpellCheckerInfo sci) {
- putSelectedSpellChecker(sci.getId());
+ public void setCurrentSpellChecker(@Nullable SpellCheckerInfo sci) {
+ if (sci != null) {
+ putSelectedSpellChecker(sci.getId());
+ } else {
+ putSelectedSpellChecker("");
+ }
putSelectedSpellCheckerSubtype(SpellCheckerSubtype.SUBTYPE_ID_NONE);
}
@@ -330,13 +328,11 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
tsd.initializeTextServicesData();
SpellCheckerInfo sci = tsd.getCurrentSpellChecker();
if (sci == null) {
- sci = findAvailSpellCheckerLocked(null, tsd);
- if (sci != null) {
- // Set the current spell checker if there is one or more spell checkers
- // available. In this case, "sci" is the first one in the available spell
- // checkers.
- setCurrentSpellCheckerLocked(sci, tsd);
- }
+ sci = findAvailSystemSpellCheckerLocked(null, tsd);
+ // Set the current spell checker if there is one or more system spell checkers
+ // available. In this case, "sci" is the first one in the available spell
+ // checkers.
+ setCurrentSpellCheckerLocked(sci, tsd);
}
}
@@ -355,20 +351,31 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
// TODO: Update for each locale
SpellCheckerInfo sci = tsd.getCurrentSpellChecker();
tsd.initializeTextServicesData();
- // If no spell checker is enabled, just return. The user should explicitly
+ // If spell checker is disabled, just return. The user should explicitly
// enable the spell checker.
- if (sci == null) return;
- final String packageName = sci.getPackageName();
- final int change = isPackageDisappearing(packageName);
- if (DBG) Slog.d(TAG, "Changing package name: " + packageName);
- if (// Package disappearing
- change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE
- // Package modified
- || isPackageModified(packageName)) {
- SpellCheckerInfo availSci = findAvailSpellCheckerLocked(packageName, tsd);
- // Set the spell checker settings if different than before
- if (availSci != null && !availSci.getId().equals(sci.getId())) {
- setCurrentSpellCheckerLocked(availSci, tsd);
+ if (!tsd.isSpellCheckerEnabled()) return;
+
+ if (sci == null) {
+ sci = findAvailSystemSpellCheckerLocked(null, tsd);
+ // Set the current spell checker if there is one or more system spell checkers
+ // available. In this case, "sci" is the first one in the available spell
+ // checkers.
+ setCurrentSpellCheckerLocked(sci, tsd);
+ } else {
+ final String packageName = sci.getPackageName();
+ final int change = isPackageDisappearing(packageName);
+ if (DBG) Slog.d(TAG, "Changing package name: " + packageName);
+ if (// Package disappearing
+ change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE
+ // Package modified
+ || isPackageModified(packageName)) {
+ SpellCheckerInfo availSci =
+ findAvailSystemSpellCheckerLocked(packageName, tsd);
+ // Set the spell checker settings if different than before
+ if (availSci == null
+ || (availSci != null && !availSci.getId().equals(sci.getId()))) {
+ setCurrentSpellCheckerLocked(availSci, tsd);
+ }
}
}
}
@@ -393,9 +400,16 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
spellCheckerBindGroups.clear();
}
- private SpellCheckerInfo findAvailSpellCheckerLocked(String prefPackage,
+ private SpellCheckerInfo findAvailSystemSpellCheckerLocked(String prefPackage,
TextServicesData tsd) {
- ArrayList<SpellCheckerInfo> spellCheckerList = tsd.mSpellCheckerList;
+ // Filter the spell checker list to remove spell checker services that are not pre-installed
+ ArrayList<SpellCheckerInfo> spellCheckerList = new ArrayList<>();
+ for (SpellCheckerInfo sci : tsd.mSpellCheckerList) {
+ if ((sci.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
+ spellCheckerList.add(sci);
+ }
+ }
+
final int spellCheckersCount = spellCheckerList.size();
if (spellCheckersCount == 0) {
Slog.w(TAG, "no available spell checker services found");
@@ -406,7 +420,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
final SpellCheckerInfo sci = spellCheckerList.get(i);
if (prefPackage.equals(sci.getPackageName())) {
if (DBG) {
- Slog.d(TAG, "findAvailSpellCheckerLocked: " + sci.getPackageName());
+ Slog.d(TAG, "findAvailSystemSpellCheckerLocked: " + sci.getPackageName());
}
return sci;
}
@@ -420,7 +434,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
final ArrayList<Locale> suitableLocales =
InputMethodUtils.getSuitableLocalesForSpellChecker(systemLocal);
if (DBG) {
- Slog.w(TAG, "findAvailSpellCheckerLocked suitableLocales="
+ Slog.w(TAG, "findAvailSystemSpellCheckerLocked suitableLocales="
+ Arrays.toString(suitableLocales.toArray(new Locale[suitableLocales.size()])));
}
final int localeCount = suitableLocales.size();
@@ -670,8 +684,8 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
}
}
- private void setCurrentSpellCheckerLocked(SpellCheckerInfo sci, TextServicesData tsd) {
- final String sciId = sci.getId();
+ private void setCurrentSpellCheckerLocked(@Nullable SpellCheckerInfo sci, TextServicesData tsd) {
+ final String sciId = (sci != null) ? sci.getId() : "";
if (DBG) {
Slog.w(TAG, "setCurrentSpellChecker: " + sciId);
}
diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java
index 473384081656..046eb761d1c0 100644
--- a/services/core/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
@@ -728,6 +728,9 @@ public class VibratorService extends IVibratorService.Stub
return timeout;
}
}
+ if (!prebaked.shouldFallback()) {
+ return 0;
+ }
final int id = prebaked.getId();
if (id < 0 || id >= mFallbackEffects.length || mFallbackEffects[id] == null) {
Slog.w(TAG, "Failed to play prebaked effect, no fallback");
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index 7e90c9276ff0..98e08e09049b 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -2191,7 +2191,7 @@ public class AccountManagerService
return false;
} else if (!isAccountManagedByCaller(account.type, callingUid, userId)) {
String msg = String.format(
- "uid %s cannot explicitly add accounts of type: %s",
+ "uid %s cannot explicitly remove accounts of type: %s",
callingUid,
account.type);
throw new SecurityException(msg);
@@ -5285,7 +5285,7 @@ public class AccountManagerService
== PackageManager.PERMISSION_GRANTED) {
// Checks runtime permission revocation.
final int opCode = AppOpsManager.permissionToOpCode(perm);
- if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOp(
+ if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOpNoThrow(
opCode, uid, packageName) == AppOpsManager.MODE_ALLOWED) {
return true;
}
@@ -5306,7 +5306,7 @@ public class AccountManagerService
Log.v(TAG, " caller uid " + callingUid + " has " + perm);
}
final int opCode = AppOpsManager.permissionToOpCode(perm);
- if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOp(
+ if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOpNoThrow(
opCode, callingUid, opPackageName) == AppOpsManager.MODE_ALLOWED) {
return true;
}
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 756e2748b8cb..90ad8a5d0131 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -1926,6 +1926,9 @@ public final class ActiveServices {
if (r.restartDelay == 0) {
r.restartCount++;
r.restartDelay = minDuration;
+ } else if (r.crashCount > 1) {
+ r.restartDelay = mAm.mConstants.BOUND_SERVICE_CRASH_RESTART_DURATION
+ * (r.crashCount - 1);
} else {
// If it has been a "reasonably long time" since the service
// was started, then reset our restart duration back to
@@ -2159,6 +2162,15 @@ public final class ActiveServices {
}
}
+ if (r.fgRequired) {
+ if (DEBUG_FOREGROUND_SERVICE) {
+ Slog.v(TAG, "Whitelisting " + UserHandle.formatUid(r.appInfo.uid)
+ + " for fg-service launch");
+ }
+ mAm.tempWhitelistUidLocked(r.appInfo.uid,
+ SERVICE_START_FOREGROUND_TIMEOUT, "fg-service-launch");
+ }
+
if (!mPendingServices.contains(r)) {
mPendingServices.add(r);
}
@@ -3129,8 +3141,9 @@ public final class ActiveServices {
// Any services running in the application may need to be placed
// back in the pending list.
- if (allowRestart && sr.crashCount >= 2 && (sr.serviceInfo.applicationInfo.flags
- &ApplicationInfo.FLAG_PERSISTENT) == 0) {
+ if (allowRestart && sr.crashCount >= mAm.mConstants.BOUND_SERVICE_MAX_CRASH_RETRY
+ && (sr.serviceInfo.applicationInfo.flags
+ &ApplicationInfo.FLAG_PERSISTENT) == 0) {
Slog.w(TAG, "Service crashed " + sr.crashCount
+ " times, stopping: " + sr);
EventLog.writeEvent(EventLogTags.AM_SERVICE_CRASHED_TOO_MUCH,
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java
index 2cd2603bf554..b52db872f978 100644
--- a/services/core/java/com/android/server/am/ActivityManagerConstants.java
+++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java
@@ -32,6 +32,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_POWER_QUICK
* Settings constants that can modify the activity manager's behavior.
*/
final class ActivityManagerConstants extends ContentObserver {
+
// Key names stored in the settings value.
private static final String KEY_MAX_CACHED_PROCESSES = "max_cached_processes";
private static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time";
@@ -63,6 +64,8 @@ final class ActivityManagerConstants extends ContentObserver {
static final String KEY_SERVICE_MIN_RESTART_TIME_BETWEEN = "service_min_restart_time_between";
static final String KEY_MAX_SERVICE_INACTIVITY = "service_max_inactivity";
static final String KEY_BG_START_TIMEOUT = "service_bg_start_timeout";
+ static final String KEY_BOUND_SERVICE_CRASH_RESTART_DURATION = "service_crash_restart_duration";
+ static final String KEY_BOUND_SERVICE_CRASH_MAX_RETRY = "service_crash_max_retry";
private static final int DEFAULT_MAX_CACHED_PROCESSES = 32;
private static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60*1000;
@@ -88,6 +91,9 @@ final class ActivityManagerConstants extends ContentObserver {
private static final long DEFAULT_SERVICE_MIN_RESTART_TIME_BETWEEN = 10*1000;
private static final long DEFAULT_MAX_SERVICE_INACTIVITY = 30*60*1000;
private static final long DEFAULT_BG_START_TIMEOUT = 15*1000;
+ private static final long DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION = 30*60_000;
+ private static final int DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY = 16;
+
// Maximum number of cached processes we will allow.
public int MAX_CACHED_PROCESSES = DEFAULT_MAX_CACHED_PROCESSES;
@@ -190,6 +196,12 @@ final class ActivityManagerConstants extends ContentObserver {
// allowing the next pending start to run.
public long BG_START_TIMEOUT = DEFAULT_BG_START_TIMEOUT;
+ // Initial backoff delay for retrying bound foreground services
+ public long BOUND_SERVICE_CRASH_RESTART_DURATION = DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION;
+
+ // Maximum number of retries for bound foreground services that crash soon after start
+ public long BOUND_SERVICE_MAX_CRASH_RETRY = DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY;
+
private final ActivityManagerService mService;
private ContentResolver mResolver;
private final KeyValueListParser mParser = new KeyValueListParser(',');
@@ -308,6 +320,12 @@ final class ActivityManagerConstants extends ContentObserver {
DEFAULT_MAX_SERVICE_INACTIVITY);
BG_START_TIMEOUT = mParser.getLong(KEY_BG_START_TIMEOUT,
DEFAULT_BG_START_TIMEOUT);
+ BOUND_SERVICE_CRASH_RESTART_DURATION = mParser.getLong(
+ KEY_BOUND_SERVICE_CRASH_RESTART_DURATION,
+ DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION);
+ BOUND_SERVICE_MAX_CRASH_RETRY = mParser.getInt(KEY_BOUND_SERVICE_CRASH_MAX_RETRY,
+ DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY);
+
updateMaxCachedProcesses();
}
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 1d96a437ea20..12778d82d387 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -145,7 +145,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_CLEANUP;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_CONFIGURATION;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_FOCUS;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_IMMERSIVE;
-import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKSCREEN;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LRU;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_MU;
@@ -163,7 +162,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SWITCH;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_UID_OBSERVERS;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_URI_PERMISSION;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILITY;
-import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBLE_BEHIND;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.ActivityStackSupervisor.CREATE_IF_NEEDED;
@@ -177,6 +175,7 @@ import static com.android.server.am.TaskRecord.INVALID_TASK_ID;
import static com.android.server.am.TaskRecord.LOCK_TASK_AUTH_DONT_LOCK;
import static com.android.server.am.TaskRecord.REPARENT_KEEP_STACK_AT_FRONT;
import static com.android.server.am.TaskRecord.REPARENT_LEAVE_STACK_IN_PLACE;
+import static com.android.server.am.proto.ActivityManagerServiceProto.ACTIVITIES;
import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_OPEN;
import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_RELAUNCH;
import static com.android.server.wm.AppTransition.TRANSIT_NONE;
@@ -197,7 +196,6 @@ import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManager.StackId;
import android.app.ActivityManager.StackInfo;
import android.app.ActivityManager.TaskSnapshot;
-import android.app.ActivityManager.TaskThumbnailInfo;
import android.app.ActivityManagerInternal;
import android.app.ActivityManagerInternal.SleepToken;
import android.app.ActivityOptions;
@@ -350,6 +348,7 @@ import android.util.SparseArray;
import android.util.SparseIntArray;
import android.util.TimeUtils;
import android.util.Xml;
+import android.util.proto.ProtoOutputStream;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@@ -403,6 +402,7 @@ import com.android.server.firewall.IntentFirewall;
import com.android.server.job.JobSchedulerInternal;
import com.android.server.pm.Installer;
import com.android.server.pm.Installer.InstallerException;
+import com.android.server.utils.PriorityDump;
import com.android.server.vr.VrManagerInternal;
import com.android.server.wm.PinnedStackWindowController;
import com.android.server.wm.WindowManagerService;
@@ -463,7 +463,6 @@ public class ActivityManagerService extends IActivityManager.Stub
private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION;
private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS;
private static final String TAG_IMMERSIVE = TAG + POSTFIX_IMMERSIVE;
- private static final String TAG_LOCKSCREEN = TAG + POSTFIX_LOCKSCREEN;
private static final String TAG_LOCKTASK = TAG + POSTFIX_LOCKTASK;
private static final String TAG_LRU = TAG + POSTFIX_LRU;
private static final String TAG_MU = TAG + POSTFIX_MU;
@@ -481,7 +480,6 @@ public class ActivityManagerService extends IActivityManager.Stub
private static final String TAG_UID_OBSERVERS = TAG + POSTFIX_UID_OBSERVERS;
private static final String TAG_URI_PERMISSION = TAG + POSTFIX_URI_PERMISSION;
private static final String TAG_VISIBILITY = TAG + POSTFIX_VISIBILITY;
- private static final String TAG_VISIBLE_BEHIND = TAG + POSTFIX_VISIBLE_BEHIND;
// Mock "pretend we're idle now" broadcast action to the job scheduler; declared
// here so that while the job scheduler can depend on AMS, the other way around
@@ -685,11 +683,6 @@ public class ActivityManagerService extends IActivityManager.Stub
ActivityInfo mLastAddedTaskActivity;
/**
- * List of packages whitelisted by DevicePolicyManager for locktask. Indexed by userId.
- */
- SparseArray<String[]> mLockTaskPackages = new SparseArray<>();
-
- /**
* The package name of the DeviceOwner. This package is not permitted to have its data cleared.
*/
String mDeviceOwnerName;
@@ -715,9 +708,45 @@ public class ActivityManagerService extends IActivityManager.Stub
@VisibleForTesting
long mWaitForNetworkTimeoutMs;
+ /**
+ * Helper class which parses out priority arguments and dumps sections according to their
+ * priority. If priority arguments are omitted, function calls the legacy dump command.
+ */
+ private final PriorityDump.PriorityDumper mPriorityDumper = new PriorityDump.PriorityDumper() {
+ @Override
+ public void dumpCritical(FileDescriptor fd, PrintWriter pw, String[] args) {
+ doDump(fd, pw, new String[] {"activities"});
+ }
+
+ @Override
+ public void dumpNormal(FileDescriptor fd, PrintWriter pw, String[] args) {
+ doDump(fd, pw, new String[] {"settings"});
+ doDump(fd, pw, new String[] {"intents"});
+ doDump(fd, pw, new String[] {"broadcasts"});
+ doDump(fd, pw, new String[] {"providers"});
+ doDump(fd, pw, new String[] {"permissions"});
+ doDump(fd, pw, new String[] {"services"});
+ doDump(fd, pw, new String[] {"recents"});
+ doDump(fd, pw, new String[] {"lastanr"});
+ doDump(fd, pw, new String[] {"starter"});
+ if (mAssociations.size() > 0) {
+ doDump(fd, pw, new String[] {"associations"});
+ }
+ doDump(fd, pw, new String[] {"processes"});
+ doDump(fd, pw, new String[] {"-v", "all"});
+ doDump(fd, pw, new String[] {"service", "all"});
+ doDump(fd, pw, new String[] {"provider", "all"});
+ }
+
+ @Override
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ doDump(fd, pw, args);
+ }
+ };
+
public boolean canShowErrorDialogs() {
return mShowDialogs && !mSleeping && !mShuttingDown
- && !mKeyguardController.isKeyguardShowing()
+ && !mKeyguardController.isKeyguardShowing(DEFAULT_DISPLAY)
&& !(UserManager.isDeviceInDemoMode(mContext)
&& mUserController.getCurrentUser().isDemo());
}
@@ -1475,7 +1504,7 @@ public class ActivityManagerService extends IActivityManager.Stub
* Flag that indicates if multi-window is enabled.
*
* For any particular form of multi-window to be enabled, generic multi-window must be enabled
- * in {@link com.android.internal.R.bool.config_supportsMultiWindow} config or
+ * in {@link com.android.internal.R.bool#config_supportsMultiWindow} config or
* {@link Settings.Global#DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES} development option set.
* At least one of the forms of multi-window must be enabled in order for this flag to be
* initialized to 'true'.
@@ -1564,6 +1593,13 @@ public class ActivityManagerService extends IActivityManager.Stub
final ArrayList<UidRecord.ChangeItem> mPendingUidChanges = new ArrayList<>();
final ArrayList<UidRecord.ChangeItem> mAvailUidChanges = new ArrayList<>();
+ OomAdjObserver mCurOomAdjObserver;
+ int mCurOomAdjUid;
+
+ interface OomAdjObserver {
+ void onOomAdjMessage(String msg);
+ }
+
/**
* Runtime CPU use collection thread. This object's lock is used to
* perform synchronization with the thread (notifying it to run).
@@ -1649,43 +1685,32 @@ public class ActivityManagerService extends IActivityManager.Stub
static final int DISPATCH_PROCESSES_CHANGED_UI_MSG = 31;
static final int DISPATCH_PROCESS_DIED_UI_MSG = 32;
static final int REPORT_MEM_USAGE_MSG = 33;
- static final int REPORT_USER_SWITCH_MSG = 34;
- static final int CONTINUE_USER_SWITCH_MSG = 35;
- static final int USER_SWITCH_TIMEOUT_MSG = 36;
static final int IMMERSIVE_MODE_LOCK_MSG = 37;
static final int PERSIST_URI_GRANTS_MSG = 38;
static final int REQUEST_ALL_PSS_MSG = 39;
- static final int START_PROFILES_MSG = 40;
static final int UPDATE_TIME_PREFERENCE_MSG = 41;
- static final int SYSTEM_USER_START_MSG = 42;
- static final int SYSTEM_USER_CURRENT_MSG = 43;
static final int ENTER_ANIMATION_COMPLETE_MSG = 44;
static final int FINISH_BOOTING_MSG = 45;
- static final int START_USER_SWITCH_UI_MSG = 46;
static final int SEND_LOCALE_TO_MOUNT_DAEMON_MSG = 47;
static final int DISMISS_DIALOG_UI_MSG = 48;
static final int NOTIFY_CLEARTEXT_NETWORK_MSG = 49;
static final int POST_DUMP_HEAP_NOTIFICATION_MSG = 50;
static final int DELETE_DUMPHEAP_MSG = 51;
- static final int FOREGROUND_PROFILE_CHANGED_MSG = 52;
static final int DISPATCH_UIDS_CHANGED_UI_MSG = 53;
static final int REPORT_TIME_TRACKER_MSG = 54;
- static final int REPORT_USER_SWITCH_COMPLETE_MSG = 55;
static final int SHUTDOWN_UI_AUTOMATION_CONNECTION_MSG = 56;
static final int CONTENT_PROVIDER_PUBLISH_TIMEOUT_MSG = 57;
static final int IDLE_UIDS_MSG = 58;
- static final int SYSTEM_USER_UNLOCK_MSG = 59;
static final int LOG_STACK_STATE = 60;
static final int VR_MODE_CHANGE_MSG = 61;
static final int SHOW_UNSUPPORTED_DISPLAY_SIZE_DIALOG_MSG = 62;
static final int HANDLE_TRUST_STORAGE_UPDATE_MSG = 63;
- static final int REPORT_LOCKED_BOOT_COMPLETE_MSG = 64;
static final int NOTIFY_VR_SLEEPING_MSG = 65;
static final int SERVICE_FOREGROUND_TIMEOUT_MSG = 66;
static final int DISPATCH_PENDING_INTENT_CANCEL_MSG = 67;
static final int PUSH_TEMP_WHITELIST_UI_MSG = 68;
static final int SERVICE_FOREGROUND_CRASH_MSG = 69;
- static final int START_USER_SWITCH_FG_MSG = 712;
+ static final int DISPATCH_OOM_ADJ_OBSERVER_MSG = 70;
static final int FIRST_ACTIVITY_STACK_MSG = 100;
static final int FIRST_BROADCAST_QUEUE_MSG = 200;
@@ -1898,10 +1923,6 @@ public class ActivityManagerService extends IActivityManager.Stub
}
break;
}
- case START_USER_SWITCH_UI_MSG: {
- mUserController.showUserSwitchDialog((Pair<UserInfo, UserInfo>) msg.obj);
- break;
- }
case DISMISS_DIALOG_UI_MSG: {
final Dialog d = (Dialog) msg.obj;
d.dismiss();
@@ -1920,6 +1941,9 @@ public class ActivityManagerService extends IActivityManager.Stub
case DISPATCH_UIDS_CHANGED_UI_MSG: {
dispatchUidsChanged();
} break;
+ case DISPATCH_OOM_ADJ_OBSERVER_MSG: {
+ dispatchOomAdjObserver((String)msg.obj);
+ } break;
case PUSH_TEMP_WHITELIST_UI_MSG: {
pushTempWhitelist();
} break;
@@ -2127,22 +2151,6 @@ public class ActivityManagerService extends IActivityManager.Stub
thread.start();
break;
}
- case START_USER_SWITCH_FG_MSG: {
- mUserController.startUserInForeground(msg.arg1);
- break;
- }
- case REPORT_USER_SWITCH_MSG: {
- mUserController.dispatchUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2);
- break;
- }
- case CONTINUE_USER_SWITCH_MSG: {
- mUserController.continueUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2);
- break;
- }
- case USER_SWITCH_TIMEOUT_MSG: {
- mUserController.timeoutUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2);
- break;
- }
case IMMERSIVE_MODE_LOCK_MSG: {
final boolean nextState = (msg.arg1 != 0);
if (mUpdateLock.isHeld() != nextState) {
@@ -2167,12 +2175,6 @@ public class ActivityManagerService extends IActivityManager.Stub
}
break;
}
- case START_PROFILES_MSG: {
- synchronized (ActivityManagerService.this) {
- mUserController.startProfilesLocked();
- }
- break;
- }
case UPDATE_TIME_PREFERENCE_MSG: {
// The user's time format preference might have changed.
// For convenience we re-use the Intent extra values.
@@ -2191,35 +2193,6 @@ public class ActivityManagerService extends IActivityManager.Stub
}
break;
}
- case SYSTEM_USER_START_MSG: {
- mBatteryStatsService.noteEvent(BatteryStats.HistoryItem.EVENT_USER_RUNNING_START,
- Integer.toString(msg.arg1), msg.arg1);
- mSystemServiceManager.startUser(msg.arg1);
- break;
- }
- case SYSTEM_USER_UNLOCK_MSG: {
- final int userId = msg.arg1;
- mSystemServiceManager.unlockUser(userId);
- synchronized (ActivityManagerService.this) {
- mRecentTasks.loadUserRecentsLocked(userId);
- }
- if (userId == UserHandle.USER_SYSTEM) {
- startPersistentApps(PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
- }
- installEncryptionUnawareProviders(userId);
- mUserController.finishUserUnlocked((UserState) msg.obj);
- break;
- }
- case SYSTEM_USER_CURRENT_MSG: {
- mBatteryStatsService.noteEvent(
- BatteryStats.HistoryItem.EVENT_USER_FOREGROUND_FINISH,
- Integer.toString(msg.arg2), msg.arg2);
- mBatteryStatsService.noteEvent(
- BatteryStats.HistoryItem.EVENT_USER_FOREGROUND_START,
- Integer.toString(msg.arg1), msg.arg1);
- mSystemServiceManager.switchUser(msg.arg1);
- break;
- }
case ENTER_ANIMATION_COMPLETE_MSG: {
synchronized (ActivityManagerService.this) {
ActivityRecord r = ActivityRecord.forTokenLocked((IBinder) msg.obj);
@@ -2359,19 +2332,10 @@ public class ActivityManagerService extends IActivityManager.Stub
mMemWatchDumpUid = -1;
}
} break;
- case FOREGROUND_PROFILE_CHANGED_MSG: {
- mUserController.dispatchForegroundProfileChanged(msg.arg1);
- } break;
case REPORT_TIME_TRACKER_MSG: {
AppTimeTracker tracker = (AppTimeTracker)msg.obj;
tracker.deliverResult(mContext);
} break;
- case REPORT_USER_SWITCH_COMPLETE_MSG: {
- mUserController.dispatchUserSwitchComplete(msg.arg1);
- } break;
- case REPORT_LOCKED_BOOT_COMPLETE_MSG: {
- mUserController.dispatchLockedBootComplete(msg.arg1);
- } break;
case SHUTDOWN_UI_AUTOMATION_CONNECTION_MSG: {
IUiAutomationConnection connection = (IUiAutomationConnection) msg.obj;
try {
@@ -2576,6 +2540,14 @@ public class ActivityManagerService extends IActivityManager.Stub
static class MemBinder extends Binder {
ActivityManagerService mActivityManagerService;
+ private final PriorityDump.PriorityDumper mPriorityDumper =
+ new PriorityDump.PriorityDumper() {
+ @Override
+ public void dumpNormal(FileDescriptor fd, PrintWriter pw, String[] args) {
+ mActivityManagerService.dumpApplicationMemoryUsage(fd, pw, " ", args, false, null);
+ }
+ };
+
MemBinder(ActivityManagerService activityManagerService) {
mActivityManagerService = activityManagerService;
}
@@ -2584,7 +2556,7 @@ public class ActivityManagerService extends IActivityManager.Stub
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext,
"meminfo", pw)) return;
- mActivityManagerService.dumpApplicationMemoryUsage(fd, pw, " ", args, false, null);
+ PriorityDump.dump(mPriorityDumper, fd, pw, args);
}
}
@@ -2618,19 +2590,27 @@ public class ActivityManagerService extends IActivityManager.Stub
static class CpuBinder extends Binder {
ActivityManagerService mActivityManagerService;
+ private final PriorityDump.PriorityDumper mPriorityDumper =
+ new PriorityDump.PriorityDumper() {
+ @Override
+ public void dumpCritical(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext,
+ "cpuinfo", pw)) return;
+ synchronized (mActivityManagerService.mProcessCpuTracker) {
+ pw.print(mActivityManagerService.mProcessCpuTracker.printCurrentLoad());
+ pw.print(mActivityManagerService.mProcessCpuTracker.printCurrentState(
+ SystemClock.uptimeMillis()));
+ }
+ }
+ };
+
CpuBinder(ActivityManagerService activityManagerService) {
mActivityManagerService = activityManagerService;
}
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext,
- "cpuinfo", pw)) return;
- synchronized (mActivityManagerService.mProcessCpuTracker) {
- pw.print(mActivityManagerService.mProcessCpuTracker.printCurrentLoad());
- pw.print(mActivityManagerService.mProcessCpuTracker.printCurrentState(
- SystemClock.uptimeMillis()));
- }
+ PriorityDump.dump(mPriorityDumper, fd, pw, args);
}
}
@@ -3089,7 +3069,7 @@ public class ActivityManagerService extends IActivityManager.Stub
*/
void setResumedActivityUncheckLocked(ActivityRecord r, String reason) {
final TaskRecord task = r.getTask();
- if (task.isApplicationTask()) {
+ if (task.isActivityTypeStandard()) {
if (mCurAppTimeTracker != r.appTimeTracker) {
// We are switching app tracking. Complete the current one.
if (mCurAppTimeTracker != null) {
@@ -3139,9 +3119,7 @@ public class ActivityManagerService extends IActivityManager.Stub
}
if (mLastResumedActivity != null && r.userId != mLastResumedActivity.userId) {
- mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG);
- mHandler.obtainMessage(
- FOREGROUND_PROFILE_CHANGED_MSG, r.userId, 0).sendToTarget();
+ mUserController.sendForegroundProfileChanged(r.userId);
}
mLastResumedActivity = r;
@@ -3584,10 +3562,8 @@ public class ActivityManagerService extends IActivityManager.Stub
}
void notifyPackageUse(String packageName, int reason) {
- IPackageManager pm = AppGlobals.getPackageManager();
- try {
- pm.notifyPackageUse(packageName, reason);
- } catch (RemoteException e) {
+ synchronized(this) {
+ getPackageManagerInternalLocked().notifyPackageUse(packageName, reason);
}
}
@@ -3828,41 +3804,47 @@ public class ActivityManagerService extends IActivityManager.Stub
uid = 0;
}
}
- int debugFlags = 0;
+ int runtimeFlags = 0;
if ((app.info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
- debugFlags |= Zygote.DEBUG_ENABLE_JDWP;
- debugFlags |= Zygote.DEBUG_JAVA_DEBUGGABLE;
+ runtimeFlags |= Zygote.DEBUG_ENABLE_JDWP;
+ runtimeFlags |= Zygote.DEBUG_JAVA_DEBUGGABLE;
// Also turn on CheckJNI for debuggable apps. It's quite
// awkward to turn on otherwise.
- debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI;
+ runtimeFlags |= Zygote.DEBUG_ENABLE_CHECKJNI;
}
// Run the app in safe mode if its manifest requests so or the
// system is booted in safe mode.
if ((app.info.flags & ApplicationInfo.FLAG_VM_SAFE_MODE) != 0 ||
mSafeMode == true) {
- debugFlags |= Zygote.DEBUG_ENABLE_SAFEMODE;
+ runtimeFlags |= Zygote.DEBUG_ENABLE_SAFEMODE;
}
if ("1".equals(SystemProperties.get("debug.checkjni"))) {
- debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI;
+ runtimeFlags |= Zygote.DEBUG_ENABLE_CHECKJNI;
}
String genDebugInfoProperty = SystemProperties.get("debug.generate-debug-info");
if ("true".equals(genDebugInfoProperty)) {
- debugFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO;
+ runtimeFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO;
}
if ("1".equals(SystemProperties.get("debug.jni.logging"))) {
- debugFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING;
+ runtimeFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING;
}
if ("1".equals(SystemProperties.get("debug.assert"))) {
- debugFlags |= Zygote.DEBUG_ENABLE_ASSERT;
+ runtimeFlags |= Zygote.DEBUG_ENABLE_ASSERT;
}
if (mNativeDebuggingApp != null && mNativeDebuggingApp.equals(app.processName)) {
// Enable all debug flags required by the native debugger.
- debugFlags |= Zygote.DEBUG_ALWAYS_JIT; // Don't interpret anything
- debugFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO; // Generate debug info
- debugFlags |= Zygote.DEBUG_NATIVE_DEBUGGABLE; // Disbale optimizations
+ runtimeFlags |= Zygote.DEBUG_ALWAYS_JIT; // Don't interpret anything
+ runtimeFlags |= Zygote.DEBUG_GENERATE_DEBUG_INFO; // Generate debug info
+ runtimeFlags |= Zygote.DEBUG_NATIVE_DEBUGGABLE; // Disbale optimizations
mNativeDebuggingApp = null;
}
+ if (app.info.isPrivilegedApp() &&
+ !SystemProperties.getBoolean("pm.dexopt.priv-apps", true)) {
+ runtimeFlags |= Zygote.DISABLE_VERIFIER;
+ runtimeFlags |= Zygote.ONLY_USE_SYSTEM_OAT_FILES;
+ }
+
String invokeWith = null;
if ((app.info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
// Debuggable apps may include a wrapper script with their library directory.
@@ -3908,12 +3890,12 @@ public class ActivityManagerService extends IActivityManager.Stub
ProcessStartResult startResult;
if (hostingType.equals("webview_service")) {
startResult = startWebView(entryPoint,
- app.processName, uid, uid, gids, debugFlags, mountExternal,
+ app.processName, uid, uid, gids, runtimeFlags, mountExternal,
app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet,
app.info.dataDir, null, null);
} else {
startResult = Process.start(entryPoint,
- app.processName, uid, uid, gids, debugFlags, mountExternal,
+ app.processName, uid, uid, gids, runtimeFlags, mountExternal,
app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet,
app.info.dataDir, invokeWith, null);
}
@@ -4145,15 +4127,6 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
- void enforceShellRestriction(String restriction, int userHandle) {
- if (Binder.getCallingUid() == SHELL_UID) {
- if (userHandle < 0 || mUserController.hasUserRestriction(restriction, userHandle)) {
- throw new SecurityException("Shell does not have permission to access user "
- + userHandle);
- }
- }
- }
-
@Override
public int getFrontActivityScreenCompatMode() {
enforceNotIsolatedCaller("getFrontActivityScreenCompatMode");
@@ -4458,6 +4431,38 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
+ void dispatchOomAdjObserver(String msg) {
+ OomAdjObserver observer;
+ synchronized (this) {
+ observer = mCurOomAdjObserver;
+ }
+
+ if (observer != null) {
+ observer.onOomAdjMessage(msg);
+ }
+ }
+
+ void setOomAdjObserver(int uid, OomAdjObserver observer) {
+ synchronized (this) {
+ mCurOomAdjUid = uid;
+ mCurOomAdjObserver = observer;
+ }
+ }
+
+ void clearOomAdjObserver() {
+ synchronized (this) {
+ mCurOomAdjUid = -1;
+ mCurOomAdjObserver = null;
+ }
+ }
+
+ void reportOomAdjMessageLocked(String tag, String msg) {
+ Slog.d(tag, msg);
+ if (mCurOomAdjObserver != null) {
+ mUiHandler.obtainMessage(DISPATCH_OOM_ADJ_OBSERVER_MSG, msg).sendToTarget();
+ }
+ }
+
@Override
public final int startActivity(IApplicationThread caller, String callingPackage,
Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
@@ -6964,7 +6969,7 @@ public class ActivityManagerService extends IActivityManager.Stub
mProfileProc = app;
profilerInfo = (mProfilerInfo != null && mProfilerInfo.profileFile != null) ?
new ProfilerInfo(mProfilerInfo) : null;
- agent = profilerInfo.agent;
+ agent = mProfilerInfo != null ? mProfilerInfo.agent : null;
} else if (app.instr != null && app.instr.mProfileFile != null) {
profilerInfo = new ProfilerInfo(app.instr.mProfileFile, null, 0, false, false,
null);
@@ -7328,7 +7333,7 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
});
- scheduleStartProfilesLocked();
+ mUserController.scheduleStartProfilesLocked();
}
}
}
@@ -7828,6 +7833,15 @@ public class ActivityManagerService extends IActivityManager.Stub
}
@Override
+ public boolean isIntentSenderAForegroundService(IIntentSender pendingResult) {
+ if (pendingResult instanceof PendingIntentRecord) {
+ final PendingIntentRecord res = (PendingIntentRecord) pendingResult;
+ return res.key.type == ActivityManager.INTENT_SENDER_FOREGROUND_SERVICE;
+ }
+ return false;
+ }
+
+ @Override
public Intent getIntentForIntentSender(IIntentSender pendingResult) {
enforceCallingPermission(Manifest.permission.GET_INTENT_SENDER_INTENT,
"getIntentForIntentSender()");
@@ -8065,7 +8079,7 @@ public class ActivityManagerService extends IActivityManager.Stub
stack.setPictureInPictureActions(actions);
MetricsLogger.action(mContext, MetricsEvent.ACTION_PICTURE_IN_PICTURE_ENTERED,
- r.supportsPictureInPictureWhilePausing);
+ r.supportsEnterPipOnTaskSwitch);
logPictureInPictureArgs(params);
};
@@ -9930,7 +9944,7 @@ public class ActivityManagerService extends IActivityManager.Stub
if (!allowed) {
// If the caller doesn't have the GET_TASKS permission, then only
// allow them to see a small subset of tasks -- their own and home.
- if (!tr.isHomeTask() && tr.effectiveUid != callingUid) {
+ if (!tr.isActivityTypeHome() && tr.effectiveUid != callingUid) {
if (DEBUG_RECENTS) Slog.d(TAG_RECENTS, "Skipping, not allowed: " + tr);
continue;
}
@@ -9991,26 +10005,12 @@ public class ActivityManagerService extends IActivityManager.Stub
}
@Override
- public ActivityManager.TaskThumbnail getTaskThumbnail(int id) {
- synchronized (this) {
- enforceCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER,
- "getTaskThumbnail()");
- final TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(
- id, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID);
- if (tr != null) {
- return tr.getTaskThumbnailLocked();
- }
- }
- return null;
- }
-
- @Override
public ActivityManager.TaskDescription getTaskDescription(int id) {
synchronized (this) {
enforceCallingPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS,
"getTaskDescription()");
final TaskRecord tr = mStackSupervisor.anyTaskForIdLocked(id,
- MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID);
+ MATCH_TASK_IN_STACKS_OR_RECENT_TASKS);
if (tr != null) {
return tr.lastTaskDescription;
}
@@ -10071,7 +10071,7 @@ public class ActivityManagerService extends IActivityManager.Stub
TaskRecord task = new TaskRecord(this,
mStackSupervisor.getNextTaskIdForUserLocked(r.userId),
- ainfo, intent, description, new TaskThumbnailInfo());
+ ainfo, intent, description);
int trimIdx = mRecentTasks.trimForTaskLocked(task, false);
if (trimIdx >= 0) {
@@ -10090,8 +10090,8 @@ public class ActivityManagerService extends IActivityManager.Stub
mRecentTasks.add(task);
r.getStack().addTask(task, false, "addAppTask");
- task.setLastThumbnailLocked(thumbnail);
- task.freeLastThumbnail();
+ // TODO: Send the thumbnail to WM to store it.
+
return task.taskId;
}
} finally {
@@ -10123,7 +10123,7 @@ public class ActivityManagerService extends IActivityManager.Stub
public void setTaskResizeable(int taskId, int resizeableMode) {
synchronized (this) {
final TaskRecord task = mStackSupervisor.anyTaskForIdLocked(
- taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID);
+ taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS);
if (task == null) {
Slog.w(TAG, "setTaskResizeable: taskId=" + taskId + " not found");
return;
@@ -10186,7 +10186,7 @@ public class ActivityManagerService extends IActivityManager.Stub
try {
synchronized (this) {
final TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId,
- MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID);
+ MATCH_TASK_IN_STACKS_OR_RECENT_TASKS);
if (task == null) {
Slog.w(TAG, "getTaskBounds: taskId=" + taskId + " not found");
return rect;
@@ -10218,7 +10218,7 @@ public class ActivityManagerService extends IActivityManager.Stub
try {
synchronized (this) {
final TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId,
- MATCH_TASK_IN_STACKS_ONLY, INVALID_STACK_ID);
+ MATCH_TASK_IN_STACKS_ONLY);
if (task == null) {
Slog.w(TAG, "cancelTaskWindowTransition: taskId=" + taskId + " not found");
return;
@@ -10237,7 +10237,7 @@ public class ActivityManagerService extends IActivityManager.Stub
try {
synchronized (this) {
final TaskRecord task = mStackSupervisor.anyTaskForIdLocked(taskId,
- MATCH_TASK_IN_STACKS_ONLY, INVALID_STACK_ID);
+ MATCH_TASK_IN_STACKS_ONLY);
if (task == null) {
Slog.w(TAG, "cancelTaskThumbnailTransition: taskId=" + taskId + " not found");
return;
@@ -10257,7 +10257,7 @@ public class ActivityManagerService extends IActivityManager.Stub
final TaskRecord task;
synchronized (this) {
task = mStackSupervisor.anyTaskForIdLocked(taskId,
- MATCH_TASK_IN_STACKS_OR_RECENT_TASKS, INVALID_STACK_ID);
+ MATCH_TASK_IN_STACKS_OR_RECENT_TASKS);
if (task == null) {
Slog.w(TAG, "getTaskSnapshot: taskId=" + taskId + " not found");
return null;
@@ -10571,56 +10571,6 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
- @Override
- public void swapDockedAndFullscreenStack() throws RemoteException {
- enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "swapDockedAndFullscreenStack()");
- synchronized (this) {
- long ident = Binder.clearCallingIdentity();
- try {
- final ActivityStack fullscreenStack = mStackSupervisor.getStack(
- FULLSCREEN_WORKSPACE_STACK_ID);
- final TaskRecord topTask = fullscreenStack != null ? fullscreenStack.topTask()
- : null;
- final ActivityStack dockedStack = mStackSupervisor.getStack(DOCKED_STACK_ID);
- final ArrayList<TaskRecord> tasks = dockedStack != null ? dockedStack.getAllTasks()
- : null;
- if (topTask == null || tasks == null || tasks.size() == 0) {
- Slog.w(TAG,
- "Unable to swap tasks, either docked or fullscreen stack is empty.");
- return;
- }
-
- // TODO: App transition
- mWindowManager.prepareAppTransition(TRANSIT_ACTIVITY_RELAUNCH, false);
-
- // Defer the resume until we move all the docked tasks to the fullscreen stack below
- topTask.reparent(DOCKED_STACK_ID, ON_TOP, REPARENT_KEEP_STACK_AT_FRONT, ANIMATE,
- DEFER_RESUME, "swapDockedAndFullscreenStack - DOCKED_STACK");
- final int size = tasks.size();
- for (int i = 0; i < size; i++) {
- final int id = tasks.get(i).taskId;
- if (id == topTask.taskId) {
- continue;
- }
-
- // Defer the resume until after all the tasks have been moved
- tasks.get(i).reparent(FULLSCREEN_WORKSPACE_STACK_ID, ON_TOP,
- REPARENT_KEEP_STACK_AT_FRONT, ANIMATE, DEFER_RESUME,
- "swapDockedAndFullscreenStack - FULLSCREEN_STACK");
- }
-
- // Because we deferred the resume to avoid conflicts with stack switches while
- // resuming, we need to do it after all the tasks are moved.
- mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
- mStackSupervisor.resumeFocusedStackTopActivityLocked();
-
- mWindowManager.executeAppTransition();
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- }
- }
-
/**
* Moves the input task to the docked stack.
*
@@ -10844,7 +10794,6 @@ public class ActivityManagerService extends IActivityManager.Stub
@Override
public void updateLockTaskPackages(int userId, String[] packages) {
- // TODO: move this into LockTaskController
final int callingUid = Binder.getCallingUid();
if (callingUid != 0 && callingUid != SYSTEM_UID) {
enforceCallingPermission(android.Manifest.permission.UPDATE_LOCK_TASK_PACKAGES,
@@ -10853,8 +10802,7 @@ public class ActivityManagerService extends IActivityManager.Stub
synchronized (this) {
if (DEBUG_LOCKTASK) Slog.w(TAG_LOCKTASK, "Whitelisting " + userId + ":" +
Arrays.toString(packages));
- mLockTaskPackages.put(userId, packages);
- mLockTaskController.onLockTaskPackagesUpdated();
+ mLockTaskController.updateLockTaskPackages(userId, packages);
}
}
@@ -12035,7 +11983,7 @@ public class ActivityManagerService extends IActivityManager.Stub
//mUsageStatsService.monitorPackages();
}
- private void startPersistentApps(int matchFlags) {
+ void startPersistentApps(int matchFlags) {
if (mFactoryTest == FactoryTest.FACTORY_TEST_LOW_LEVEL) return;
synchronized (this) {
@@ -12056,7 +12004,7 @@ public class ActivityManagerService extends IActivityManager.Stub
* When a user is unlocked, we need to install encryption-unaware providers
* belonging to any running apps.
*/
- private void installEncryptionUnawareProviders(int userId) {
+ void installEncryptionUnawareProviders(int userId) {
// We're only interested in providers that are encryption unaware, and
// we don't care about uninstalled apps, since there's no way they're
// running at this point.
@@ -12361,19 +12309,14 @@ public class ActivityManagerService extends IActivityManager.Stub
void onWakefulnessChanged(int wakefulness) {
synchronized(this) {
+ boolean wasAwake = mWakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE;
+ boolean isAwake = wakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE;
mWakefulness = wakefulness;
- // Also update state in a special way for running foreground services UI.
- switch (mWakefulness) {
- case PowerManagerInternal.WAKEFULNESS_ASLEEP:
- case PowerManagerInternal.WAKEFULNESS_DREAMING:
- case PowerManagerInternal.WAKEFULNESS_DOZING:
- mServices.updateScreenStateLocked(false /* screenOn */);
- break;
- case PowerManagerInternal.WAKEFULNESS_AWAKE:
- default:
- mServices.updateScreenStateLocked(true /* screenOn */);
- break;
+ if (wasAwake != isAwake) {
+ // Also update state in a special way for running foreground services UI.
+ mServices.updateScreenStateLocked(isAwake);
+ sendNotifyVrManagerOfSleepState(!isAwake);
}
}
}
@@ -12409,7 +12352,6 @@ public class ActivityManagerService extends IActivityManager.Stub
}
mStackSupervisor.applySleepTokensLocked(true /* applyToStacks */);
if (wasSleeping) {
- sendNotifyVrManagerOfSleepState(false);
updateOomAdjLocked();
}
} else if (!mSleeping && shouldSleep) {
@@ -12419,7 +12361,6 @@ public class ActivityManagerService extends IActivityManager.Stub
}
mTopProcessState = ActivityManager.PROCESS_STATE_TOP_SLEEPING;
mStackSupervisor.goingToSleepLocked();
- sendNotifyVrManagerOfSleepState(true);
updateOomAdjLocked();
}
}
@@ -12513,7 +12454,7 @@ public class ActivityManagerService extends IActivityManager.Stub
}
@Override
- public void setLockScreenShown(boolean showing) {
+ public void setLockScreenShown(boolean showing, int secondaryDisplayShowing) {
if (checkCallingPermission(android.Manifest.permission.DEVICE_POWER)
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Requires permission "
@@ -12523,7 +12464,7 @@ public class ActivityManagerService extends IActivityManager.Stub
synchronized(this) {
long ident = Binder.clearCallingIdentity();
try {
- mKeyguardController.setKeyguardShown(showing);
+ mKeyguardController.setKeyguardShown(showing, secondaryDisplayShowing);
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -12955,7 +12896,7 @@ public class ActivityManagerService extends IActivityManager.Stub
int userId;
synchronized (this) {
final ActivityStack focusedStack = getFocusedStack();
- if (focusedStack == null || focusedStack.isAssistantStack()) {
+ if (focusedStack == null || focusedStack.isActivityTypeAssistant()) {
return false;
}
@@ -13060,7 +13001,7 @@ public class ActivityManagerService extends IActivityManager.Stub
pae = new PendingAssistExtras(activity, extras, intent, hint, receiver, receiverExtras,
userHandle);
- pae.isHome = activity.isHomeActivity();
+ pae.isHome = activity.isActivityTypeHome();
// Increment the sessionId if necessary
if (newSessionId) {
@@ -13129,7 +13070,6 @@ public class ActivityManagerService extends IActivityManager.Stub
return;
}
}
-
// We are now ready to launch the assist activity.
IResultReceiver sendReceiver = null;
Bundle sendBundle = null;
@@ -13159,17 +13099,24 @@ public class ActivityManagerService extends IActivityManager.Stub
return;
}
- long ident = Binder.clearCallingIdentity();
+ final long ident = Binder.clearCallingIdentity();
try {
- pae.intent.replaceExtras(pae.extras);
- pae.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_SINGLE_TOP
- | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- closeSystemDialogs("assist");
- try {
- mContext.startActivityAsUser(pae.intent, new UserHandle(pae.userHandle));
- } catch (ActivityNotFoundException e) {
- Slog.w(TAG, "No activity to handle assist action.", e);
+ if (TextUtils.equals(pae.intent.getAction(),
+ android.service.voice.VoiceInteractionService.SERVICE_INTERFACE)) {
+ pae.intent.putExtras(pae.extras);
+ mContext.startServiceAsUser(pae.intent, new UserHandle(pae.userHandle));
+ } else {
+ pae.intent.replaceExtras(pae.extras);
+ pae.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_SINGLE_TOP
+ | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ closeSystemDialogs("assist");
+
+ try {
+ mContext.startActivityAsUser(pae.intent, new UserHandle(pae.userHandle));
+ } catch (ActivityNotFoundException e) {
+ Slog.w(TAG, "No activity to handle assist action.", e);
+ }
}
} finally {
Binder.restoreCallingIdentity(ident);
@@ -13287,7 +13234,7 @@ public class ActivityManagerService extends IActivityManager.Stub
synchronized (this) {
final ActivityRecord r = ActivityRecord.isInStackLocked(token);
if (r != null) {
- final ActivityOptions activityOptions = r.pendingOptions;
+ final ActivityOptions activityOptions = r.takeOptionsLocked();
return activityOptions == null ? null : activityOptions.toBundle();
}
return null;
@@ -13360,7 +13307,7 @@ public class ActivityManagerService extends IActivityManager.Stub
/**
* Schedule the given thread a normal scheduling priority.
*
- * @param newTid the tid of the thread to adjust the scheduling of.
+ * @param tid the tid of the thread to adjust the scheduling of.
* @param suppressLogs {@code true} if any error logging should be disabled.
*
* @return {@code true} if this succeeded.
@@ -13373,6 +13320,10 @@ public class ActivityManagerService extends IActivityManager.Stub
if (!suppressLogs) {
Slog.w(TAG, "Failed to set scheduling policy, thread does not exist:\n" + e);
}
+ } catch (SecurityException e) {
+ if (!suppressLogs) {
+ Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e);
+ }
}
return false;
}
@@ -13380,7 +13331,7 @@ public class ActivityManagerService extends IActivityManager.Stub
/**
* Schedule the given thread an FIFO scheduling priority.
*
- * @param newTid the tid of the thread to adjust the scheduling of.
+ * @param tid the tid of the thread to adjust the scheduling of.
* @param suppressLogs {@code true} if any error logging should be disabled.
*
* @return {@code true} if this succeeded.
@@ -13393,6 +13344,10 @@ public class ActivityManagerService extends IActivityManager.Stub
if (!suppressLogs) {
Slog.w(TAG, "Failed to set scheduling policy, thread does not exist:\n" + e);
}
+ } catch (SecurityException e) {
+ if (!suppressLogs) {
+ Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e);
+ }
}
return false;
}
@@ -13930,10 +13885,10 @@ public class ActivityManagerService extends IActivityManager.Stub
mContext.getPackageManager().hasSystemFeature(FEATURE_FREEFORM_WINDOW_MANAGEMENT)
|| Settings.Global.getInt(
resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0;
- final boolean supportsPictureInPicture =
- mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE);
final boolean supportsMultiWindow = ActivityManager.supportsMultiWindow(mContext);
+ final boolean supportsPictureInPicture = supportsMultiWindow &&
+ mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE);
final boolean supportsSplitScreenMultiWindow =
ActivityManager.supportsSplitScreenMultiWindow(mContext);
final boolean supportsMultiDisplay = mContext.getPackageManager()
@@ -14891,6 +14846,13 @@ public class ActivityManagerService extends IActivityManager.Stub
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ PriorityDump.dump(mPriorityDumper, fd, pw, args);
+ }
+
+ /**
+ * Wrapper function to print out debug data filtered by specified arguments.
+ */
+ private void doDump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return;
boolean dumpAll = false;
@@ -14899,6 +14861,7 @@ public class ActivityManagerService extends IActivityManager.Stub
boolean dumpCheckinFormat = false;
boolean dumpVisibleStacksOnly = false;
boolean dumpFocusedStackOnly = false;
+ boolean useProto = false;
String dumpPackage = null;
int opti = 0;
@@ -14932,12 +14895,26 @@ public class ActivityManagerService extends IActivityManager.Stub
} else if ("-h".equals(opt)) {
ActivityManagerShellCommand.dumpHelp(pw, true);
return;
+ } else if ("--proto".equals(opt)) {
+ useProto = true;
} else {
pw.println("Unknown argument: " + opt + "; use -h for help");
}
}
long origId = Binder.clearCallingIdentity();
+
+ if (useProto) {
+ //TODO: Options when dumping proto
+ final ProtoOutputStream proto = new ProtoOutputStream(fd);
+ synchronized (this) {
+ writeActivitiesToProtoLocked(proto);
+ }
+ proto.flush();
+ Binder.restoreCallingIdentity(origId);
+ return;
+ }
+
boolean more = false;
// Is the caller requesting to dump a particular piece of data?
if (opti < args.length) {
@@ -15281,6 +15258,10 @@ public class ActivityManagerService extends IActivityManager.Stub
Binder.restoreCallingIdentity(origId);
}
+ private void writeActivitiesToProtoLocked(ProtoOutputStream proto) {
+ mStackSupervisor.writeToProto(proto, ACTIVITIES);
+ }
+
private void dumpLastANRLocked(PrintWriter pw) {
pw.println("ACTIVITY MANAGER LAST ANR (dumpsys activity lastanr)");
if (mLastANRState == null) {
@@ -21874,10 +21855,12 @@ public class ActivityManagerService extends IActivityManager.Stub
int changes = 0;
if (app.curAdj != app.setAdj) {
- ProcessList.setOomAdj(app.pid, app.info.uid, app.curAdj);
- if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ,
- "Set " + app.pid + " " + app.processName + " adj " + app.curAdj + ": "
- + app.adjType);
+ ProcessList.setOomAdj(app.pid, app.uid, app.curAdj);
+ if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.info.uid) {
+ String msg = "Set " + app.pid + " " + app.processName + " adj "
+ + app.curAdj + ": " + app.adjType;
+ reportOomAdjMessageLocked(TAG_OOM_ADJ, msg);
+ }
app.setAdj = app.curAdj;
app.verifiedAdj = ProcessList.INVALID_ADJ;
}
@@ -21885,9 +21868,11 @@ public class ActivityManagerService extends IActivityManager.Stub
if (app.setSchedGroup != app.curSchedGroup) {
int oldSchedGroup = app.setSchedGroup;
app.setSchedGroup = app.curSchedGroup;
- if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ,
- "Setting sched group of " + app.processName
- + " to " + app.curSchedGroup);
+ if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.uid) {
+ String msg = "Setting sched group of " + app.processName
+ + " to " + app.curSchedGroup;
+ reportOomAdjMessageLocked(TAG_OOM_ADJ, msg);
+ }
if (app.waitingToKill != null && app.curReceivers.isEmpty()
&& app.setSchedGroup == ProcessList.SCHED_GROUP_BACKGROUND) {
app.kill(app.waitingToKill, true);
@@ -21946,13 +21931,21 @@ public class ActivityManagerService extends IActivityManager.Stub
app.curSchedGroup != ProcessList.SCHED_GROUP_TOP_APP) {
mVrController.onTopProcChangedLocked(app);
if (mUseFifoUiScheduling) {
- // Reset UI pipeline to SCHED_OTHER
- setThreadScheduler(app.pid, SCHED_OTHER, 0);
- setThreadPriority(app.pid, app.savedPriority);
- if (app.renderThreadTid != 0) {
- setThreadScheduler(app.renderThreadTid,
- SCHED_OTHER, 0);
- setThreadPriority(app.renderThreadTid, -4);
+ try {
+ // Reset UI pipeline to SCHED_OTHER
+ setThreadScheduler(app.pid, SCHED_OTHER, 0);
+ setThreadPriority(app.pid, app.savedPriority);
+ if (app.renderThreadTid != 0) {
+ setThreadScheduler(app.renderThreadTid,
+ SCHED_OTHER, 0);
+ setThreadPriority(app.renderThreadTid, -4);
+ }
+ } catch (IllegalArgumentException e) {
+ Slog.w(TAG,
+ "Failed to set scheduling policy, thread does not exist:\n"
+ + e);
+ } catch (SecurityException e) {
+ Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e);
}
} else {
// Reset priority for top app UI and render threads
@@ -22024,9 +22017,11 @@ public class ActivityManagerService extends IActivityManager.Stub
"Not requesting PSS of " + app + ": next=" + (app.nextPssTime-now));
}
if (app.setProcState != app.curProcState) {
- if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ,
- "Proc state change of " + app.processName
- + " to " + app.curProcState);
+ if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.uid) {
+ String msg = "Proc state change of " + app.processName
+ + " to " + app.curProcState;
+ reportOomAdjMessageLocked(TAG_OOM_ADJ, msg);
+ }
boolean setImportant = app.setProcState < ActivityManager.PROCESS_STATE_SERVICE;
boolean curImportant = app.curProcState < ActivityManager.PROCESS_STATE_SERVICE;
if (setImportant && !curImportant) {
@@ -22752,6 +22747,8 @@ public class ActivityManagerService extends IActivityManager.Stub
requestPssAllProcsLocked(now, false, mProcessStats.isMemFactorLowered());
}
+ ArrayList<UidRecord> becameIdle = null;
+
// Update from any uid changes.
if (mLocalPowerManager != null) {
mLocalPowerManager.startUidChanges();
@@ -22784,6 +22781,10 @@ public class ActivityManagerService extends IActivityManager.Stub
}
if (uidRec.idle && !uidRec.setIdle) {
uidChange = UidRecord.CHANGE_IDLE;
+ if (becameIdle == null) {
+ becameIdle = new ArrayList<>();
+ }
+ becameIdle.add(uidRec);
}
} else {
if (uidRec.idle) {
@@ -22815,6 +22816,14 @@ public class ActivityManagerService extends IActivityManager.Stub
mLocalPowerManager.finishUidChanges();
}
+ if (becameIdle != null) {
+ // If we have any new uids that became idle this time, we need to make sure
+ // they aren't left with running services.
+ for (int i = becameIdle.size() - 1; i >= 0; i--) {
+ mServices.stopInBackgroundLocked(becameIdle.get(i).uid);
+ }
+ }
+
if (mProcessStats.shouldWriteNowLocked(now)) {
mHandler.post(new Runnable() {
@Override public void run() {
@@ -23486,54 +23495,7 @@ public class ActivityManagerService extends IActivityManager.Stub
@Override
public boolean switchUser(final int targetUserId) {
- enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, targetUserId);
- int currentUserId;
- UserInfo targetUserInfo;
- synchronized (this) {
- currentUserId = mUserController.getCurrentUserIdLocked();
- targetUserInfo = mUserController.getUserInfo(targetUserId);
- if (targetUserId == currentUserId) {
- Slog.i(TAG, "user #" + targetUserId + " is already the current user");
- return true;
- }
- if (targetUserInfo == null) {
- Slog.w(TAG, "No user info for user #" + targetUserId);
- return false;
- }
- if (!targetUserInfo.isDemo() && UserManager.isDeviceInDemoMode(mContext)) {
- Slog.w(TAG, "Cannot switch to non-demo user #" + targetUserId
- + " when device is in demo mode");
- return false;
- }
- if (!targetUserInfo.supportsSwitchTo()) {
- Slog.w(TAG, "Cannot switch to User #" + targetUserId + ": not supported");
- return false;
- }
- if (targetUserInfo.isManagedProfile()) {
- Slog.w(TAG, "Cannot switch to User #" + targetUserId + ": not a full user");
- return false;
- }
- mUserController.setTargetUserIdLocked(targetUserId);
- }
- if (mUserController.mUserSwitchUiEnabled) {
- UserInfo currentUserInfo = mUserController.getUserInfo(currentUserId);
- Pair<UserInfo, UserInfo> userNames = new Pair<>(currentUserInfo, targetUserInfo);
- mUiHandler.removeMessages(START_USER_SWITCH_UI_MSG);
- mUiHandler.sendMessage(mHandler.obtainMessage(
- START_USER_SWITCH_UI_MSG, userNames));
- } else {
- mHandler.removeMessages(START_USER_SWITCH_FG_MSG);
- mHandler.sendMessage(mHandler.obtainMessage(
- START_USER_SWITCH_FG_MSG, targetUserId, 0));
- }
- return true;
- }
-
- void scheduleStartProfilesLocked() {
- if (!mHandler.hasMessages(START_PROFILES_MSG)) {
- mHandler.sendMessageDelayed(mHandler.obtainMessage(START_PROFILES_MSG),
- DateUtils.SECOND_IN_MILLIS);
- }
+ return mUserController.switchUser(targetUserId);
}
@Override
@@ -23945,7 +23907,7 @@ public class ActivityManagerService extends IActivityManager.Stub
@Override
public void notifyKeyguardTrustedChanged() {
synchronized (ActivityManagerService.this) {
- if (mKeyguardController.isKeyguardShowing()) {
+ if (mKeyguardController.isKeyguardShowing(DEFAULT_DISPLAY)) {
mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
}
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index 403e01d5ae44..5e0724e94b41 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -55,7 +55,6 @@ import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.DebugUtils;
import android.util.DisplayMetrics;
-import android.view.IWindowManager;
import com.android.internal.util.HexDump;
import com.android.internal.util.Preconditions;
@@ -76,6 +75,8 @@ import static android.app.ActivityManager.RESIZE_MODE_SYSTEM;
import static android.app.ActivityManager.RESIZE_MODE_USER;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.view.Display.INVALID_DISPLAY;
import static com.android.server.am.TaskRecord.INVALID_TASK_ID;
@@ -116,7 +117,8 @@ final class ActivityManagerShellCommand extends ShellCommand {
private boolean mStreaming; // Streaming the profiling output to a file.
private String mAgent; // Agent to attach on startup.
private int mDisplayId;
- private int mStackId;
+ private int mWindowingMode;
+ private int mActivityType;
private int mTaskId;
private boolean mIsTaskOverlay;
@@ -272,7 +274,8 @@ final class ActivityManagerShellCommand extends ShellCommand {
mStreaming = false;
mUserId = defUser;
mDisplayId = INVALID_DISPLAY;
- mStackId = INVALID_STACK_ID;
+ mWindowingMode = WINDOWING_MODE_UNDEFINED;
+ mActivityType = ACTIVITY_TYPE_UNDEFINED;
mTaskId = INVALID_TASK_ID;
mIsTaskOverlay = false;
@@ -309,8 +312,10 @@ final class ActivityManagerShellCommand extends ShellCommand {
mReceiverPermission = getNextArgRequired();
} else if (opt.equals("--display")) {
mDisplayId = Integer.parseInt(getNextArgRequired());
- } else if (opt.equals("--stack")) {
- mStackId = Integer.parseInt(getNextArgRequired());
+ } else if (opt.equals("--windowingMode")) {
+ mWindowingMode = Integer.parseInt(getNextArgRequired());
+ } else if (opt.equals("--activityType")) {
+ mActivityType = Integer.parseInt(getNextArgRequired());
} else if (opt.equals("--task")) {
mTaskId = Integer.parseInt(getNextArgRequired());
} else if (opt.equals("--task-overlay")) {
@@ -397,9 +402,17 @@ final class ActivityManagerShellCommand extends ShellCommand {
options = ActivityOptions.makeBasic();
options.setLaunchDisplayId(mDisplayId);
}
- if (mStackId != INVALID_STACK_ID) {
- options = ActivityOptions.makeBasic();
- options.setLaunchStackId(mStackId);
+ if (mWindowingMode != WINDOWING_MODE_UNDEFINED) {
+ if (options == null) {
+ options = ActivityOptions.makeBasic();
+ }
+ options.setLaunchWindowingMode(mWindowingMode);
+ }
+ if (mActivityType != ACTIVITY_TYPE_UNDEFINED) {
+ if (options == null) {
+ options = ActivityOptions.makeBasic();
+ }
+ options.setLaunchActivityType(mActivityType);
}
if (mTaskId != INVALID_TASK_ID) {
options = ActivityOptions.makeBasic();
@@ -1296,19 +1309,24 @@ final class ActivityManagerShellCommand extends ShellCommand {
return 0;
}
- static final class MyUidObserver extends IUidObserver.Stub {
+ static final class MyUidObserver extends IUidObserver.Stub
+ implements ActivityManagerService.OomAdjObserver {
final IActivityManager mInterface;
+ final ActivityManagerService mInternal;
final PrintWriter mPw;
final InputStream mInput;
+ final int mUid;
static final int STATE_NORMAL = 0;
int mState;
- MyUidObserver(IActivityManager iam, PrintWriter pw, InputStream input) {
- mInterface = iam;
+ MyUidObserver(ActivityManagerService service, PrintWriter pw, InputStream input, int uid) {
+ mInterface = service;
+ mInternal = service;
mPw = pw;
mInput = input;
+ mUid = uid;
}
@Override
@@ -1367,6 +1385,15 @@ final class ActivityManagerShellCommand extends ShellCommand {
}
}
+ @Override
+ public void onOomAdjMessage(String msg) {
+ synchronized (this) {
+ mPw.print("# ");
+ mPw.println(msg);
+ mPw.flush();
+ }
+ }
+
void printMessageForState() {
switch (mState) {
case STATE_NORMAL:
@@ -1385,6 +1412,9 @@ final class ActivityManagerShellCommand extends ShellCommand {
| ActivityManager.UID_OBSERVER_GONE | ActivityManager.UID_OBSERVER_PROCSTATE
| ActivityManager.UID_OBSERVER_IDLE | ActivityManager.UID_OBSERVER_CACHED,
ActivityManager.PROCESS_STATE_UNKNOWN, null);
+ if (mUid >= 0) {
+ mInternal.setOomAdjObserver(mUid, this);
+ }
mState = STATE_NORMAL;
InputStreamReader converter = new InputStreamReader(mInput);
@@ -1414,6 +1444,9 @@ final class ActivityManagerShellCommand extends ShellCommand {
e.printStackTrace(mPw);
mPw.flush();
} finally {
+ if (mUid >= 0) {
+ mInternal.clearOomAdjObserver();
+ }
mInterface.unregisterUidObserver(this);
}
}
@@ -1421,12 +1454,18 @@ final class ActivityManagerShellCommand extends ShellCommand {
int runWatchUids(PrintWriter pw) throws RemoteException {
String opt;
+ int uid = -1;
while ((opt=getNextOption()) != null) {
- getErrPrintWriter().println("Error: Unknown option: " + opt);
- return -1;
+ if (opt.equals("--oom")) {
+ uid = Integer.parseInt(getNextArgRequired());
+ } else {
+ getErrPrintWriter().println("Error: Unknown option: " + opt);
+ return -1;
+
+ }
}
- MyUidObserver controller = new MyUidObserver(mInterface, pw, getRawInputStream());
+ MyUidObserver controller = new MyUidObserver(mInternal, pw, getRawInputStream(), uid);
controller.run();
return 0;
}
@@ -1858,8 +1897,12 @@ final class ActivityManagerShellCommand extends ShellCommand {
level = ComponentCallbacks2.TRIM_MEMORY_COMPLETE;
break;
default:
- getErrPrintWriter().println("Error: Unknown level option: " + levelArg);
- return -1;
+ try {
+ level = Integer.parseInt(levelArg);
+ } catch (NumberFormatException e) {
+ getErrPrintWriter().println("Error: Unknown level option: " + levelArg);
+ return -1;
+ }
}
if (!mInterface.setProcessMemoryTrimLevel(proc, userId, level)) {
getErrPrintWriter().println("Unknown error: failed to set trim level");
@@ -2632,6 +2675,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
pw.println(" -p: limit output to given package.");
pw.println(" --checkin: output checkin format, resetting data.");
pw.println(" --C: output checkin format, not resetting data.");
+ pw.println(" --proto: output dump in protocol buffer format.");
} else {
pw.println("Activity manager (activity) commands:");
pw.println(" help");
@@ -2656,7 +2700,8 @@ final class ActivityManagerShellCommand extends ShellCommand {
pw.println(" --track-allocation: enable tracking of object allocations");
pw.println(" --user <USER_ID> | current: Specify which user to run as; if not");
pw.println(" specified then run as the current user.");
- pw.println(" --stack <STACK_ID>: Specify into which stack should the activity be put.");
+ pw.println(" --windowingMode <WINDOWING_MODE>: The windowing mode to launch the activity into.");
+ pw.println(" --activityType <ACTIVITY_TYPE>: The activity type to launch the activity as.");
pw.println(" start-service [--user <USER_ID> | current] <INTENT>");
pw.println(" Start a Service. Options are:");
pw.println(" --user <USER_ID> | current: Specify which user to run as; if not");
@@ -2744,8 +2789,9 @@ final class ActivityManagerShellCommand extends ShellCommand {
pw.println(" monitor [--gdb <port>]");
pw.println(" Start monitoring for crashes or ANRs.");
pw.println(" --gdb: start gdbserv on the given port at crash/ANR");
- pw.println(" watch-uids [--gdb <port>]");
+ pw.println(" watch-uids [--oom <uid>");
pw.println(" Start watching for and reporting uid state changes.");
+ pw.println(" --oom: specify a uid for which to report detailed change messages.");
pw.println(" hang [--allow-restart]");
pw.println(" Hang the system.");
pw.println(" --allow-restart: allow watchdog to perform normal system restart");
@@ -2804,7 +2850,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
pw.println(" Returns the inactive state of an app.");
pw.println(" send-trim-memory [--user <USER_ID>] <PROCESS>");
pw.println(" [HIDDEN|RUNNING_MODERATE|BACKGROUND|RUNNING_LOW|MODERATE|RUNNING_CRITICAL|COMPLETE]");
- pw.println(" Send a memory trim event to a <PROCESS>.");
+ pw.println(" Send a memory trim event to a <PROCESS>. May also supply a raw trim int level.");
pw.println(" display [COMMAND] [...]: sub-commands for operating on displays.");
pw.println(" move-stack <STACK_ID> <DISPLAY_ID>");
pw.println(" Move <STACK_ID> from its current display to <DISPLAY_ID>.");
diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
index aae98a6e5013..0c8321d5b5c8 100644
--- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
@@ -6,10 +6,12 @@ import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import static android.app.ActivityManagerInternal.APP_TRANSITION_TIMEOUT;
-import static android.app.WindowConfiguration.WINDOWING_MODE_DOCKED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_BIND_APPLICATION_DELAY_MS;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_CALLING_PACKAGE_NAME;
@@ -111,31 +113,34 @@ class ActivityMetricsLogger {
}
mLastLogTimeSecs = now;
- ActivityStack stack = mSupervisor.getStack(DOCKED_STACK_ID);
- if (stack != null && stack.shouldBeVisible(null) != STACK_INVISIBLE) {
- mWindowState = WINDOW_STATE_SIDE_BY_SIDE;
+ mWindowState = WINDOW_STATE_INVALID;
+ ActivityStack stack = mSupervisor.getFocusedStack();
+ if (stack.isActivityTypeAssistant()) {
+ mWindowState = WINDOW_STATE_ASSISTANT;
return;
}
- mWindowState = WINDOW_STATE_INVALID;
- stack = mSupervisor.getFocusedStack();
+
int windowingMode = stack.getWindowingMode();
if (windowingMode == WINDOWING_MODE_PINNED) {
stack = mSupervisor.findStackBehind(stack);
windowingMode = stack.getWindowingMode();
}
- if (StackId.isHomeOrRecentsStack(stack.mStackId)
- || windowingMode == WINDOWING_MODE_FULLSCREEN) {
- mWindowState = WINDOW_STATE_STANDARD;
- } else if (windowingMode == WINDOWING_MODE_DOCKED) {
- Slog.wtf(TAG, "Docked stack shouldn't be the focused stack, because it reported not"
- + " being visible.");
- mWindowState = WINDOW_STATE_INVALID;
- } else if (windowingMode == WINDOWING_MODE_FREEFORM) {
- mWindowState = WINDOW_STATE_FREEFORM;
- } else if (stack.mStackId == ASSISTANT_STACK_ID) {
- mWindowState = WINDOW_STATE_ASSISTANT;
- } else if (StackId.isStaticStack(stack.mStackId)) {
- throw new IllegalStateException("Unknown stack=" + stack);
+ switch (windowingMode) {
+ case WINDOWING_MODE_FULLSCREEN:
+ mWindowState = WINDOW_STATE_STANDARD;
+ break;
+ case WINDOWING_MODE_SPLIT_SCREEN_PRIMARY:
+ case WINDOWING_MODE_SPLIT_SCREEN_SECONDARY:
+ mWindowState = WINDOW_STATE_SIDE_BY_SIDE;
+ break;
+ case WINDOW_STATE_FREEFORM:
+ mWindowState = WINDOW_STATE_FREEFORM;
+ break;
+ default:
+ if (windowingMode != WINDOWING_MODE_UNDEFINED) {
+ throw new IllegalStateException("Unknown windowing mode for stack=" + stack
+ + " windowingMode=" + windowingMode);
+ }
}
}
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 74a52e26ddd3..142c97ba0e7b 100644
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -16,13 +16,9 @@
package com.android.server.am;
-import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS;
import static android.app.ActivityManager.LOCK_TASK_MODE_NONE;
-import static android.app.ActivityManager.StackId;
-import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
-import static android.app.ActivityManager.StackId.HOME_STACK_ID;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
import static android.app.ActivityManager.TaskDescription.ATTR_TASKDESCRIPTION_PREFIX;
@@ -36,6 +32,11 @@ import static android.app.ActivityOptions.ANIM_THUMBNAIL_SCALE_DOWN;
import static android.app.ActivityOptions.ANIM_THUMBNAIL_SCALE_UP;
import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.app.AppOpsManager.OP_PICTURE_IN_PICTURE;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.app.WindowConfiguration.activityTypeToString;
import static android.content.Intent.ACTION_MAIN;
import static android.content.Intent.CATEGORY_HOME;
import static android.content.Intent.CATEGORY_LAUNCHER;
@@ -48,11 +49,12 @@ import static android.content.pm.ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
import static android.content.pm.ActivityInfo.CONFIG_UI_MODE;
import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION;
import static android.content.pm.ActivityInfo.FLAG_ALWAYS_FOCUSABLE;
-import static android.content.pm.ActivityInfo.FLAG_SHOW_WHEN_LOCKED;
import static android.content.pm.ActivityInfo.FLAG_EXCLUDE_FROM_RECENTS;
import static android.content.pm.ActivityInfo.FLAG_IMMERSIVE;
import static android.content.pm.ActivityInfo.FLAG_MULTIPROCESS;
+import static android.content.pm.ActivityInfo.FLAG_NO_HISTORY;
import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS;
+import static android.content.pm.ActivityInfo.FLAG_SHOW_WHEN_LOCKED;
import static android.content.pm.ActivityInfo.FLAG_STATE_NOT_NEEDED;
import static android.content.pm.ActivityInfo.FLAG_TURN_SCREEN_ON;
import static android.content.pm.ActivityInfo.LAUNCH_MULTIPLE;
@@ -65,7 +67,6 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE;
import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION;
import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
-import static android.content.pm.ActivityInfo.FLAG_NO_HISTORY;
import static android.content.pm.ActivityInfo.isFixedOrientationLandscape;
import static android.content.pm.ActivityInfo.isFixedOrientationPortrait;
import static android.content.res.Configuration.EMPTY;
@@ -79,24 +80,18 @@ import static android.os.Build.VERSION_CODES.O_MR1;
import static android.os.Process.SYSTEM_UID;
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
import static android.view.WindowManagerPolicy.NAV_BAR_LEFT;
-
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONFIGURATION;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SAVED_STATE;
-import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SCREENSHOTS;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_STATES;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SWITCH;
-import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_THUMBNAILS;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_VISIBILITY;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_CONFIGURATION;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SAVED_STATE;
-import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SCREENSHOTS;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_STATES;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SWITCH;
-import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_THUMBNAILS;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILITY;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
-import static com.android.server.am.ActivityManagerService.TAKE_FULLSCREEN_SCREENSHOTS;
import static com.android.server.am.ActivityStack.ActivityState.DESTROYED;
import static com.android.server.am.ActivityStack.ActivityState.DESTROYING;
import static com.android.server.am.ActivityStack.ActivityState.INITIALIZING;
@@ -117,6 +112,16 @@ import static com.android.server.am.EventLogTags.AM_RELAUNCH_RESUME_ACTIVITY;
import static com.android.server.am.TaskPersister.DEBUG;
import static com.android.server.am.TaskPersister.IMAGE_EXTENSION;
import static com.android.server.am.TaskRecord.INVALID_TASK_ID;
+import static com.android.server.am.proto.ActivityRecordProto.CONFIGURATION_CONTAINER;
+import static com.android.server.am.proto.ActivityRecordProto.FRONT_OF_TASK;
+import static com.android.server.am.proto.ActivityRecordProto.IDENTIFIER;
+import static com.android.server.am.proto.ActivityRecordProto.PROC_ID;
+import static com.android.server.am.proto.ActivityRecordProto.STATE;
+import static com.android.server.am.proto.ActivityRecordProto.VISIBLE;
+import static com.android.server.wm.proto.IdentifierProto.HASH_CODE;
+import static com.android.server.wm.proto.IdentifierProto.TITLE;
+import static com.android.server.wm.proto.IdentifierProto.USER_ID;
+
import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
import static org.xmlpull.v1.XmlPullParser.END_TAG;
import static org.xmlpull.v1.XmlPullParser.START_TAG;
@@ -154,6 +159,7 @@ import android.util.Log;
import android.util.MergedConfiguration;
import android.util.Slog;
import android.util.TimeUtils;
+import android.util.proto.ProtoOutputStream;
import android.view.AppTransitionAnimationSpec;
import android.view.IAppTransitionAnimationSpecsFuture;
import android.view.IApplicationToken;
@@ -192,10 +198,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityRecord" : TAG_AM;
private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION;
private static final String TAG_SAVED_STATE = TAG + POSTFIX_SAVED_STATE;
- private static final String TAG_SCREENSHOTS = TAG + POSTFIX_SCREENSHOTS;
private static final String TAG_STATES = TAG + POSTFIX_STATES;
private static final String TAG_SWITCH = TAG + POSTFIX_SWITCH;
- private static final String TAG_THUMBNAILS = TAG + POSTFIX_THUMBNAILS;
private static final String TAG_VISIBILITY = TAG + POSTFIX_VISIBILITY;
private static final boolean SHOW_ACTIVITY_START_TIME = true;
@@ -233,12 +237,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
private final boolean componentSpecified; // did caller specify an explicit component?
final boolean rootVoiceInteraction; // was this the root activity of a voice interaction?
- static final int APPLICATION_ACTIVITY_TYPE = 0;
- static final int HOME_ACTIVITY_TYPE = 1;
- static final int RECENTS_ACTIVITY_TYPE = 2;
- static final int ASSISTANT_ACTIVITY_TYPE = 3;
- int mActivityType;
-
private CharSequence nonLocalizedLabel; // the label information from the package mgr.
private int labelRes; // the label information from the package mgr.
private int icon; // resource identifier of activity's icon.
@@ -300,9 +298,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
boolean frozenBeforeDestroy;// has been frozen but not yet destroyed.
boolean immersive; // immersive mode (don't interrupt if possible)
boolean forceNewConfig; // force re-create with new config next time
- boolean supportsPictureInPictureWhilePausing; // This flag is set by the system to indicate
- // that the activity can enter picture in picture while pausing (ie. only when another
- // task is brought to front or started)
+ boolean supportsEnterPipOnTaskSwitch; // This flag is set by the system to indicate that the
+ // activity can enter picture in picture while pausing (only when switching to another task)
PictureInPictureParams pictureInPictureArgs = new PictureInPictureParams.Builder().build();
// The PiP params used when deferring the entering of picture-in-picture.
int launchCount; // count of launches since last state
@@ -320,8 +317,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
int mStartingWindowState = STARTING_WINDOW_NOT_SHOWN;
boolean mTaskOverlay = false; // Task is always on-top of other activities in the task.
- boolean mUpdateTaskThumbnailWhenHidden;
-
TaskDescription taskDescription; // the recents information for this activity
boolean mLaunchTaskBehind; // this activity is actively being launched with
// ActivityOptions.setLaunchTaskBehind, will be cleared once launch is completed.
@@ -398,7 +393,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
}
pw.print(prefix); pw.print("stateNotNeeded="); pw.print(stateNotNeeded);
pw.print(" componentSpecified="); pw.print(componentSpecified);
- pw.print(" mActivityType="); pw.println(mActivityType);
+ pw.print(" mActivityType="); pw.println(
+ activityTypeToString(getActivityType()));
if (rootVoiceInteraction) {
pw.print(prefix); pw.print("rootVoiceInteraction="); pw.println(rootVoiceInteraction);
}
@@ -505,7 +501,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
pw.print(prefix); pw.print("frozenBeforeDestroy="); pw.print(frozenBeforeDestroy);
pw.print(" forceNewConfig="); pw.println(forceNewConfig);
pw.print(prefix); pw.print("mActivityType=");
- pw.println(activityTypeToString(mActivityType));
+ pw.println(activityTypeToString(getActivityType()));
if (requestedVrComponent != null) {
pw.print(prefix);
pw.print("requestedVrComponent=");
@@ -547,8 +543,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
+ " mLastReportedPictureInPictureMode=" + mLastReportedPictureInPictureMode);
if (info.supportsPictureInPicture()) {
pw.println(prefix + "supportsPictureInPicture=" + info.supportsPictureInPicture());
- pw.println(prefix + "supportsPictureInPictureWhilePausing: "
- + supportsPictureInPictureWhilePausing);
+ pw.println(prefix + "supportsEnterPipOnTaskSwitch: "
+ + supportsEnterPipOnTaskSwitch);
}
if (info.maxAspectRatio != 0) {
pw.println(prefix + "maxAspectRatio=" + info.maxAspectRatio);
@@ -662,14 +658,14 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
}
}
- void updatePictureInPictureMode(Rect targetStackBounds) {
+ void updatePictureInPictureMode(Rect targetStackBounds, boolean forceUpdate) {
if (task == null || task.getStack() == null || app == null || app.thread == null) {
return;
}
final boolean inPictureInPictureMode = (task.getStackId() == PINNED_STACK_ID) &&
(targetStackBounds != null);
- if (inPictureInPictureMode != mLastReportedPictureInPictureMode) {
+ if (inPictureInPictureMode != mLastReportedPictureInPictureMode || forceUpdate) {
// Picture-in-picture mode changes also trigger a multi-window mode change as well, so
// update that here in order
mLastReportedPictureInPictureMode = inPictureInPictureMode;
@@ -684,8 +680,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
private void schedulePictureInPictureModeChanged(Configuration overrideConfig) {
try {
app.thread.schedulePictureInPictureModeChanged(appToken,
- mLastReportedPictureInPictureMode,
- overrideConfig);
+ mLastReportedPictureInPictureMode, overrideConfig);
} catch (Exception e) {
// If process died, no one cares.
}
@@ -947,8 +942,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
(info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0, info.configChanges,
task.voiceSession != null, mLaunchTaskBehind, isAlwaysFocusable(),
appInfo.targetSdkVersion, mRotationAnimationHint,
- ActivityManagerService.getInputDispatchingTimeoutLocked(this) * 1000000L,
- getOverrideConfiguration(), mBounds);
+ ActivityManagerService.getInputDispatchingTimeoutLocked(this) * 1000000L, mBounds);
task.addActivityToTop(this);
@@ -1038,10 +1032,11 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
private void setActivityType(boolean componentSpecified, int launchedFromUid, Intent intent,
ActivityOptions options, ActivityRecord sourceRecord) {
+ int activityType = ACTIVITY_TYPE_UNDEFINED;
if ((!componentSpecified || canLaunchHomeActivity(launchedFromUid, sourceRecord))
&& isHomeIntent(intent) && !isResolverActivity()) {
// This sure looks like a home activity!
- mActivityType = HOME_ACTIVITY_TYPE;
+ activityType = ACTIVITY_TYPE_HOME;
if (info.resizeMode == RESIZE_MODE_FORCE_RESIZEABLE
|| info.resizeMode == RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION) {
@@ -1049,13 +1044,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
info.resizeMode = RESIZE_MODE_UNRESIZEABLE;
}
} else if (realActivity.getClassName().contains(RECENTS_PACKAGE_NAME)) {
- mActivityType = RECENTS_ACTIVITY_TYPE;
- } else if (options != null && options.getLaunchStackId() == ASSISTANT_STACK_ID
+ activityType = ACTIVITY_TYPE_RECENTS;
+ } else if (options != null && options.getLaunchActivityType() == ACTIVITY_TYPE_ASSISTANT
&& canLaunchAssistActivity(launchedFromPackage)) {
- mActivityType = ASSISTANT_ACTIVITY_TYPE;
- } else {
- mActivityType = APPLICATION_ACTIVITY_TYPE;
+ activityType = ACTIVITY_TYPE_ASSISTANT;
}
+ setActivityType(activityType);
}
void setTaskToAffiliateWith(TaskRecord taskToAffiliateWith) {
@@ -1106,18 +1100,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
return stack != null && stack.isInStackLocked(this) != null;
}
- boolean isHomeActivity() {
- return mActivityType == HOME_ACTIVITY_TYPE;
- }
-
- boolean isRecentsActivity() {
- return mActivityType == RECENTS_ACTIVITY_TYPE;
- }
-
- boolean isAssistantActivity() {
- return mActivityType == ASSISTANT_ACTIVITY_TYPE;
- }
-
boolean isPersistable() {
return (info.persistableMode == PERSIST_ROOT_ONLY ||
info.persistableMode == PERSIST_ACROSS_REBOOTS) &&
@@ -1144,7 +1126,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
* @return whether this activity supports PiP multi-window and can be put in the pinned stack.
*/
boolean supportsPictureInPicture() {
- return service.mSupportsPictureInPicture && !isHomeActivity()
+ return service.mSupportsPictureInPicture && isActivityTypeStandardOrUndefined()
&& info.supportsPictureInPicture();
}
@@ -1170,7 +1152,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
* @return whether this activity supports non-PiP multi-window.
*/
private boolean supportsResizeableMultiWindow() {
- return service.mSupportsMultiWindow && !isHomeActivity()
+ return service.mSupportsMultiWindow && !isActivityTypeHome()
&& (ActivityInfo.isResizeableMode(info.resizeMode)
|| service.mForceResizableActivities);
}
@@ -1182,8 +1164,15 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
* can be put a secondary screen.
*/
boolean canBeLaunchedOnDisplay(int displayId) {
+ final TaskRecord task = getTask();
+
+ // The resizeability of an Activity's parent task takes precendence over the ActivityInfo.
+ // This allows for a non resizable activity to be launched into a resizeable task.
+ final boolean resizeable =
+ task != null ? task.isResizeable() : supportsResizeableMultiWindow();
+
return service.mStackSupervisor.canPlaceEntityOnDisplay(displayId,
- supportsResizeableMultiWindow(), launchedFromPid, launchedFromUid, info);
+ resizeable, launchedFromPid, launchedFromUid, info);
}
/**
@@ -1224,19 +1213,19 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
// When visible, allow entering PiP if the app is not locked. If it is over the
// keyguard, then we will prompt to unlock in the caller before entering PiP.
return !isCurrentAppLocked &&
- (supportsPictureInPictureWhilePausing || !beforeStopping);
+ (supportsEnterPipOnTaskSwitch || !beforeStopping);
case PAUSING:
case PAUSED:
// When pausing, then only allow enter PiP as in the resume state, and in addition,
// require that there is not an existing PiP activity and that the current system
// state supports entering PiP
return isNotLockedOrOnKeyguard && !hasPinnedStack
- && supportsPictureInPictureWhilePausing;
+ && supportsEnterPipOnTaskSwitch;
case STOPPING:
// When stopping in a valid state, then only allow enter PiP as in the pause state.
// Otherwise, fall through to throw an exception if the caller is trying to enter
// PiP in an invalid stopping state.
- if (supportsPictureInPictureWhilePausing) {
+ if (supportsEnterPipOnTaskSwitch) {
return isNotLockedOrOnKeyguard && !hasPinnedStack;
}
default:
@@ -1497,72 +1486,10 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
}
}
- void updateThumbnailLocked(Bitmap newThumbnail, CharSequence description) {
- if (newThumbnail != null) {
- if (DEBUG_THUMBNAILS) Slog.i(TAG_THUMBNAILS,
- "Setting thumbnail of " + this + " to " + newThumbnail);
- boolean thumbnailUpdated = task.setLastThumbnailLocked(newThumbnail);
- if (thumbnailUpdated && isPersistable()) {
- service.notifyTaskPersisterLocked(task, false);
- }
- }
+ private void updateTaskDescription(CharSequence description) {
task.lastDescription = description;
}
- final Bitmap screenshotActivityLocked() {
- if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, "screenshotActivityLocked: " + this);
-
- if (ENABLE_TASK_SNAPSHOTS) {
- // No need to screenshot if snapshots are enabled.
- if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS,
- "\tSnapshots are enabled, abort taking screenshot");
- return null;
- }
-
- if (noDisplay) {
- if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, "\tNo display");
- return null;
- }
-
- final ActivityStack stack = getStack();
- if (stack.isHomeOrRecentsStack()) {
- // This is an optimization -- since we never show Home or Recents within Recents itself,
- // we can just go ahead and skip taking the screenshot if this is the home stack.
- if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, stack.getStackId() == HOME_STACK_ID ?
- "\tHome stack" : "\tRecents stack");
- return null;
- }
-
- int w = service.mThumbnailWidth;
- int h = service.mThumbnailHeight;
-
- if (w <= 0) {
- Slog.e(TAG, "\tInvalid thumbnail dimensions: " + w + "x" + h);
- return null;
- }
-
- if (stack.mStackId == DOCKED_STACK_ID && mStackSupervisor.mIsDockMinimized) {
- // When the docked stack is minimized its app windows are cropped significantly so any
- // screenshot taken will not display the apps contain. So, we avoid taking a screenshot
- // in that case.
- if (DEBUG_SCREENSHOTS) Slog.e(TAG, "\tIn minimized docked stack");
- return null;
- }
-
- float scale = 0;
- if (DEBUG_SCREENSHOTS) Slog.d(TAG_SCREENSHOTS, "\tTaking screenshot");
-
- // When this flag is set, we currently take the fullscreen screenshot of the activity but
- // scaled to half the size. This gives us a "good-enough" fullscreen thumbnail to use within
- // SystemUI while keeping memory usage low.
- if (TAKE_FULLSCREEN_SCREENSHOTS) {
- w = h = -1;
- scale = service.mFullscreenThumbnailScale;
- }
-
- return mWindowContainerController.screenshotApplications(getDisplayId(), w, h, scale);
- }
-
void setDeferHidingClient(boolean deferHidingClient) {
if (mDeferHidingClient == deferHidingClient) {
return;
@@ -1584,10 +1511,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
void setVisible(boolean newVisible) {
visible = newVisible;
mDeferHidingClient = !visible && mDeferHidingClient;
- if (!visible && mUpdateTaskThumbnailWhenHidden) {
- updateThumbnailLocked(screenshotActivityLocked(), null /* description */);
- mUpdateTaskThumbnailWhenHidden = false;
- }
setVisibility(visible);
mStackSupervisor.mAppVisibilitiesChangedSinceLastPause = true;
}
@@ -1597,7 +1520,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
}
void notifyUnknownVisibilityLaunched() {
- mWindowContainerController.notifyUnknownVisibilityLaunched();
+
+ // No display activities never add a window, so there is no point in waiting them for
+ // relayout.
+ if (!noDisplay) {
+ mWindowContainerController.notifyUnknownVisibilityLaunched();
+ }
}
/**
@@ -1613,7 +1541,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
boolean isVisible = !behindFullscreenActivity || mLaunchTaskBehind;
- if (service.mSupportsLeanbackOnly && isVisible && isRecentsActivity()) {
+ if (service.mSupportsLeanbackOnly && isVisible && isActivityTypeRecents()) {
// On devices that support leanback only (Android TV), Recents activity can only be
// visible if the home stack is the focused stack or we are in split-screen mode.
isVisible = mStackSupervisor.getStack(DOCKED_STACK_ID) != null
@@ -1691,7 +1619,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
newIntents = null;
stopped = false;
- if (isHomeActivity()) {
+ if (isActivityTypeHome()) {
ProcessRecord app = task.mActivities.get(0).app;
if (app != null && app != service.mHomeProcess) {
service.mHomeProcess = app;
@@ -1753,7 +1681,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
icicle = newIcicle;
haveState = true;
launchCount = 0;
- updateThumbnailLocked(null /* newThumbnail */, description);
+ updateTaskDescription(description);
}
if (!stopped) {
if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to STOPPED: " + this + " (stop complete)");
@@ -2221,7 +2149,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
config.getOverrideConfiguration());
}
- void setLastReportedConfiguration(Configuration global, Configuration override) {
+ private void setLastReportedConfiguration(Configuration global, Configuration override) {
mLastReportedConfiguration.setConfiguration(global, override);
}
@@ -2794,16 +2722,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
return r;
}
- private static String activityTypeToString(int type) {
- switch (type) {
- case APPLICATION_ACTIVITY_TYPE: return "APPLICATION_ACTIVITY_TYPE";
- case HOME_ACTIVITY_TYPE: return "HOME_ACTIVITY_TYPE";
- case RECENTS_ACTIVITY_TYPE: return "RECENTS_ACTIVITY_TYPE";
- case ASSISTANT_ACTIVITY_TYPE: return "ASSISTANT_ACTIVITY_TYPE";
- default: return Integer.toString(type);
- }
- }
-
private static boolean isInVrUiMode(Configuration config) {
return (config.uiMode & UI_MODE_TYPE_MASK) == UI_MODE_TYPE_VR_HEADSET;
}
@@ -2866,4 +2784,25 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
stringName = sb.toString();
return toString();
}
+
+ void writeIdentifierToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ proto.write(HASH_CODE, System.identityHashCode(this));
+ proto.write(USER_ID, userId);
+ proto.write(TITLE, intent.getComponent().flattenToShortString());
+ proto.end(token);
+ }
+
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ super.writeToProto(proto, CONFIGURATION_CONTAINER);
+ writeIdentifierToProto(proto, IDENTIFIER);
+ proto.write(STATE, state.toString());
+ proto.write(VISIBLE, visible);
+ proto.write(FRONT_OF_TASK, frontOfTask);
+ if (app != null) {
+ proto.write(PROC_ID, app.pid);
+ }
+ proto.end(token);
+ }
}
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 78a16794b8d4..8d21862142d7 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -23,7 +23,13 @@ import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.StackId.HOME_STACK_ID;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
-import static android.app.ActivityManager.StackId.RECENTS_STACK_ID;
+import static android.app.ActivityManager.StackId.getActivityTypeForStackId;
+import static android.app.ActivityManager.StackId.getWindowingModeForStackId;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_LAYOUT;
import static android.content.pm.ActivityInfo.FLAG_RESUME_WHILE_PAUSING;
import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS;
@@ -64,9 +70,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_USER_LEAV
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILITY;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
-import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.ASSISTANT_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE;
+import static com.android.server.am.ActivityStack.ActivityState.PAUSED;
import static com.android.server.am.ActivityStack.ActivityState.STOPPED;
import static com.android.server.am.ActivityStack.ActivityState.STOPPING;
import static com.android.server.am.ActivityStackSupervisor.FindTaskResult;
@@ -74,6 +78,13 @@ import static com.android.server.am.ActivityStackSupervisor.ON_TOP;
import static com.android.server.am.ActivityStackSupervisor.PAUSE_IMMEDIATELY;
import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS;
import static com.android.server.am.ActivityStackSupervisor.REMOVE_FROM_RECENTS;
+import static com.android.server.am.proto.ActivityStackProto.BOUNDS;
+import static com.android.server.am.proto.ActivityStackProto.CONFIGURATION_CONTAINER;
+import static com.android.server.am.proto.ActivityStackProto.DISPLAY_ID;
+import static com.android.server.am.proto.ActivityStackProto.FULLSCREEN;
+import static com.android.server.am.proto.ActivityStackProto.ID;
+import static com.android.server.am.proto.ActivityStackProto.RESUMED_ACTIVITY;
+import static com.android.server.am.proto.ActivityStackProto.TASKS;
import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_CLOSE;
import static com.android.server.wm.AppTransition.TRANSIT_ACTIVITY_OPEN;
import static com.android.server.wm.AppTransition.TRANSIT_NONE;
@@ -82,6 +93,7 @@ import static com.android.server.wm.AppTransition.TRANSIT_TASK_OPEN;
import static com.android.server.wm.AppTransition.TRANSIT_TASK_OPEN_BEHIND;
import static com.android.server.wm.AppTransition.TRANSIT_TASK_TO_BACK;
import static com.android.server.wm.AppTransition.TRANSIT_TASK_TO_FRONT;
+
import static java.lang.Integer.MAX_VALUE;
import android.app.Activity;
@@ -118,6 +130,7 @@ import android.util.IntArray;
import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.proto.ProtoOutputStream;
import android.view.Display;
import com.android.internal.annotations.VisibleForTesting;
@@ -460,24 +473,35 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
mTaskPositioner = mStackId == FREEFORM_WORKSPACE_STACK_ID
? new LaunchingTaskPositioner() : null;
mTmpRect2.setEmpty();
- final Configuration overrideConfig = getOverrideConfiguration();
+ updateOverrideConfiguration();
mWindowContainerController = createStackWindowController(display.mDisplayId, onTop,
- mTmpRect2, overrideConfig);
- onOverrideConfigurationChanged(overrideConfig);
+ mTmpRect2);
mStackSupervisor.mStacks.put(mStackId, this);
postAddToDisplay(display, mTmpRect2.isEmpty() ? null : mTmpRect2, onTop);
}
- T createStackWindowController(int displayId, boolean onTop, Rect outBounds,
- Configuration outOverrideConfig) {
- return (T) new StackWindowController(mStackId, this, displayId, onTop, outBounds,
- outOverrideConfig);
+ T createStackWindowController(int displayId, boolean onTop, Rect outBounds) {
+ return (T) new StackWindowController(mStackId, this, displayId, onTop, outBounds);
}
T getWindowContainerController() {
return mWindowContainerController;
}
+ // TODO: Not needed once we are no longer using stack ids as the override config. can be passed
+ // in.
+ private void updateOverrideConfiguration() {
+ final int windowingMode = getWindowingModeForStackId(
+ mStackId, mStackSupervisor.getStack(DOCKED_STACK_ID) != null);
+ if (windowingMode != WINDOWING_MODE_UNDEFINED) {
+ setWindowingMode(windowingMode);
+ }
+ final int activityType = getActivityTypeForStackId(mStackId);
+ if (activityType != ACTIVITY_TYPE_UNDEFINED) {
+ setActivityType(activityType);
+ }
+ }
+
/** Adds the stack to specified display and calls WindowManager to do the same. */
void reparent(ActivityStackSupervisor.ActivityDisplay activityDisplay, boolean onTop) {
removeFromDisplay();
@@ -821,14 +845,6 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
return hadit;
}
- final boolean isHomeStack() {
- return mStackId == HOME_STACK_ID;
- }
-
- final boolean isRecentsStack() {
- return mStackId == RECENTS_STACK_ID;
- }
-
final boolean isHomeOrRecentsStack() {
return StackId.isHomeOrRecentsStack(mStackId);
}
@@ -841,10 +857,6 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
return mStackId == PINNED_STACK_ID;
}
- final boolean isAssistantStack() {
- return mStackId == ASSISTANT_STACK_ID;
- }
-
final boolean isOnHomeDisplay() {
return isAttached() && mDisplayId == DEFAULT_DISPLAY;
}
@@ -959,13 +971,15 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": different user");
continue;
}
- final ActivityRecord r = task.getTopActivity();
+
+ // Overlays should not be considered as the task's logical top activity.
+ final ActivityRecord r = task.getTopActivity(false /* includeOverlays */);
if (r == null || r.finishing || r.userId != userId ||
r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) {
if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch root " + r);
continue;
}
- if (r.mActivityType != target.mActivityType) {
+ if (!r.hasCompatibleActivityType(target)) {
if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch activity type");
continue;
}
@@ -1331,11 +1345,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
prev.getTask().touchActiveTime();
clearLaunchTime(prev);
final ActivityRecord next = mStackSupervisor.topRunningActivityLocked();
- if (mService.mHasRecents
- && (next == null || next.noDisplay || next.getTask() != prev.getTask()
- || uiSleeping)) {
- prev.mUpdateTaskThumbnailWhenHidden = true;
- }
+
stopFullyDrawnTraceIfNeeded();
mService.updateCpuStats();
@@ -1650,7 +1660,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
}
if (!isHomeOrRecentsStack() && r.frontOfTask && task.isOverHomeStack()
- && !StackId.isHomeOrRecentsStack(stackBehindId) && !isAssistantStack()) {
+ && !StackId.isHomeOrRecentsStack(stackBehindId)
+ && !isActivityTypeAssistant()) {
// Stack isn't translucent if it's top activity should have the home stack
// behind it and the stack currently behind it isn't the home or recents stack
// or the assistant stack.
@@ -1697,7 +1708,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
if (mStackId == DOCKED_STACK_ID) {
// If the assistant stack is focused and translucent, then the docked stack is always
// visible
- if (topStack.isAssistantStack()) {
+ if (topStack.isActivityTypeAssistant()) {
return (topStack.isStackTranslucent(starting, DOCKED_STACK_ID)) ? STACK_VISIBLE
: STACK_INVISIBLE;
}
@@ -1829,14 +1840,6 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
final ActivityRecord r = activities.get(activityNdx);
if (r.finishing) {
- // Normally the screenshot will be taken in makeInvisible(). When an activity
- // is finishing, we no longer change its visibility, but we still need to take
- // the screenshots if startPausingLocked decided it should be taken.
- if (r.mUpdateTaskThumbnailWhenHidden) {
- r.updateThumbnailLocked(r.screenshotActivityLocked(),
- null /* description */);
- r.mUpdateTaskThumbnailWhenHidden = false;
- }
continue;
}
final boolean isTop = r == top;
@@ -1907,39 +1910,22 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// status of an activity in a previous task affects other.
behindFullscreenActivity = stackVisibility == STACK_INVISIBLE;
} else if (mStackId == HOME_STACK_ID) {
- if (task.isHomeTask()) {
- if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home task: at " + task
- + " stackInvisible=" + stackInvisible
- + " behindFullscreenActivity=" + behindFullscreenActivity);
- // No other task in the home stack should be visible behind the home activity.
- // Home activities is usually a translucent activity with the wallpaper behind
- // them. However, when they don't have the wallpaper behind them, we want to
- // show activities in the next application stack behind them vs. another
- // task in the home stack like recents.
- behindFullscreenActivity = true;
- } else if (task.isRecentsTask()
- && task.getTaskToReturnTo() == APPLICATION_ACTIVITY_TYPE) {
- if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY,
- "Recents task returning to app: at " + task
- + " stackInvisible=" + stackInvisible
- + " behindFullscreenActivity=" + behindFullscreenActivity);
- // We don't want any other tasks in the home stack visible if the recents
- // activity is going to be returning to an application activity type.
- // We do this to preserve the visible order the user used to get into the
- // recents activity. The recents activity is normally translucent and if it
- // doesn't have the wallpaper behind it the next activity in the home stack
- // shouldn't be visible when the home stack is brought to the front to display
- // the recents activity from an app.
- behindFullscreenActivity = true;
- }
+ if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home task: at " + task
+ + " stackInvisible=" + stackInvisible
+ + " behindFullscreenActivity=" + behindFullscreenActivity);
+ // No other task in the home stack should be visible behind the home activity.
+ // Home activities is usually a translucent activity with the wallpaper behind
+ // them. However, when they don't have the wallpaper behind them, we want to
+ // show activities in the next application stack behind them vs. another
+ // task in the home stack like recents.
+ behindFullscreenActivity = true;
} else if (mStackId == FULLSCREEN_WORKSPACE_STACK_ID) {
if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Skipping after task=" + task
+ " returning to non-application type=" + task.getTaskToReturnTo());
// Once we reach a fullscreen stack task that has a running activity and should
// return to another stack task, then no other activities behind that one should
// be visible.
- if (task.topRunningActivityLocked() != null &&
- task.getTaskToReturnTo() != APPLICATION_ACTIVITY_TYPE) {
+ if (task.topRunningActivityLocked() != null && !task.returnsToStandardTask()) {
behindFullscreenActivity = true;
}
}
@@ -1985,7 +1971,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
boolean checkKeyguardVisibility(ActivityRecord r, boolean shouldBeVisible,
boolean isTop) {
final boolean isInPinnedStack = r.getStack().getStackId() == PINNED_STACK_ID;
- final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing();
+ final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing(
+ mDisplayId != INVALID_DISPLAY ? mDisplayId : DEFAULT_DISPLAY);
final boolean keyguardLocked = mStackSupervisor.mKeyguardController.isKeyguardLocked();
final boolean showWhenLocked = r.canShowWhenLocked() && !isInPinnedStack;
final boolean dismissKeyguard = r.hasDismissKeyguardWindows();
@@ -2084,10 +2071,15 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
try {
final boolean canEnterPictureInPicture = r.checkEnterPictureInPictureState(
"makeInvisible", true /* beforeStopping */);
- // Defer telling the client it is hidden if it can enter Pip and isn't current stopped
- // or stopping. This gives it a chance to enter Pip in onPause().
+ // Defer telling the client it is hidden if it can enter Pip and isn't current paused,
+ // stopped or stopping. This gives it a chance to enter Pip in onPause().
+ // TODO: There is still a question surrounding activities in multi-window mode that want
+ // to enter Pip after they are paused, but are still visible. I they should be okay to
+ // enter Pip in those cases, but not "auto-Pip" which is what this condition covers and
+ // the current contract for "auto-Pip" is that the app should enter it before onPause
+ // returns. Just need to confirm this reasoning makes sense.
final boolean deferHidingClient = canEnterPictureInPicture
- && r.state != STOPPING && r.state != STOPPED;
+ && r.state != STOPPING && r.state != STOPPED && r.state != PAUSED;
r.setDeferHidingClient(deferHidingClient);
r.setVisible(false);
@@ -2102,7 +2094,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// Reset the flag indicating that an app can enter picture-in-picture once the
// activity is hidden
- r.supportsPictureInPictureWhilePausing = false;
+ r.supportsEnterPipOnTaskSwitch = false;
break;
case INITIALIZING:
@@ -2336,10 +2328,10 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// This task is going away but it was supposed to return to the home stack.
// Now the task above it has to return to the home task instead.
final int taskNdx = mTaskHistory.indexOf(prevTask) + 1;
- mTaskHistory.get(taskNdx).setTaskToReturnTo(HOME_ACTIVITY_TYPE);
+ mTaskHistory.get(taskNdx).setTaskToReturnTo(ACTIVITY_TYPE_HOME);
} else if (!isOnHomeDisplay()) {
return false;
- } else if (!isHomeStack()){
+ } else if (!isActivityTypeHome()){
if (DEBUG_STATES) Slog.d(TAG_STATES,
"resumeTopActivityLocked: Launching home next");
return isOnHomeDisplay() &&
@@ -2587,6 +2579,16 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// the screen based on the new activity order.
boolean notUpdated = true;
if (mStackSupervisor.isFocusedStack(this)) {
+
+ // We have special rotation behavior when Keyguard is locked. Make sure all activity
+ // visibilities are set correctly as well as the transition is updated if needed to
+ // get the correct rotation behavior.
+ // TODO: Remove this once visibilities are set correctly immediately when starting
+ // an activity.
+ if (mStackSupervisor.mKeyguardController.isKeyguardLocked()) {
+ mStackSupervisor.ensureActivitiesVisibleLocked(null /* starting */,
+ 0 /* configChanges */, false /* preserveWindows */);
+ }
final Configuration config = mWindowManager.updateOrientationFromAppTokens(
mStackSupervisor.getDisplayOverrideConfiguration(mDisplayId),
next.mayFreezeScreenLocked(next.app) ? next.appToken : null, mDisplayId);
@@ -2812,7 +2814,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// If this is not on the default display, then just set the return type to application
if (!isOnHomeDisplay()) {
- task.setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE);
+ task.setTaskToReturnTo(ACTIVITY_TYPE_STANDARD);
return;
}
@@ -2824,8 +2826,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
}
// If the task was launched from the assistant stack, set the return type to assistant
- if (lastStack.isAssistantStack()) {
- task.setTaskToReturnTo(ASSISTANT_ACTIVITY_TYPE);
+ if (lastStack.isActivityTypeAssistant()) {
+ task.setTaskToReturnTo(ACTIVITY_TYPE_ASSISTANT);
return;
}
@@ -2837,9 +2839,10 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// If it's a last task over home - we default to keep its return to type not to
// make underlying task focused when this one will be finished.
int returnToType = isLastTaskOverHome
- ? task.getTaskToReturnTo() : APPLICATION_ACTIVITY_TYPE;
+ ? task.getTaskToReturnTo() : ACTIVITY_TYPE_STANDARD;
if (fromHomeOrRecents && StackId.allowTopTaskToReturnHome(mStackId)) {
- returnToType = topTask == null ? HOME_ACTIVITY_TYPE : topTask.taskType;
+ returnToType = topTask == null
+ ? ACTIVITY_TYPE_HOME : topTask.getActivityType();
}
task.setTaskToReturnTo(returnToType);
}
@@ -2924,11 +2927,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// supporting picture-in-picture while pausing only if the starting activity
// would not be considered an overlay on top of the current activity
// (eg. not fullscreen, or the assistant)
- if (focusedTopActivity != null
- && focusedTopActivity.getStackId() != PINNED_STACK_ID
- && r.getStackId() != ASSISTANT_STACK_ID
- && r.fullscreen) {
- focusedTopActivity.supportsPictureInPictureWhilePausing = true;
+ if (canEnterPipOnTaskSwitch(focusedTopActivity,
+ null /* toFrontTask */, r, options)) {
+ focusedTopActivity.supportsEnterPipOnTaskSwitch = true;
}
transit = TRANSIT_TASK_OPEN;
}
@@ -2983,6 +2984,30 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
}
}
+ /**
+ * @return Whether the switch to another task can trigger the currently running activity to
+ * enter PiP while it is pausing (if supported). Only one of {@param toFrontTask} or
+ * {@param toFrontActivity} should be set.
+ */
+ private boolean canEnterPipOnTaskSwitch(ActivityRecord pipCandidate,
+ TaskRecord toFrontTask, ActivityRecord toFrontActivity, ActivityOptions opts) {
+ if (opts != null && opts.disallowEnterPictureInPictureWhileLaunching()) {
+ // Ensure the caller has requested not to trigger auto-enter PiP
+ return false;
+ }
+ if (pipCandidate == null || pipCandidate.getStackId() == PINNED_STACK_ID) {
+ // Ensure that we do not trigger entering PiP an activity on the pinned stack
+ return false;
+ }
+ final int targetStackId = toFrontTask != null ? toFrontTask.getStackId()
+ : toFrontActivity.getStackId();
+ if (targetStackId == ASSISTANT_STACK_ID) {
+ // Ensure the task/activity being brought forward is not the assistant
+ return false;
+ }
+ return true;
+ }
+
private boolean isTaskSwitch(ActivityRecord r,
ActivityRecord topFocusedActivity) {
return topFocusedActivity != null && r.getTask() != topFocusedActivity.getTask();
@@ -3062,7 +3087,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
} else {
targetTask = createTaskRecord(
mStackSupervisor.getNextTaskIdForUserLocked(target.userId),
- target.info, null, null, null, false, target.mActivityType);
+ target.info, null, null, null, false);
targetTask.affinityIntent = target.intent;
if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Start pushing activity " + target
+ " out to new task " + targetTask);
@@ -3373,8 +3398,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
throw new IllegalStateException("activity no longer associated with task:" + r);
}
- final boolean isAssistantOrOverAssistant = task.getStack().isAssistantStack() ||
- task.isOverAssistantStack();
+ final boolean isAssistantOrOverAssistant =
+ task.getStack().isActivityTypeAssistant() || task.isOverAssistantStack();
if (r.frontOfTask && isATopFinishingTask(task)
&& (task.isOverHomeStack() || isAssistantOrOverAssistant)) {
// For non-fullscreen or assistant stack, we want to move the focus to the next
@@ -3409,8 +3434,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
* @param allowFocusSelf Is the focus allowed to remain on the same stack.
*/
private boolean adjustFocusToNextFocusableStackLocked(String reason, boolean allowFocusSelf) {
- if (isAssistantStack() && bottomTask() != null &&
- bottomTask().getTaskToReturnTo() == HOME_ACTIVITY_TYPE) {
+ if (isActivityTypeAssistant() && bottomTask() != null
+ && bottomTask().returnsToHomeTask()) {
// If the current stack is the assistant stack, then use the return-to type to determine
// whether to return to the home screen. This is needed to workaround an issue where
// launching a fullscreen task (and subequently returning from that task) will cause
@@ -3435,8 +3460,8 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
return mStackSupervisor.moveHomeStackTaskToTop(reason);
}
- if (stack.isAssistantStack() && top != null
- && top.getTask().getTaskToReturnTo() == HOME_ACTIVITY_TYPE) {
+ if (stack.isActivityTypeAssistant() && top != null
+ && top.getTask().returnsToHomeTask()) {
// It is possible for the home stack to not be directly underneath the assistant stack.
// For example, the assistant may start an activity in the fullscreen stack. Upon
// returning to the assistant stack, we must ensure that the home stack is underneath
@@ -3574,7 +3599,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
if (r.state == ActivityState.RESUMED
|| r.state == ActivityState.PAUSING
|| r.state == ActivityState.PAUSED) {
- if (!r.isHomeActivity() || mService.mHomeProcess != r.app) {
+ if (!r.isActivityTypeHome() || mService.mHomeProcess != r.app) {
Slog.w(TAG, " Force finishing activity "
+ r.intent.getComponent().flattenToShortString());
finishActivityLocked(r, Activity.RESULT_CANCELED, null, reason, false);
@@ -3891,7 +3916,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
if (srec.frontOfTask && task != null && task.getBaseIntent() != null
&& task.getBaseIntent().isDocument()) {
// Okay, this activity is at the root of its task. What to do, what to do...
- if (task.getTaskToReturnTo() != ActivityRecord.APPLICATION_ACTIVITY_TYPE) {
+ if (!task.returnsToStandardTask()) {
// Finishing won't return to an application, so we need to recreate.
return true;
}
@@ -3901,11 +3926,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
Slog.w(TAG, "shouldUpRecreateTask: task not in history for " + srec);
return false;
}
- if (taskIdx == 0) {
- // At the bottom of the stack, nothing to go back to.
- return true;
- }
- TaskRecord prevTask = mTaskHistory.get(taskIdx);
+ final TaskRecord prevTask = mTaskHistory.get(taskIdx);
if (!task.affinity.equals(prevTask.affinity)) {
// These are different apps, so need to recreate.
return true;
@@ -4490,17 +4511,18 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
}
void moveHomeStackTaskToTop() {
+ if (!isActivityTypeHome()) {
+ throw new IllegalStateException("Calling moveHomeStackTaskToTop() on non-home stack: "
+ + this);
+ }
final int top = mTaskHistory.size() - 1;
- for (int taskNdx = top; taskNdx >= 0; --taskNdx) {
- final TaskRecord task = mTaskHistory.get(taskNdx);
- if (task.taskType == HOME_ACTIVITY_TYPE) {
- if (DEBUG_TASKS || DEBUG_STACK) Slog.d(TAG_STACK,
- "moveHomeStackTaskToTop: moving " + task);
- mTaskHistory.remove(taskNdx);
- mTaskHistory.add(top, task);
- updateTaskMovement(task, true);
- return;
- }
+ if (top >= 0) {
+ final TaskRecord task = mTaskHistory.get(top);
+ if (DEBUG_TASKS || DEBUG_STACK) Slog.d(TAG_STACK,
+ "moveHomeStackTaskToTop: moving " + task);
+ mTaskHistory.remove(top);
+ mTaskHistory.add(top, task);
+ updateTaskMovement(task, true);
}
}
@@ -4558,9 +4580,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// If a new task is moved to the front, then mark the existing top activity as supporting
// picture-in-picture while paused only if the task would not be considered an oerlay on top
// of the current activity (eg. not fullscreen, or the assistant)
- if (topActivity != null && topActivity.getStackId() != PINNED_STACK_ID
- && tr.getStackId() != ASSISTANT_STACK_ID && tr.containsOnlyFullscreenActivities()) {
- topActivity.supportsPictureInPictureWhilePausing = true;
+ if (canEnterPipOnTaskSwitch(topActivity, tr, null /* toFrontActivity */,
+ options)) {
+ topActivity.supportsEnterPipOnTaskSwitch = true;
}
mStackSupervisor.resumeFocusedStackTopActivityLocked();
@@ -4623,7 +4645,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// If true, we should resume the home activity next if the task we are moving to the
// back is over the home stack. We force to false if the task we are moving to back
// is the home task and we don't want it resumed after moving to the back.
- final boolean canGoHome = !tr.isHomeTask() && tr.isOverHomeStack();
+ final boolean canGoHome = !tr.isActivityTypeHome() && tr.isOverHomeStack();
if (canGoHome) {
final TaskRecord nextTask = getNextTask(tr);
if (nextTask != null) {
@@ -4658,7 +4680,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
}
if (taskNdx == 1) {
// Set the last task before tr to go to home.
- task.setTaskToReturnTo(HOME_ACTIVITY_TYPE);
+ task.setTaskToReturnTo(ACTIVITY_TYPE_HOME);
}
}
@@ -4668,7 +4690,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
// Not ready yet!
return false;
}
- tr.setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE);
+ tr.setTaskToReturnTo(ACTIVITY_TYPE_STANDARD);
return mStackSupervisor.resumeHomeStackTask(null, "moveTaskToBack");
}
@@ -4882,7 +4904,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
}
return true;
}
- if (r.isHomeActivity()) {
+ if (r.isActivityTypeHome()) {
if (homeActivity != null && homeActivity.equals(r.realActivity)) {
Slog.i(TAG, "Skip force-stop again " + r);
continue;
@@ -4925,7 +4947,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
int numActivities = 0;
int numRunning = 0;
final ArrayList<ActivityRecord> activities = task.mActivities;
- if (!allowed && !task.isHomeTask() && task.effectiveUid != callingUid) {
+ if (!allowed && !task.isActivityTypeHome() && task.effectiveUid != callingUid) {
continue;
}
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
@@ -5025,24 +5047,29 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
}
boolean dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, boolean dumpAll,
- boolean dumpClient, String dumpPackage, boolean needSep, String header) {
- boolean printed = false;
+ boolean dumpClient, String dumpPackage, boolean needSep) {
+
+ if (mTaskHistory.isEmpty()) {
+ return false;
+ }
+ final String prefix = " ";
for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
final TaskRecord task = mTaskHistory.get(taskNdx);
- printed |= ActivityStackSupervisor.dumpHistoryList(fd, pw,
- mTaskHistory.get(taskNdx).mActivities, " ", "Hist", true, !dumpAll,
- dumpClient, dumpPackage, needSep, header,
- " Task id #" + task.taskId + "\n" +
- " mFullscreen=" + task.mFullscreen + "\n" +
- " mBounds=" + task.mBounds + "\n" +
- " mMinWidth=" + task.mMinWidth + "\n" +
- " mMinHeight=" + task.mMinHeight + "\n" +
- " mLastNonFullscreenBounds=" + task.mLastNonFullscreenBounds);
- if (printed) {
- header = null;
- }
+ if (needSep) {
+ pw.println("");
+ }
+ pw.println(prefix + "Task id #" + task.taskId);
+ pw.println(prefix + "mFullscreen=" + task.mFullscreen);
+ pw.println(prefix + "mBounds=" + task.mBounds);
+ pw.println(prefix + "mMinWidth=" + task.mMinWidth);
+ pw.println(prefix + "mMinHeight=" + task.mMinHeight);
+ pw.println(prefix + "mLastNonFullscreenBounds=" + task.mLastNonFullscreenBounds);
+ pw.println(prefix + "* " + task);
+ task.dump(pw, prefix + " ");
+ ActivityStackSupervisor.dumpHistoryList(fd, pw, mTaskHistory.get(taskNdx).mActivities,
+ prefix, "Hist", true, !dumpAll, dumpClient, dumpPackage, false, null, task);
}
- return printed;
+ return true;
}
ArrayList<ActivityRecord> getDumpActivitiesLocked(String name) {
@@ -5116,7 +5143,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
if (task.isOverHomeStack() && taskNdx < topTaskNdx) {
final TaskRecord nextTask = mTaskHistory.get(taskNdx + 1);
if (!nextTask.isOverHomeStack() && !nextTask.isOverAssistantStack()) {
- nextTask.setTaskToReturnTo(HOME_ACTIVITY_TYPE);
+ nextTask.setTaskToReturnTo(ACTIVITY_TYPE_HOME);
}
}
mTaskHistory.remove(task);
@@ -5172,13 +5199,13 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
TaskRecord createTaskRecord(int taskId, ActivityInfo info, Intent intent,
IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor,
- boolean toTop, int type) {
- TaskRecord task = new TaskRecord(mService, taskId, info, intent, voiceSession,
- voiceInteractor, type);
+ boolean toTop) {
+ final TaskRecord task = new TaskRecord(mService, taskId, info, intent, voiceSession,
+ voiceInteractor);
// add the task to stack first, mTaskPositioner might need the stack association
addTask(task, toTop, "createTaskRecord");
- final boolean isLockscreenShown =
- mService.mStackSupervisor.mKeyguardController.isKeyguardShowing();
+ final boolean isLockscreenShown = mService.mStackSupervisor.mKeyguardController
+ .isKeyguardShowing(mDisplayId != INVALID_DISPLAY ? mDisplayId : DEFAULT_DISPLAY);
if (!layoutTaskInStack(task, info.windowLayout) && mBounds != null && task.isResizeable()
&& !isLockscreenShown) {
task.updateOverrideConfiguration(mBounds);
@@ -5339,4 +5366,23 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
boolean shouldSleepOrShutDownActivities() {
return shouldSleepActivities() || mService.isShuttingDownLocked();
}
+
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ super.writeToProto(proto, CONFIGURATION_CONTAINER);
+ proto.write(ID, mStackId);
+ for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
+ final TaskRecord task = mTaskHistory.get(taskNdx);
+ task.writeToProto(proto, TASKS);
+ }
+ if (mResumedActivity != null) {
+ mResumedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
+ }
+ proto.write(DISPLAY_ID, mDisplayId);
+ if (mBounds != null) {
+ mBounds.writeToProto(proto, BOUNDS);
+ }
+ proto.write(FULLSCREEN, mFullscreen);
+ proto.end(token);
+ }
}
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index f36b7b81aaea..45c4df993801 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -20,8 +20,8 @@ import static android.Manifest.permission.ACTIVITY_EMBEDDING;
import static android.Manifest.permission.INTERNAL_SYSTEM_WINDOW;
import static android.Manifest.permission.START_ANY_ACTIVITY;
import static android.Manifest.permission.START_TASKS_FROM_RECENTS;
-import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED;
import static android.app.ActivityManager.START_TASK_TO_FRONT;
+import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
import static android.app.ActivityManager.StackId.FIRST_DYNAMIC_STACK_ID;
import static android.app.ActivityManager.StackId.FIRST_STATIC_STACK_ID;
@@ -32,8 +32,20 @@ import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import static android.app.ActivityManager.StackId.LAST_STATIC_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
import static android.app.ActivityManager.StackId.RECENTS_STACK_ID;
+import static android.app.ActivityManager.StackId.getStackIdForActivityType;
+import static android.app.ActivityManager.StackId.getStackIdForWindowingMode;
import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SECONDARY_DISPLAY;
import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SPLIT_SCREEN;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.PowerManager.PARTIAL_WAKE_LOCK;
@@ -68,8 +80,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.ActivityManagerService.ANIMATE;
import static com.android.server.am.ActivityManagerService.FIRST_SUPERVISOR_STACK_MSG;
-import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE;
import static com.android.server.am.ActivityStack.ActivityState.DESTROYED;
import static com.android.server.am.ActivityStack.ActivityState.DESTROYING;
import static com.android.server.am.ActivityStack.ActivityState.INITIALIZING;
@@ -81,17 +91,26 @@ import static com.android.server.am.ActivityStack.ActivityState.STOPPING;
import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING;
import static com.android.server.am.ActivityStack.STACK_INVISIBLE;
import static com.android.server.am.ActivityStack.STACK_VISIBLE;
+import static com.android.server.am.TaskRecord.INVALID_TASK_ID;
import static com.android.server.am.TaskRecord.LOCK_TASK_AUTH_LAUNCHABLE;
import static com.android.server.am.TaskRecord.LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
import static com.android.server.am.TaskRecord.REPARENT_KEEP_STACK_AT_FRONT;
import static com.android.server.am.TaskRecord.REPARENT_LEAVE_STACK_IN_PLACE;
import static com.android.server.am.TaskRecord.REPARENT_MOVE_STACK_TO_FRONT;
+import static com.android.server.am.proto.ActivityStackSupervisorProto.DISPLAYS;
+import static com.android.server.am.proto.ActivityStackSupervisorProto.FOCUSED_STACK_ID;
+import static com.android.server.am.proto.ActivityStackSupervisorProto.KEYGUARD_CONTROLLER;
+import static com.android.server.am.proto.ActivityStackSupervisorProto.RESUMED_ACTIVITY;
+import static com.android.server.am.proto.ActivityStackSupervisorProto.CONFIGURATION_CONTAINER;
+import static com.android.server.am.proto.ActivityDisplayProto.STACKS;
+import static com.android.server.am.proto.ActivityDisplayProto.ID;
import static com.android.server.wm.AppTransition.TRANSIT_DOCK_TASK_FROM_RECENTS;
import static java.lang.Integer.MAX_VALUE;
import android.Manifest;
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.Activity;
import android.app.ActivityManager;
@@ -145,6 +164,7 @@ import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.util.TimeUtils;
+import android.util.proto.ProtoOutputStream;
import android.view.Display;
import com.android.internal.annotations.VisibleForTesting;
@@ -154,6 +174,7 @@ import com.android.internal.os.TransferPipe;
import com.android.internal.util.ArrayUtils;
import com.android.server.LocalServices;
import com.android.server.am.ActivityStack.ActivityState;
+import com.android.server.am.proto.ActivityDisplayProto;
import com.android.server.wm.ConfigurationContainer;
import com.android.server.wm.PinnedStackWindowController;
import com.android.server.wm.WindowManagerService;
@@ -164,7 +185,6 @@ import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -690,7 +710,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
}
if (prev != null) {
- prev.getTask().setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE);
+ prev.getTask().setTaskToReturnTo(ACTIVITY_TYPE_STANDARD);
}
mHomeStack.moveHomeStackTaskToTop();
@@ -706,24 +726,26 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
}
TaskRecord anyTaskForIdLocked(int id) {
- return anyTaskForIdLocked(id, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE,
- INVALID_STACK_ID);
+ return anyTaskForIdLocked(id, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE);
+ }
+
+ TaskRecord anyTaskForIdLocked(int id, @AnyTaskForIdMatchTaskMode int matchMode) {
+ return anyTaskForIdLocked(id, matchMode, null);
}
/**
* Returns a {@link TaskRecord} for the input id if available. {@code null} otherwise.
* @param id Id of the task we would like returned.
* @param matchMode The mode to match the given task id in.
- * @param stackId The stack to restore the task to (default launch stack will be used if
- * stackId is {@link android.app.ActivityManager.StackId#INVALID_STACK_ID}). Only
- * valid if the matchMode is
- * {@link #MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE}.
+ * @param aOptions The activity options to use for restoration. Can be null.
*/
- TaskRecord anyTaskForIdLocked(int id, @AnyTaskForIdMatchTaskMode int matchMode, int stackId) {
+ TaskRecord anyTaskForIdLocked(int id, @AnyTaskForIdMatchTaskMode int matchMode,
+ @Nullable ActivityOptions aOptions) {
// If there is a stack id set, ensure that we are attempting to actually restore a task
- if (matchMode != MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE &&
- stackId != INVALID_STACK_ID) {
- throw new IllegalArgumentException("Should not specify stackId for non-restore lookup");
+ // TODO: Don't really know if this is needed...
+ if (matchMode != MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE && aOptions != null) {
+ throw new IllegalArgumentException("Should not specify activity options for non-restore"
+ + " lookup");
}
int numDisplays = mActivityDisplays.size();
@@ -761,7 +783,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
}
// Implicitly, this case is MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE
- if (!restoreRecentTaskLocked(task, stackId)) {
+ if (!restoreRecentTaskLocked(task, aOptions)) {
if (DEBUG_RECENTS) Slog.w(TAG_RECENTS,
"Couldn't restore task id=" + id + " found in recents");
return null;
@@ -856,8 +878,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// was 10, user 0 could only have taskIds 0 to 9, user 1: 10 to 19, user 2: 20 to 29, so on.
int candidateTaskId = nextTaskIdForUser(currentTaskId, userId);
while (mRecentTasks.taskIdTakenForUserLocked(candidateTaskId, userId)
- || anyTaskForIdLocked(candidateTaskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS,
- INVALID_STACK_ID) != null) {
+ || anyTaskForIdLocked(
+ candidateTaskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS) != null) {
candidateTaskId = nextTaskIdForUser(candidateTaskId, userId);
if (candidateTaskId == currentTaskId) {
// Something wrong!
@@ -1269,6 +1291,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
r.app = app;
+ if (mKeyguardController.isKeyguardLocked()) {
+ r.notifyUnknownVisibilityLaunched();
+ }
+
// Have the window manager re-evaluate the orientation of the screen based on the new
// activity order. Note that as a result of this, it can call back into the activity
// manager with a new orientation. We don't care about that, because the activity is
@@ -1295,9 +1321,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
r.setVisibility(true);
}
- if (mKeyguardController.isKeyguardLocked()) {
- r.notifyUnknownVisibilityLaunched();
- }
final int applicationInfoUid =
(r.info.applicationInfo != null) ? r.info.applicationInfo.uid : -1;
if ((r.userId != app.userId) || (r.appInfo.uid != applicationInfoUid)) {
@@ -1343,7 +1366,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
+ " newIntents=" + newIntents + " andResume=" + andResume);
EventLog.writeEvent(EventLogTags.AM_RESTART_ACTIVITY, r.userId,
System.identityHashCode(r), task.taskId, r.shortComponentName);
- if (r.isHomeActivity()) {
+ if (r.isActivityTypeHome()) {
// Home process is the root process of the task.
mService.mHomeProcess = task.mActivities.get(0).app;
}
@@ -1636,6 +1659,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return true;
}
+ // Check if caller is already present on display
+ final boolean uidPresentOnDisplay = activityDisplay.isUidPresent(callingUid);
+
final int displayOwnerUid = activityDisplay.mDisplay.getOwnerUid();
if (activityDisplay.mDisplay.getType() == TYPE_VIRTUAL && displayOwnerUid != SYSTEM_UID
&& displayOwnerUid != aInfo.applicationInfo.uid) {
@@ -1648,7 +1674,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
}
// Check if the caller is allowed to embed activities from other apps.
if (mService.checkPermission(ACTIVITY_EMBEDDING, callingPid, callingUid)
- == PERMISSION_DENIED) {
+ == PERMISSION_DENIED && !uidPresentOnDisplay) {
if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:"
+ " disallow activity embedding without permission.");
return false;
@@ -1669,8 +1695,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return true;
}
- // Check if caller is present on display
- if (activityDisplay.isUidPresent(callingUid)) {
+ if (uidPresentOnDisplay) {
if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:"
+ " allow launch for caller present on the display");
return true;
@@ -2078,40 +2103,37 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
if ((flags & ActivityManager.MOVE_TASK_WITH_HOME) != 0) {
// Caller wants the home activity moved with it. To accomplish this,
// we'll just indicate that this task returns to the home task.
- task.setTaskToReturnTo(HOME_ACTIVITY_TYPE);
+ task.setTaskToReturnTo(ACTIVITY_TYPE_HOME);
}
- ActivityStack currentStack = task.getStack();
+ final ActivityStack currentStack = task.getStack();
if (currentStack == null) {
Slog.e(TAG, "findTaskToMoveToFrontLocked: can't move task="
+ task + " to front. Stack is null");
return;
}
- if (task.isResizeable() && options != null) {
- int stackId = options.getLaunchStackId();
- if (canUseActivityOptionsLaunchBounds(options, stackId)) {
- final Rect bounds = TaskRecord.validateBounds(options.getLaunchBounds());
- task.updateOverrideConfiguration(bounds);
- if (stackId == INVALID_STACK_ID) {
- stackId = task.getLaunchStackId();
- }
- if (stackId != currentStack.mStackId) {
- task.reparent(stackId, ON_TOP, REPARENT_KEEP_STACK_AT_FRONT, !ANIMATE,
- DEFER_RESUME, "findTaskToMoveToFrontLocked");
- stackId = currentStack.mStackId;
- // moveTaskToStackUncheckedLocked() should already placed the task on top,
- // still need moveTaskToFrontLocked() below for any transition settings.
- }
- if (StackId.resizeStackWithLaunchBounds(stackId)) {
- resizeStackLocked(stackId, bounds,
- null /* tempTaskBounds */, null /* tempTaskInsetBounds */,
- !PRESERVE_WINDOWS, true /* allowResizeInDockedMode */, !DEFER_RESUME);
- } else {
- // WM resizeTask must be done after the task is moved to the correct stack,
- // because Task's setBounds() also updates dim layer's bounds, but that has
- // dependency on the stack.
- task.resizeWindowContainer();
- }
+ if (task.isResizeable() && canUseActivityOptionsLaunchBounds(options)) {
+ final Rect bounds = TaskRecord.validateBounds(options.getLaunchBounds());
+ task.updateOverrideConfiguration(bounds);
+
+ int stackId = getLaunchStackId(null, options, task);
+
+ if (stackId != currentStack.mStackId) {
+ task.reparent(stackId, ON_TOP, REPARENT_KEEP_STACK_AT_FRONT, !ANIMATE,
+ DEFER_RESUME, "findTaskToMoveToFrontLocked");
+ stackId = currentStack.mStackId;
+ // moveTaskToStackUncheckedLocked() should already placed the task on top,
+ // still need moveTaskToFrontLocked() below for any transition settings.
+ }
+ if (StackId.resizeStackWithLaunchBounds(stackId)) {
+ resizeStackLocked(stackId, bounds,
+ null /* tempTaskBounds */, null /* tempTaskInsetBounds */,
+ !PRESERVE_WINDOWS, true /* allowResizeInDockedMode */, !DEFER_RESUME);
+ } else {
+ // WM resizeTask must be done after the task is moved to the correct stack,
+ // because Task's setBounds() also updates dim layer's bounds, but that has
+ // dependency on the stack.
+ task.resizeWindowContainer();
}
}
@@ -2122,17 +2144,18 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
if (DEBUG_STACK) Slog.d(TAG_STACK,
"findTaskToMoveToFront: moved to front of stack=" + currentStack);
- handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, DEFAULT_DISPLAY,
+ handleNonResizableTaskIfNeeded(task, WINDOWING_MODE_UNDEFINED, DEFAULT_DISPLAY,
currentStack.mStackId, forceNonResizeable);
}
- boolean canUseActivityOptionsLaunchBounds(ActivityOptions options, int launchStackId) {
+ boolean canUseActivityOptionsLaunchBounds(ActivityOptions options) {
// We use the launch bounds in the activity options is the device supports freeform
// window management or is launching into the pinned stack.
- if (options.getLaunchBounds() == null) {
+ if (options == null || options.getLaunchBounds() == null) {
return false;
}
- return (mService.mSupportsPictureInPicture && launchStackId == PINNED_STACK_ID)
+ return (mService.mSupportsPictureInPicture
+ && options.getLaunchWindowingMode() == WINDOWING_MODE_PINNED)
|| mService.mSupportsFreeformWindowManagement;
}
@@ -2157,6 +2180,179 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return (T) createStackOnDisplay(stackId, DEFAULT_DISPLAY, createOnTop);
}
+ private int resolveWindowingMode(@Nullable ActivityRecord r, @Nullable ActivityOptions options,
+ @Nullable TaskRecord task) {
+
+ // First preference if the windowing mode in the activity options if set.
+ int windowingMode = (options != null)
+ ? options.getLaunchWindowingMode() : WINDOWING_MODE_UNDEFINED;
+
+ // If windowing mode is unset, then next preference is the candidate task, then the
+ // activity record.
+ if (windowingMode == WINDOWING_MODE_UNDEFINED) {
+ if (task != null) {
+ windowingMode = task.getWindowingMode();
+ }
+ if (windowingMode == WINDOWING_MODE_UNDEFINED && r != null) {
+ windowingMode = r.getWindowingMode();
+ }
+ }
+
+ // Make sure the windowing mode we are trying to use makes sense for what is supported.
+ if (!mService.mSupportsMultiWindow && windowingMode != WINDOWING_MODE_FULLSCREEN) {
+ windowingMode = WINDOWING_MODE_FULLSCREEN;
+ }
+
+ if (!mService.mSupportsSplitScreenMultiWindow
+ && (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY
+ || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY)) {
+ windowingMode = WINDOWING_MODE_FULLSCREEN;
+ }
+
+ if (windowingMode == WINDOWING_MODE_FREEFORM
+ && !mService.mSupportsFreeformWindowManagement) {
+ windowingMode = WINDOWING_MODE_FULLSCREEN;
+ }
+
+ return windowingMode;
+ }
+
+ private int resolveActivityType(@Nullable ActivityRecord r, @Nullable ActivityOptions options,
+ @Nullable TaskRecord task) {
+ // First preference if the activity type in the activity options if set.
+ int activityType = (options != null)
+ ? options.getLaunchActivityType() : ACTIVITY_TYPE_UNDEFINED;
+
+ if (activityType != ACTIVITY_TYPE_UNDEFINED) {
+ return activityType;
+ }
+
+ // If activity type is unset, then next preference is the task, then the activity record.
+ if (task != null) {
+ activityType = task.getActivityType();
+ }
+ if (activityType == ACTIVITY_TYPE_UNDEFINED && r != null) {
+ activityType = r.getActivityType();
+ }
+ return activityType;
+ }
+
+ int getLaunchStackId(@Nullable ActivityRecord r, @Nullable ActivityOptions options,
+ @Nullable TaskRecord candidateTask) {
+ return getLaunchStackId(r, options, candidateTask, INVALID_DISPLAY);
+ }
+
+ /**
+ * Returns the right stack to use for launching factoring in all the input parameters.
+ *
+ * @param r The activity we are trying to launch. Can be null.
+ * @param options The activity options used to the launch. Can be null.
+ * @param candidateTask The possible task the activity might be launched in. Can be null.
+ *
+ * @return The stack to use for the launch or INVALID_STACK_ID.
+ */
+ int getLaunchStackId(@Nullable ActivityRecord r, @Nullable ActivityOptions options,
+ @Nullable TaskRecord candidateTask, int candidateDisplayId) {
+ int taskId = INVALID_TASK_ID;
+ int displayId = INVALID_DISPLAY;
+ //Rect bounds = null;
+
+ // We give preference to the launch preference in activity options.
+ if (options != null) {
+ taskId = options.getLaunchTaskId();
+ displayId = options.getLaunchDisplayId();
+ // TODO: Need to work this into the equation...
+ //bounds = options.getLaunchBounds();
+ }
+
+ // First preference for stack goes to the task Id set in the activity options. Use the stack
+ // associated with that if possible.
+ if (taskId != INVALID_TASK_ID) {
+ // Temporarily set the task id to invalid in case in re-entry.
+ options.setLaunchTaskId(INVALID_TASK_ID);
+ final TaskRecord task = anyTaskForIdLocked(taskId,
+ MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE, options);
+ options.setLaunchTaskId(taskId);
+ if (task != null) {
+ return task.getStack().mStackId;
+ }
+ }
+
+ final int windowingMode = resolveWindowingMode(r, options, candidateTask);
+ final int activityType = resolveActivityType(r, options, candidateTask);
+ ActivityStack stack = null;
+
+ // Next preference for stack goes to the display Id set in the activity options or the
+ // candidate display.
+ if (displayId == INVALID_DISPLAY) {
+ displayId = candidateDisplayId;
+ }
+ if (displayId != INVALID_DISPLAY) {
+ if (r != null) {
+ // TODO: This should also take in the windowing mode and activity type into account.
+ stack = getValidLaunchStackOnDisplay(displayId, r);
+ if (stack != null) {
+ return stack.mStackId;
+ }
+ }
+ final ActivityDisplay display = getActivityDisplayOrCreateLocked(displayId);
+ if (display != null) {
+ for (int i = display.mStacks.size() - 1; i >= 0; --i) {
+ stack = display.mStacks.get(i);
+ if (stack.getWindowingMode() == windowingMode
+ && stack.getActivityType() == activityType) {
+ return stack.mStackId;
+ }
+ }
+ // TODO: We should create the stack we want on the display at this point.
+ }
+ }
+
+ // Give preference to the stack and display of the input task and activity if they match the
+ // mode we want to launch into.
+ if (candidateTask != null) {
+ stack = candidateTask.getStack();
+ }
+ if (stack == null && r != null) {
+ stack = r.getStack();
+ }
+ if (stack != null) {
+ if (stack.getWindowingMode() == windowingMode
+ && stack.getActivityType() == activityType) {
+ return stack.mStackId;
+ }
+ ActivityDisplay display = stack.getDisplay();
+
+ if (display != null) {
+ for (int i = display.mStacks.size() - 1; i >= 0; --i) {
+ stack = display.mStacks.get(i);
+ if (stack.getWindowingMode() == windowingMode
+ && stack.getActivityType() == activityType) {
+ return stack.mStackId;
+ }
+ }
+ }
+ }
+
+ // Give preference to the type of activity we are trying to launch followed by the windowing
+ // mode.
+ int stackId = getStackIdForActivityType(activityType);
+ if (stackId != INVALID_STACK_ID) {
+ return stackId;
+ }
+ stackId = getStackIdForWindowingMode(windowingMode);
+ if (stackId != INVALID_STACK_ID) {
+ return stackId;
+ }
+
+ // Whatever...return some default for now.
+ if (candidateTask != null && candidateTask.mBounds != null
+ && mService.mSupportsFreeformWindowManagement) {
+ return FREEFORM_WORKSPACE_STACK_ID;
+ }
+ return FULLSCREEN_WORKSPACE_STACK_ID;
+ }
+
/**
* Get a topmost stack on the display, that is a valid launch stack for specified activity.
* If there is no such stack, new dynamic stack can be created.
@@ -2174,7 +2370,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// Return the topmost valid stack on the display.
for (int i = activityDisplay.mStacks.size() - 1; i >= 0; --i) {
final ActivityStack stack = activityDisplay.mStacks.get(i);
- if (mService.mActivityStarter.isValidLaunchStackId(stack.mStackId, displayId, r)) {
+ if (isValidLaunchStackId(stack.mStackId, displayId, r)) {
return stack;
}
}
@@ -2182,7 +2378,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// If there is no valid stack on the external display - check if new dynamic stack will do.
if (displayId != Display.DEFAULT_DISPLAY) {
final int newDynamicStackId = getNextStackId();
- if (mService.mActivityStarter.isValidLaunchStackId(newDynamicStackId, displayId, r)) {
+ if (isValidLaunchStackId(newDynamicStackId, displayId, r)) {
return createStackOnDisplay(newDynamicStackId, displayId, true /*onTop*/);
}
}
@@ -2191,6 +2387,32 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return null;
}
+ boolean isValidLaunchStackId(int stackId, int displayId, ActivityRecord r) {
+ switch (stackId) {
+ case INVALID_STACK_ID:
+ case HOME_STACK_ID:
+ return false;
+ case FULLSCREEN_WORKSPACE_STACK_ID:
+ return true;
+ case FREEFORM_WORKSPACE_STACK_ID:
+ return r.supportsFreeform();
+ case DOCKED_STACK_ID:
+ return r.supportsSplitScreen();
+ case PINNED_STACK_ID:
+ return r.supportsPictureInPicture();
+ case RECENTS_STACK_ID:
+ return r.isActivityTypeRecents();
+ case ASSISTANT_STACK_ID:
+ return r.isActivityTypeAssistant();
+ default:
+ if (StackId.isDynamicStack(stackId)) {
+ return r.canBeLaunchedOnDisplay(displayId);
+ }
+ Slog.e(TAG, "isValidLaunchStackId: Unexpected stackId=" + stackId);
+ return false;
+ }
+ }
+
ArrayList<ActivityStack> getStacks() {
ArrayList<ActivityStack> allStacks = new ArrayList<>();
for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
@@ -2264,11 +2486,11 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
final ArrayList<TaskRecord> tasks = mHomeStack.getAllTasks();
for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
final TaskRecord task = tasks.get(taskNdx);
- if (task.isHomeTask()) {
+ if (task.isActivityTypeHome()) {
final ArrayList<ActivityRecord> activities = task.mActivities;
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
final ActivityRecord r = activities.get(activityNdx);
- if (r.isHomeActivity()
+ if (r.isActivityTypeHome()
&& ((userId == UserHandle.USER_ALL) || (r.userId == userId))) {
return r;
}
@@ -2278,15 +2500,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return null;
}
- /**
- * Returns if a stack should be treated as if it's docked. Returns true if the stack is
- * the docked stack itself, or if it's side-by-side to the docked stack.
- */
- boolean isStackDockedInEffect(int stackId) {
- return stackId == DOCKED_STACK_ID ||
- (StackId.isResizeableByDockedStack(stackId) && getStack(DOCKED_STACK_ID) != null);
- }
-
void resizeStackLocked(int stackId, Rect bounds, Rect tempTaskBounds, Rect tempTaskInsetBounds,
boolean preserveWindows, boolean allowResizeInDockedMode, boolean deferResume) {
if (stackId == DOCKED_STACK_ID) {
@@ -2300,9 +2513,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return;
}
+ final boolean splitScreenActive = getStack(DOCKED_STACK_ID) != null;
if (!allowResizeInDockedMode
- && !stack.getWindowConfiguration().tasksAreFloating()
- && getStack(DOCKED_STACK_ID) != null) {
+ && !stack.getWindowConfiguration().tasksAreFloating() && splitScreenActive) {
// If the docked stack exists, don't resize non-floating stacks independently of the
// size computed from the docked stack size (otherwise they will be out of sync)
return;
@@ -2311,6 +2524,16 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "am.resizeStack_" + stackId);
mWindowManager.deferSurfaceLayout();
try {
+ if (stack.supportSplitScreenWindowingMode()) {
+ if (bounds == null && stack.inSplitScreenWindowingMode()) {
+ // null bounds = fullscreen windowing mode...at least for now.
+ stack.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
+ } else if (splitScreenActive) {
+ // If we are in split-screen mode and this stack support split-screen, then
+ // it should be split-screen secondary mode. i.e. adjacent to the docked stack.
+ stack.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+ }
+ }
stack.resize(bounds, tempTaskBounds, tempTaskInsetBounds);
if (!deferResume) {
stack.ensureVisibleActivitiesConfigurationLocked(
@@ -2322,14 +2545,14 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
}
}
- void deferUpdateBounds(int stackId) {
+ private void deferUpdateBounds(int stackId) {
final ActivityStack stack = getStack(stackId);
if (stack != null) {
stack.deferUpdateBounds();
}
}
- void continueUpdateBounds(int stackId) {
+ private void continueUpdateBounds(int stackId) {
final ActivityStack stack = getStack(stackId);
if (stack != null) {
stack.continueUpdateBounds();
@@ -2340,8 +2563,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
continueUpdateBounds(RECENTS_STACK_ID);
for (int i = mResizingTasksDuringAnimation.size() - 1; i >= 0; i--) {
final int taskId = mResizingTasksDuringAnimation.valueAt(i);
- final TaskRecord task =
- anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_ONLY, INVALID_STACK_ID);
+ final TaskRecord task = anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_ONLY);
if (task != null) {
task.setTaskDockedResizing(false);
}
@@ -2364,13 +2586,15 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// which is dismissing the docked stack, so resize all other stacks to
// fullscreen here already so we don't end up with resize trashing.
for (int i = FIRST_STATIC_STACK_ID; i <= LAST_STATIC_STACK_ID; i++) {
- if (StackId.isResizeableByDockedStack(i)) {
- ActivityStack otherStack = getStack(i);
- if (otherStack != null) {
- resizeStackLocked(i, null, null, null, PRESERVE_WINDOWS,
- true /* allowResizeInDockedMode */, DEFER_RESUME);
- }
+ final ActivityStack otherStack = getStack(i);
+ if (otherStack == null) {
+ continue;
+ }
+ if (!otherStack.inSplitScreenSecondaryWindowingMode()) {
+ continue;
}
+ resizeStackLocked(i, null, null, null, PRESERVE_WINDOWS,
+ true /* allowResizeInDockedMode */, DEFER_RESUME);
}
// Also disable docked stack resizing since we have manually adjusted the
@@ -2401,8 +2625,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// Update the return-to to reflect where the pinned stack task was moved
// from so that we retain the stack that was previously visible if the
// pinned stack is recreated. See moveActivityToPinnedStackLocked().
- task.setTaskToReturnTo(isFullscreenStackVisible && onTop ?
- APPLICATION_ACTIVITY_TYPE : HOME_ACTIVITY_TYPE);
+ task.setTaskToReturnTo(isFullscreenStackVisible ?
+ ACTIVITY_TYPE_STANDARD : ACTIVITY_TYPE_HOME);
}
// Defer resume until all the tasks have been moved to the fullscreen stack
task.reparent(FULLSCREEN_WORKSPACE_STACK_ID, ON_TOP,
@@ -2484,18 +2708,24 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// screen controls and is also the same for all stacks.
final Rect otherTaskRect = new Rect();
for (int i = FIRST_STATIC_STACK_ID; i <= LAST_STATIC_STACK_ID; i++) {
+ if (i == DOCKED_STACK_ID) {
+ continue;
+ }
final ActivityStack current = getStack(i);
- if (current != null && StackId.isResizeableByDockedStack(i)) {
- current.getStackDockedModeBounds(
- tempOtherTaskBounds /* currentTempTaskBounds */,
- tempRect /* outStackBounds */,
- otherTaskRect /* outTempTaskBounds */, true /* ignoreVisibility */);
-
- resizeStackLocked(i, !tempRect.isEmpty() ? tempRect : null,
- !otherTaskRect.isEmpty() ? otherTaskRect : tempOtherTaskBounds,
- tempOtherTaskInsetBounds, preserveWindows,
- true /* allowResizeInDockedMode */, deferResume);
+ if (current == null || !current.supportSplitScreenWindowingMode()) {
+ continue;
}
+ // Need to set windowing mode here before we try to get the dock bounds.
+ current.setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+ current.getStackDockedModeBounds(
+ tempOtherTaskBounds /* currentTempTaskBounds */,
+ tempRect /* outStackBounds */,
+ otherTaskRect /* outTempTaskBounds */, true /* ignoreVisibility */);
+
+ resizeStackLocked(i, !tempRect.isEmpty() ? tempRect : null,
+ !otherTaskRect.isEmpty() ? otherTaskRect : tempOtherTaskBounds,
+ tempOtherTaskInsetBounds, preserveWindows,
+ true /* allowResizeInDockedMode */, deferResume);
}
}
if (!deferResume) {
@@ -2628,8 +2858,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
*/
boolean removeTaskByIdLocked(int taskId, boolean killProcess, boolean removeFromRecents,
boolean pauseImmediately) {
- final TaskRecord tr = anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS,
- INVALID_STACK_ID);
+ final TaskRecord tr = anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS);
if (tr != null) {
tr.removeTaskActivitiesLocked(pauseImmediately);
cleanUpRemovedTaskLocked(tr, killProcess, removeFromRecents);
@@ -2728,23 +2957,11 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
/**
* Restores a recent task to a stack
* @param task The recent task to be restored.
- * @param stackId The stack to restore the task to (default launch stack will be used
- * if stackId is {@link android.app.ActivityManager.StackId#INVALID_STACK_ID}
- * or is not a static stack).
+ * @param aOptions The activity options to use for restoration.
* @return true if the task has been restored successfully.
*/
- boolean restoreRecentTaskLocked(TaskRecord task, int stackId) {
- if (!StackId.isStaticStack(stackId)) {
- // If stack is not static (or stack id is invalid) - use the default one.
- // This means that tasks that were on external displays will be restored on the
- // primary display.
- stackId = task.getLaunchStackId();
- } else if (stackId == DOCKED_STACK_ID && !task.supportsSplitScreen()) {
- // Preferred stack is the docked stack, but the task can't go in the docked stack.
- // Put it in the fullscreen stack.
- stackId = FULLSCREEN_WORKSPACE_STACK_ID;
- }
-
+ boolean restoreRecentTaskLocked(TaskRecord task, ActivityOptions aOptions) {
+ final int stackId = getLaunchStackId(null, aOptions, task);
final ActivityStack currentStack = task.getStack();
if (currentStack != null) {
// Task has already been restored once. See if we need to do anything more
@@ -2757,15 +2974,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
currentStack.removeTask(task, "restoreRecentTaskLocked", REMOVE_TASK_MODE_MOVING);
}
- final ActivityStack stack =
- getStack(stackId, CREATE_IF_NEEDED, !ON_TOP);
-
- if (stack == null) {
- // What does this mean??? Not sure how we would get here...
- if (DEBUG_RECENTS) Slog.v(TAG_RECENTS,
- "Unable to find/create stack to restore recent task=" + task);
- return false;
- }
+ final ActivityStack stack = getStack(stackId, CREATE_IF_NEEDED, !ON_TOP);
stack.addTask(task, false /* toTop */, "restoreRecentTask");
// TODO: move call for creation here and other place into Stack.addTask()
@@ -2922,8 +3131,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// move the home stack forward if we are currently entering picture-in-picture
// while pausing because that changes the focused stack and may prevent the new
// starting activity from resuming.
- if (moveHomeStackToFront && task.getTaskToReturnTo() == HOME_ACTIVITY_TYPE
- && (r.state == RESUMED || !r.supportsPictureInPictureWhilePausing)) {
+ if (moveHomeStackToFront && task.returnsToHomeTask()
+ && (r.state == RESUMED || !r.supportsEnterPipOnTaskSwitch)) {
// Move the home stack forward if the task we just moved to the pinned stack
// was launched from home so home should be visible behind it.
moveHomeStackToFront(reason);
@@ -2941,8 +3150,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// ensures that all the necessary work to migrate states in the old and new stacks
// is also done.
final TaskRecord newTask = task.getStack().createTaskRecord(
- getNextTaskIdForUserLocked(r.userId), r.info, r.intent, null, null, true,
- r.mActivityType);
+ getNextTaskIdForUserLocked(r.userId), r.info, r.intent, null, null, true);
r.reparent(newTask, MAX_VALUE, "moveActivityToStack");
// Defer resume until below, and do not schedule PiP changes until we animate below
@@ -2952,7 +3160,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// Reset the state that indicates it can enter PiP while pausing after we've moved it
// to the pinned stack
- r.supportsPictureInPictureWhilePausing = false;
+ r.supportsEnterPipOnTaskSwitch = false;
} finally {
mWindowManager.continueSurfaceLayout();
}
@@ -2972,7 +3180,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
resumeFocusedStackTopActivityLocked();
- mService.mTaskChangeNotificationController.notifyActivityPinned(r.packageName,
+ mService.mTaskChangeNotificationController.notifyActivityPinned(r.packageName, r.userId,
r.getTask().taskId);
}
@@ -3014,7 +3222,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
final ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
final ActivityStack stack = stacks.get(stackNdx);
- if (!checkActivityBelongsInStack(r, stack)) {
+ if (!r.hasCompatibleActivityType(stack)) {
if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping stack: (mismatch activity/stack) "
+ stack);
continue;
@@ -3033,6 +3241,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// tasks should always have lower priority than any affinity-matching tasks
// in the fullscreen stacks
affinityMatch = mTmpFindTaskResult.r;
+ } else if (DEBUG_TASKS && mTmpFindTaskResult.matchedByRootAffinity) {
+ Slog.d(TAG_TASKS, "Skipping match on different display "
+ + mTmpFindTaskResult.r.getDisplayId() + " " + displayId);
}
}
}
@@ -3042,21 +3253,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return affinityMatch;
}
- /**
- * Checks that for the given activity {@param r}, its activity type matches the {@param stack}
- * type.
- */
- private boolean checkActivityBelongsInStack(ActivityRecord r, ActivityStack stack) {
- if (r.isHomeActivity()) {
- return stack.isHomeStack();
- } else if (r.isRecentsActivity()) {
- return stack.isRecentsStack();
- } else if (r.isAssistantActivity()) {
- return stack.isAssistantStack();
- }
- return true;
- }
-
ActivityRecord findActivityLocked(Intent intent, ActivityInfo info,
boolean compareIntentFilters) {
for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
@@ -3234,6 +3430,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
}
boolean reportResumedActivityLocked(ActivityRecord r) {
+ // A resumed activity cannot be stopping. remove from list
+ mStoppingActivities.remove(r);
+
final ActivityStack stack = r.getStack();
if (isFocusedStack(stack)) {
mService.updateUsageStats(r, true);
@@ -3263,7 +3462,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
final ActivityStack stack = task.getStack();
r.mLaunchTaskBehind = false;
- task.setLastThumbnailLocked(r.screenshotActivityLocked());
mRecentTasks.addLocked(task);
mService.mTaskChangeNotificationController.notifyTaskStackChanged();
r.setVisibility(false);
@@ -3437,7 +3635,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
if (stack == null) {
stack = mHomeStack;
}
- final boolean homeInFront = stack.isHomeStack();
+ final boolean homeInFront = stack.isActivityTypeHome();
if (stack.isOnHomeDisplay()) {
stack.moveToFront("switchUserOnHomeDisplay");
} else {
@@ -3558,15 +3756,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
pw.println("mCurTaskIdForUser=" + mCurTaskIdForUser);
pw.print(prefix); pw.println("mUserStackInFront=" + mUserStackInFront);
pw.print(prefix); pw.println("mStacks=" + mStacks);
- // TODO: move this to LockTaskController
- final SparseArray<String[]> packages = mService.mLockTaskPackages;
- if (packages.size() > 0) {
- pw.print(prefix); pw.println("mLockTaskPackages (userId:packages)=");
- for (int i = 0; i < packages.size(); ++i) {
- pw.print(prefix); pw.print(prefix); pw.print(packages.keyAt(i));
- pw.print(":"); pw.println(Arrays.toString(packages.valueAt(i)));
- }
- }
if (!mWaitingForActivityVisible.isEmpty()) {
pw.print(prefix); pw.println("mWaitingForActivityVisible=");
for (int i = 0; i < mWaitingForActivityVisible.size(); ++i) {
@@ -3578,6 +3767,26 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
mService.mLockTaskController.dump(pw, prefix);
}
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ super.writeToProto(proto, CONFIGURATION_CONTAINER);
+ for (int displayNdx = 0; displayNdx < mActivityDisplays.size(); ++displayNdx) {
+ ActivityDisplay activityDisplay = mActivityDisplays.valueAt(displayNdx);
+ activityDisplay.writeToProto(proto, DISPLAYS);
+ }
+ mKeyguardController.writeToProto(proto, KEYGUARD_CONTROLLER);
+ if (mFocusedStack != null) {
+ proto.write(FOCUSED_STACK_ID, mFocusedStack.mStackId);
+ ActivityRecord focusedActivity = getResumedActivityLocked();
+ if (focusedActivity != null) {
+ focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
+ }
+ } else {
+ proto.write(FOCUSED_STACK_ID, INVALID_STACK_ID);
+ }
+ proto.end(token);
+ }
+
/**
* Dump all connected displays' configurations.
* @param prefix Prefix to apply to each line of the dump.
@@ -3643,25 +3852,14 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
ArrayList<ActivityStack> stacks = activityDisplay.mStacks;
for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
final ActivityStack stack = stacks.get(stackNdx);
- StringBuilder stackHeader = new StringBuilder(128);
- stackHeader.append(" Stack #");
- stackHeader.append(stack.mStackId);
- stackHeader.append(":");
- stackHeader.append("\n");
- stackHeader.append(" mFullscreen=" + stack.mFullscreen);
- stackHeader.append("\n");
- stackHeader.append(" isSleeping=" + stack.shouldSleepActivities());
- stackHeader.append("\n");
- stackHeader.append(" mBounds=" + stack.mBounds);
-
- final boolean printedStackHeader = stack.dumpActivitiesLocked(fd, pw, dumpAll,
- dumpClient, dumpPackage, needSep, stackHeader.toString());
- printed |= printedStackHeader;
- if (!printedStackHeader) {
- // Ensure we always dump the stack header even if there are no activities
- pw.println();
- pw.println(stackHeader);
- }
+ pw.println();
+ pw.println(" Stack #" + stack.mStackId + ":");
+ pw.println(" mFullscreen=" + stack.mFullscreen);
+ pw.println(" isSleeping=" + stack.shouldSleepActivities());
+ pw.println(" mBounds=" + stack.mBounds);
+
+ printed |= stack.dumpActivitiesLocked(fd, pw, dumpAll, dumpClient, dumpPackage,
+ needSep);
printed |= dumpHistoryList(fd, pw, stack.mLRUActivities, " ", "Run", false,
!dumpAll, false, dumpPackage, true,
@@ -3709,8 +3907,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
static boolean dumpHistoryList(FileDescriptor fd, PrintWriter pw, List<ActivityRecord> list,
String prefix, String label, boolean complete, boolean brief, boolean client,
- String dumpPackage, boolean needNL, String header1, String header2) {
- TaskRecord lastTask = null;
+ String dumpPackage, boolean needNL, String header, TaskRecord lastTask) {
String innerPrefix = null;
String[] args = null;
boolean printed = false;
@@ -3729,13 +3926,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
pw.println("");
needNL = false;
}
- if (header1 != null) {
- pw.println(header1);
- header1 = null;
- }
- if (header2 != null) {
- pw.println(header2);
- header2 = null;
+ if (header != null) {
+ pw.println(header);
+ header = null;
}
if (lastTask != r.getTask()) {
lastTask = r.getTask();
@@ -4041,19 +4234,21 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return list;
}
- void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredStackId,
+ void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredWindowingMode,
int preferredDisplayId, int actualStackId) {
- handleNonResizableTaskIfNeeded(task, preferredStackId, preferredDisplayId, actualStackId,
- false /* forceNonResizable */);
+ handleNonResizableTaskIfNeeded(task, preferredWindowingMode, preferredDisplayId,
+ actualStackId, false /* forceNonResizable */);
}
- void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredStackId,
+ void handleNonResizableTaskIfNeeded(TaskRecord task, int preferredWindowingMode,
int preferredDisplayId, int actualStackId, boolean forceNonResizable) {
final boolean isSecondaryDisplayPreferred =
- (preferredDisplayId != DEFAULT_DISPLAY && preferredDisplayId != INVALID_DISPLAY)
- || StackId.isDynamicStack(preferredStackId);
- if (((!isStackDockedInEffect(actualStackId) && preferredStackId != DOCKED_STACK_ID)
- && !isSecondaryDisplayPreferred) || task.isHomeTask()) {
+ (preferredDisplayId != DEFAULT_DISPLAY && preferredDisplayId != INVALID_DISPLAY);
+ final ActivityStack actualStack = getStack(actualStackId);
+ final boolean inSplitScreenMode = actualStack != null
+ && actualStack.inSplitScreenWindowingMode();
+ if (((!inSplitScreenMode && preferredWindowingMode != WINDOWING_MODE_SPLIT_SCREEN_PRIMARY)
+ && !isSecondaryDisplayPreferred) || task.isActivityTypeHome()) {
return;
}
@@ -4150,31 +4345,29 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
return;
}
- scheduleUpdatePictureInPictureModeIfNeeded(task, stack.mBounds, false /* immediate */);
+ scheduleUpdatePictureInPictureModeIfNeeded(task, stack.mBounds);
}
- void scheduleUpdatePictureInPictureModeIfNeeded(TaskRecord task, Rect targetStackBounds,
- boolean immediate) {
-
- if (immediate) {
- mHandler.removeMessages(REPORT_PIP_MODE_CHANGED_MSG);
- for (int i = task.mActivities.size() - 1; i >= 0; i--) {
- final ActivityRecord r = task.mActivities.get(i);
- if (r.app != null && r.app.thread != null) {
- r.updatePictureInPictureMode(targetStackBounds);
- }
- }
- } else {
- for (int i = task.mActivities.size() - 1; i >= 0; i--) {
- final ActivityRecord r = task.mActivities.get(i);
- if (r.app != null && r.app.thread != null) {
- mPipModeChangedActivities.add(r);
- }
+ void scheduleUpdatePictureInPictureModeIfNeeded(TaskRecord task, Rect targetStackBounds) {
+ for (int i = task.mActivities.size() - 1; i >= 0; i--) {
+ final ActivityRecord r = task.mActivities.get(i);
+ if (r.app != null && r.app.thread != null) {
+ mPipModeChangedActivities.add(r);
}
- mPipModeChangedTargetStackBounds = targetStackBounds;
+ }
+ mPipModeChangedTargetStackBounds = targetStackBounds;
+
+ if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) {
+ mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG);
+ }
+ }
- if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) {
- mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG);
+ void updatePictureInPictureMode(TaskRecord task, Rect targetStackBounds, boolean forceUpdate) {
+ mHandler.removeMessages(REPORT_PIP_MODE_CHANGED_MSG);
+ for (int i = task.mActivities.size() - 1; i >= 0; i--) {
+ final ActivityRecord r = task.mActivities.get(i);
+ if (r.app != null && r.app.thread != null) {
+ r.updatePictureInPictureMode(targetStackBounds, forceUpdate);
}
}
}
@@ -4236,7 +4429,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
synchronized (mService) {
for (int i = mPipModeChangedActivities.size() - 1; i >= 0; i--) {
final ActivityRecord r = mPipModeChangedActivities.remove(i);
- r.updatePictureInPictureMode(mPipModeChangedTargetStackBounds);
+ r.updatePictureInPictureMode(mPipModeChangedTargetStackBounds,
+ false /* forceUpdate */);
}
}
} break;
@@ -4414,6 +4608,17 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
void setIsSleeping(boolean asleep) {
mSleeping = asleep;
}
+
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ super.writeToProto(proto, ActivityDisplayProto.CONFIGURATION_CONTAINER);
+ proto.write(ID, mDisplayId);
+ for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
+ final ActivityStack stack = mStacks.get(stackNdx);
+ stack.writeToProto(proto, STACKS);
+ }
+ proto.end(token);
+ }
}
ActivityStack findStackBehind(ActivityStack stack) {
@@ -4448,18 +4653,22 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
final String callingPackage;
final Intent intent;
final int userId;
+ int activityType = ACTIVITY_TYPE_UNDEFINED;
+ int windowingMode = WINDOWING_MODE_UNDEFINED;
final ActivityOptions activityOptions = (bOptions != null)
? new ActivityOptions(bOptions) : null;
- final int launchStackId = (activityOptions != null)
- ? activityOptions.getLaunchStackId() : INVALID_STACK_ID;
- if (StackId.isHomeOrRecentsStack(launchStackId)) {
+ if (activityOptions != null) {
+ activityType = activityOptions.getLaunchActivityType();
+ windowingMode = activityOptions.getLaunchWindowingMode();
+ }
+ if (activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS) {
throw new IllegalArgumentException("startActivityFromRecentsInner: Task "
+ taskId + " can't be launch in the home/recents stack.");
}
mWindowManager.deferSurfaceLayout();
try {
- if (launchStackId == DOCKED_STACK_ID) {
+ if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) {
mWindowManager.setDockedStackCreateState(
activityOptions.getDockCreateMode(), null /* initialBounds */);
@@ -4471,7 +4680,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
}
task = anyTaskForIdLocked(taskId, MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE,
- launchStackId);
+ activityOptions);
if (task == null) {
continueUpdateBounds(RECENTS_STACK_ID);
mWindowManager.executeAppTransition();
@@ -4482,14 +4691,13 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// Since we don't have an actual source record here, we assume that the currently
// focused activity was the source.
final ActivityStack focusedStack = getFocusedStack();
- final ActivityRecord sourceRecord =
- focusedStack != null ? focusedStack.topActivity() : null;
+ final ActivityRecord sourceRecord = focusedStack != null
+ ? focusedStack.topActivity() : null;
+ final int stackId = getLaunchStackId(null, activityOptions, task);
- if (launchStackId != INVALID_STACK_ID) {
- if (task.getStackId() != launchStackId) {
- task.reparent(launchStackId, ON_TOP, REPARENT_MOVE_STACK_TO_FRONT, ANIMATE,
- DEFER_RESUME, "startActivityFromRecents");
- }
+ if (stackId != INVALID_STACK_ID && task.getStackId() != stackId) {
+ task.reparent(stackId, ON_TOP, REPARENT_MOVE_STACK_TO_FRONT, ANIMATE, DEFER_RESUME,
+ "startActivityFromRecents");
}
// If the user must confirm credentials (e.g. when first launching a work app and the
@@ -4508,7 +4716,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
// If we are launching the task in the docked stack, put it into resizing mode so
// the window renders full-screen with the background filling the void. Also only
// call this at the end to make sure that tasks exists on the window manager side.
- if (launchStackId == DOCKED_STACK_ID) {
+ if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) {
setResizingDuringAnimation(task);
}
@@ -4526,7 +4734,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
userId = task.userId;
int result = mService.startActivityInPackage(callingUid, callingPackage, intent, null,
null, null, 0, 0, bOptions, userId, task, "startActivityFromRecents");
- if (launchStackId == DOCKED_STACK_ID) {
+ if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) {
setResizingDuringAnimation(task);
}
return result;
diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java
index 235477e24a27..fab4d0d21b8e 100644
--- a/services/core/java/com/android/server/am/ActivityStarter.java
+++ b/services/core/java/com/android/server/am/ActivityStarter.java
@@ -36,6 +36,11 @@ import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
import static android.app.ActivityManager.StackId.RECENTS_STACK_ID;
import static android.app.ActivityManager.StackId.isDynamicStack;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
@@ -72,9 +77,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_USER_LEAV
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.ActivityManagerService.ANIMATE;
-import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.ASSISTANT_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE;
import static com.android.server.am.ActivityStack.ActivityState.RESUMED;
import static com.android.server.am.ActivityStack.STACK_INVISIBLE;
import static com.android.server.am.ActivityStackSupervisor.CREATE_IF_NEEDED;
@@ -167,7 +169,8 @@ class ActivityStarter {
private boolean mDoResume;
private int mStartFlags;
private ActivityRecord mSourceRecord;
- private int mSourceDisplayId;
+ // The display to launch the activity onto, barring any strong reason to do otherwise.
+ private int mPreferredDisplayId;
private TaskRecord mInTask;
private boolean mAddingToTask;
@@ -222,7 +225,7 @@ class ActivityStarter {
mDoResume = false;
mStartFlags = 0;
mSourceRecord = null;
- mSourceDisplayId = INVALID_DISPLAY;
+ mPreferredDisplayId = INVALID_DISPLAY;
mInTask = null;
mAddingToTask = false;
@@ -1024,10 +1027,12 @@ class ActivityStarter {
ActivityRecord reusedActivity = getReusableIntentActivity();
- final int preferredLaunchStackId =
- (mOptions != null) ? mOptions.getLaunchStackId() : INVALID_STACK_ID;
- final int preferredLaunchDisplayId =
- (mOptions != null) ? mOptions.getLaunchDisplayId() : DEFAULT_DISPLAY;
+ int preferredWindowingMode = WINDOWING_MODE_UNDEFINED;
+ int preferredLaunchDisplayId = DEFAULT_DISPLAY;
+ if (mOptions != null) {
+ preferredWindowingMode = mOptions.getLaunchWindowingMode();
+ preferredLaunchDisplayId = mOptions.getLaunchDisplayId();
+ }
if (reusedActivity != null) {
// When the flags NEW_TASK and CLEAR_TASK are set, then the task gets reused but
@@ -1158,7 +1163,7 @@ class ActivityStarter {
// Don't use mStartActivity.task to show the toast. We're not starting a new activity
// but reusing 'top'. Fields in mStartActivity may not be fully initialized.
- mSupervisor.handleNonResizableTaskIfNeeded(top.getTask(), preferredLaunchStackId,
+ mSupervisor.handleNonResizableTaskIfNeeded(top.getTask(), preferredWindowingMode,
preferredLaunchDisplayId, topStack.mStackId);
return START_DELIVERED_TO_TOP;
@@ -1173,8 +1178,7 @@ class ActivityStarter {
if (mStartActivity.resultTo == null && mInTask == null && !mAddingToTask
&& (mLaunchFlags & FLAG_ACTIVITY_NEW_TASK) != 0) {
newTask = true;
- result = setTaskFromReuseOrCreateNewTask(
- taskToAffiliate, preferredLaunchStackId, topStack);
+ result = setTaskFromReuseOrCreateNewTask(taskToAffiliate, topStack);
} else if (mSourceRecord != null) {
result = setTaskFromSourceRecord();
} else if (mInTask != null) {
@@ -1241,7 +1245,7 @@ class ActivityStarter {
}
mSupervisor.updateUserStackLocked(mStartActivity.userId, mTargetStack);
- mSupervisor.handleNonResizableTaskIfNeeded(mStartActivity.getTask(), preferredLaunchStackId,
+ mSupervisor.handleNonResizableTaskIfNeeded(mStartActivity.getTask(), preferredWindowingMode,
preferredLaunchDisplayId, mTargetStack.mStackId);
return START_SUCCESS;
@@ -1260,7 +1264,7 @@ class ActivityStarter {
mVoiceSession = voiceSession;
mVoiceInteractor = voiceInteractor;
- mSourceDisplayId = getSourceDisplayId(mSourceRecord, mStartActivity);
+ mPreferredDisplayId = getPreferedDisplayId(mSourceRecord, mStartActivity, options);
mLaunchBounds = getOverrideBounds(r, options, inTask);
@@ -1507,7 +1511,7 @@ class ActivityStarter {
// There can be one and only one instance of single instance activity in the
// history, and it is always in its own unique task, so we do a special search.
intentActivity = mSupervisor.findActivityLocked(mIntent, mStartActivity.info,
- mStartActivity.isHomeActivity());
+ mStartActivity.isActivityTypeHome());
} else if ((mLaunchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0) {
// For the launch adjacent case we only want to put the activity in an existing
// task if the activity already exists in the history.
@@ -1515,7 +1519,7 @@ class ActivityStarter {
!mLaunchSingleTask);
} else {
// Otherwise find the best task to put the activity in.
- intentActivity = mSupervisor.findTaskLocked(mStartActivity, mSourceDisplayId);
+ intentActivity = mSupervisor.findTaskLocked(mStartActivity, mPreferredDisplayId);
}
}
return intentActivity;
@@ -1523,10 +1527,12 @@ class ActivityStarter {
/**
* Returns the ID of the display to use for a new activity. If the device is in VR mode,
- * then return the Vr mode's virtual display ID. If not, if the source activity has
- * a explicit display ID set, use that to launch the activity.
+ * then return the Vr mode's virtual display ID. If not, if the activity was started with
+ * a launchDisplayId, use that. Otherwise, if the source activity has a explicit display ID
+ * set, use that to launch the activity.
*/
- private int getSourceDisplayId(ActivityRecord sourceRecord, ActivityRecord startingActivity) {
+ private int getPreferedDisplayId(
+ ActivityRecord sourceRecord, ActivityRecord startingActivity, ActivityOptions options) {
// Check if the Activity is a VR activity. If so, the activity should be launched in
// main display.
if (startingActivity != null && startingActivity.requestedVrComponent != null) {
@@ -1543,6 +1549,13 @@ class ActivityStarter {
return displayId;
}
+ // If the caller requested a display, prefer that display.
+ final int launchDisplayId =
+ (options != null) ? options.getLaunchDisplayId() : INVALID_DISPLAY;
+ if (launchDisplayId != INVALID_DISPLAY) {
+ return launchDisplayId;
+ }
+
displayId = sourceRecord != null ? sourceRecord.getDisplayId() : INVALID_DISPLAY;
// If the activity has a displayId set explicitly, launch it on the same displayId.
if (displayId != INVALID_DISPLAY) {
@@ -1654,8 +1667,8 @@ class ActivityStarter {
mTargetStack.moveToFront("intentActivityFound");
}
- mSupervisor.handleNonResizableTaskIfNeeded(intentActivity.getTask(), INVALID_STACK_ID,
- DEFAULT_DISPLAY, mTargetStack.mStackId);
+ mSupervisor.handleNonResizableTaskIfNeeded(intentActivity.getTask(),
+ WINDOWING_MODE_UNDEFINED, DEFAULT_DISPLAY, mTargetStack.mStackId);
// If the caller has requested that the target task be reset, then do so.
if ((mLaunchFlags & FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) != 0) {
@@ -1669,21 +1682,20 @@ class ActivityStarter {
if ((launchFlags & (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_TASK_ON_HOME))
== (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_TASK_ON_HOME)) {
// Caller wants to appear on home activity.
- task.setTaskToReturnTo(HOME_ACTIVITY_TYPE);
+ task.setTaskToReturnTo(ACTIVITY_TYPE_HOME);
return;
- } else if (focusedStack == null || focusedStack.isHomeStack()) {
+ } else if (focusedStack == null || focusedStack.isActivityTypeHome()) {
// Task will be launched over the home stack, so return home.
- task.setTaskToReturnTo(HOME_ACTIVITY_TYPE);
+ task.setTaskToReturnTo(ACTIVITY_TYPE_HOME);
return;
- } else if (focusedStack != null && focusedStack != task.getStack() &&
- focusedStack.isAssistantStack()) {
+ } else if (focusedStack != task.getStack() && focusedStack.isActivityTypeAssistant()) {
// Task was launched over the assistant stack, so return there
- task.setTaskToReturnTo(ASSISTANT_ACTIVITY_TYPE);
+ task.setTaskToReturnTo(ACTIVITY_TYPE_ASSISTANT);
return;
}
// Else we are coming from an application stack so return to an application.
- task.setTaskToReturnTo(APPLICATION_ACTIVITY_TYPE);
+ task.setTaskToReturnTo(ACTIVITY_TYPE_STANDARD);
}
private void setTaskFromIntentActivity(ActivityRecord intentActivity) {
@@ -1779,7 +1791,7 @@ class ActivityStarter {
}
private int setTaskFromReuseOrCreateNewTask(
- TaskRecord taskToAffiliate, int preferredLaunchStackId, ActivityStack topStack) {
+ TaskRecord taskToAffiliate, ActivityStack topStack) {
mTargetStack = computeStackFocus(
mStartActivity, true, mLaunchBounds, mLaunchFlags, mOptions);
@@ -1791,7 +1803,7 @@ class ActivityStarter {
mSupervisor.getNextTaskIdForUserLocked(mStartActivity.userId),
mNewTaskInfo != null ? mNewTaskInfo : mStartActivity.info,
mNewTaskIntent != null ? mNewTaskIntent : mIntent, mVoiceSession,
- mVoiceInteractor, !mLaunchTaskBehind /* toTop */, mStartActivity.mActivityType);
+ mVoiceInteractor, !mLaunchTaskBehind /* toTop */);
addOrReparentStartingActivity(task, "setTaskFromReuseOrCreateNewTask - mReuseTask");
if (mLaunchBounds != null) {
final int stackId = mTargetStack.mStackId;
@@ -1821,8 +1833,10 @@ class ActivityStarter {
// If stack id is specified in activity options, usually it means that activity is
// launched not from currently focused stack (e.g. from SysUI or from shell) - in
// that case we check the target stack.
+ // TODO: Not sure I understand the value or use of the commented out code and the
+ // comment above. See if this causes any issues and why...
updateTaskReturnToType(mStartActivity.getTask(), mLaunchFlags,
- preferredLaunchStackId != INVALID_STACK_ID ? mTargetStack : topStack);
+ /*preferredLaunchStackId != INVALID_STACK_ID ? mTargetStack : */topStack);
}
if (mDoResume) {
mTargetStack.moveToFront("reuseOrNewTask");
@@ -1964,7 +1978,8 @@ class ActivityStarter {
if (mLaunchBounds != null) {
mInTask.updateOverrideConfiguration(mLaunchBounds);
- int stackId = mInTask.getLaunchStackId();
+ // TODO: Shouldn't we already know what stack to use by the time we get here?
+ int stackId = mSupervisor.getLaunchStackId(null, null, mInTask);
if (stackId != mInTask.getStackId()) {
mInTask.reparent(stackId, ON_TOP, REPARENT_KEEP_STACK_AT_FRONT, !ANIMATE,
DEFER_RESUME, "inTaskToFront");
@@ -1995,7 +2010,7 @@ class ActivityStarter {
final ActivityRecord prev = mTargetStack.topActivity();
final TaskRecord task = (prev != null) ? prev.getTask() : mTargetStack.createTaskRecord(
mSupervisor.getNextTaskIdForUserLocked(mStartActivity.userId), mStartActivity.info,
- mIntent, null, null, true, mStartActivity.mActivityType);
+ mIntent, null, null, true);
addOrReparentStartingActivity(task, "setTaskToCurrentTopOrCreateNewTask");
mTargetStack.positionChildWindowContainerAtTop(task);
if (DEBUG_TASKS) Slog.v(TAG_TASKS, "Starting new activity " + mStartActivity
@@ -2079,15 +2094,15 @@ class ActivityStarter {
return mSupervisor.mFocusedStack;
}
- if (mSourceDisplayId != DEFAULT_DISPLAY) {
+ if (mPreferredDisplayId != DEFAULT_DISPLAY) {
// Try to put the activity in a stack on a secondary display.
- stack = mSupervisor.getValidLaunchStackOnDisplay(mSourceDisplayId, r);
+ stack = mSupervisor.getValidLaunchStackOnDisplay(mPreferredDisplayId, r);
if (stack == null) {
// If source display is not suitable - look for topmost valid stack in the system.
if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS,
- "computeStackFocus: Can't launch on mSourceDisplayId=" + mSourceDisplayId
- + ", looking on all displays.");
- stack = mSupervisor.getNextValidLaunchStackLocked(r, mSourceDisplayId);
+ "computeStackFocus: Can't launch on mPreferredDisplayId="
+ + mPreferredDisplayId + ", looking on all displays.");
+ stack = mSupervisor.getNextValidLaunchStackLocked(r, mPreferredDisplayId);
}
}
if (stack == null) {
@@ -2102,9 +2117,10 @@ class ActivityStarter {
}
}
// If there is no suitable dynamic stack then we figure out which static stack to use.
- final int stackId = task != null ? task.getLaunchStackId() :
- bounds != null ? FREEFORM_WORKSPACE_STACK_ID :
- FULLSCREEN_WORKSPACE_STACK_ID;
+ final int stackId = task != null ? mSupervisor.getLaunchStackId(r, aOptions, task)
+ // TODO: This should go in mSupervisor.getLaunchStackId method...
+ : bounds != null && mService.mSupportsFreeformWindowManagement
+ ? FREEFORM_WORKSPACE_STACK_ID : FULLSCREEN_WORKSPACE_STACK_ID;
stack = mSupervisor.getStack(stackId, CREATE_IF_NEEDED, ON_TOP);
}
if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, "computeStackFocus: New stack r="
@@ -2124,7 +2140,7 @@ class ActivityStarter {
canUseFocusedStack = true;
break;
case ASSISTANT_STACK_ID:
- canUseFocusedStack = r.isAssistantActivity();
+ canUseFocusedStack = r.isActivityTypeAssistant();
break;
case DOCKED_STACK_ID:
// Any activity which supports split screen can go in the docked stack.
@@ -2142,8 +2158,8 @@ class ActivityStarter {
}
return canUseFocusedStack && !newTask
- // We strongly prefer to launch activities on the same display as their source.
- && (mSourceDisplayId == focusedStack.mDisplayId);
+ // Using the focus stack isn't important enough to override the prefered display.
+ && (mPreferredDisplayId == focusedStack.mDisplayId);
}
private ActivityStack getLaunchStack(ActivityRecord r, int launchFlags, TaskRecord task,
@@ -2155,28 +2171,26 @@ class ActivityStarter {
// If the activity is of a specific type, return the associated stack, creating it if
// necessary
- if (r.isHomeActivity()) {
+ if (r.isActivityTypeHome()) {
return mSupervisor.mHomeStack;
}
- if (r.isRecentsActivity()) {
+ if (r.isActivityTypeRecents()) {
return mSupervisor.getStack(RECENTS_STACK_ID, CREATE_IF_NEEDED, ON_TOP);
}
- if (r.isAssistantActivity()) {
+ if (r.isActivityTypeAssistant()) {
return mSupervisor.getStack(ASSISTANT_STACK_ID, CREATE_IF_NEEDED, ON_TOP);
}
- final int launchDisplayId =
- (aOptions != null) ? aOptions.getLaunchDisplayId() : INVALID_DISPLAY;
-
- final int launchStackId =
- (aOptions != null) ? aOptions.getLaunchStackId() : INVALID_STACK_ID;
-
- if (launchStackId != INVALID_STACK_ID && launchDisplayId != INVALID_DISPLAY) {
- throw new IllegalArgumentException(
- "Stack and display id can't be set at the same time.");
+ int launchDisplayId = INVALID_DISPLAY;
+ int launchStackId = INVALID_STACK_ID;
+ if (aOptions != null) {
+ launchDisplayId = aOptions.getLaunchDisplayId();
+ final int vrDisplayId = mUsingVr2dDisplay ? mPreferredDisplayId : INVALID_DISPLAY;
+ launchStackId = mSupervisor.getLaunchStackId(r, aOptions, task, vrDisplayId);
}
- if (isValidLaunchStackId(launchStackId, launchDisplayId, r)) {
+ // TODO: Will no longer be needed once we are on longer using static stack ids.
+ if (mSupervisor.isValidLaunchStackId(launchStackId, launchDisplayId, r)) {
return mSupervisor.getStack(launchStackId, CREATE_IF_NEEDED, ON_TOP);
}
if (launchStackId == DOCKED_STACK_ID) {
@@ -2184,14 +2198,16 @@ class ActivityStarter {
// for this activity, so we put the activity in the fullscreen stack.
return mSupervisor.getStack(FULLSCREEN_WORKSPACE_STACK_ID, CREATE_IF_NEEDED, ON_TOP);
}
+ // TODO: Can probably be removed since ASS.getLaunchStackId() does display resolution.
if (launchDisplayId != INVALID_DISPLAY) {
// Stack id has higher priority than display id.
return mSupervisor.getValidLaunchStackOnDisplay(launchDisplayId, r);
}
// If we are using Vr2d display, find the virtual display stack.
+ // TODO: Can be removed.
if (mUsingVr2dDisplay) {
- ActivityStack as = mSupervisor.getValidLaunchStackOnDisplay(mSourceDisplayId, r);
+ ActivityStack as = mSupervisor.getValidLaunchStackOnDisplay(mPreferredDisplayId, r);
if (DEBUG_STACK) {
Slog.v(TAG, "Launch stack for app: " + r.toString() +
", on virtual display stack:" + as.toString());
@@ -2200,7 +2216,7 @@ class ActivityStarter {
}
if (((launchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) == 0)
- || mSourceDisplayId != DEFAULT_DISPLAY) {
+ || mPreferredDisplayId != DEFAULT_DISPLAY) {
return null;
}
// Otherwise handle adjacent launch.
@@ -2240,39 +2256,11 @@ class ActivityStarter {
}
}
- boolean isValidLaunchStackId(int stackId, int displayId, ActivityRecord r) {
- switch (stackId) {
- case INVALID_STACK_ID:
- case HOME_STACK_ID:
- return false;
- case FULLSCREEN_WORKSPACE_STACK_ID:
- return true;
- case FREEFORM_WORKSPACE_STACK_ID:
- return r.supportsFreeform();
- case DOCKED_STACK_ID:
- return r.supportsSplitScreen();
- case PINNED_STACK_ID:
- return r.supportsPictureInPicture();
- case RECENTS_STACK_ID:
- return r.isRecentsActivity();
- case ASSISTANT_STACK_ID:
- return r.isAssistantActivity();
- default:
- if (StackId.isDynamicStack(stackId)) {
- return r.canBeLaunchedOnDisplay(displayId);
- }
- Slog.e(TAG, "isValidLaunchStackId: Unexpected stackId=" + stackId);
- return false;
- }
- }
-
- Rect getOverrideBounds(ActivityRecord r, ActivityOptions options, TaskRecord inTask) {
+ private Rect getOverrideBounds(ActivityRecord r, ActivityOptions options, TaskRecord inTask) {
Rect newBounds = null;
- if (options != null && (r.isResizeable() || (inTask != null && inTask.isResizeable()))) {
- if (mSupervisor.canUseActivityOptionsLaunchBounds(
- options, options.getLaunchStackId())) {
- newBounds = TaskRecord.validateBounds(options.getLaunchBounds());
- }
+ if (mSupervisor.canUseActivityOptionsLaunchBounds(options)
+ && (r.isResizeable() || (inTask != null && inTask.isResizeable()))) {
+ newBounds = TaskRecord.validateBounds(options.getLaunchBounds());
}
return newBounds;
}
diff --git a/services/core/java/com/android/server/am/AppErrorDialog.java b/services/core/java/com/android/server/am/AppErrorDialog.java
index 51ce30ef08f3..541226682bac 100644
--- a/services/core/java/com/android/server/am/AppErrorDialog.java
+++ b/services/core/java/com/android/server/am/AppErrorDialog.java
@@ -40,7 +40,6 @@ final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListen
private final ProcessRecord mProc;
private final boolean mRepeating;
private final boolean mIsRestartable;
-
private CharSequence mName;
static int CANT_SHOW = -1;
@@ -110,17 +109,16 @@ final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListen
LayoutInflater.from(context).inflate(
com.android.internal.R.layout.app_error_dialog, frame, true);
- boolean hasRestart = !mRepeating && mIsRestartable;
final boolean hasReceiver = mProc.errorReportReceiver != null;
final TextView restart = findViewById(com.android.internal.R.id.aerr_restart);
restart.setOnClickListener(this);
- restart.setVisibility(hasRestart ? View.VISIBLE : View.GONE);
+ restart.setVisibility(mIsRestartable ? View.VISIBLE : View.GONE);
final TextView report = findViewById(com.android.internal.R.id.aerr_report);
report.setOnClickListener(this);
report.setVisibility(hasReceiver ? View.VISIBLE : View.GONE);
final TextView close = findViewById(com.android.internal.R.id.aerr_close);
- close.setVisibility(!hasRestart ? View.VISIBLE : View.GONE);
+ close.setVisibility(mRepeating ? View.VISIBLE : View.GONE);
close.setOnClickListener(this);
boolean showMute = !Build.IS_USER && Settings.Global.getInt(context.getContentResolver(),
diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java
index fc03db1203bd..440b3d3baedd 100644
--- a/services/core/java/com/android/server/am/AppErrors.java
+++ b/services/core/java/com/android/server/am/AppErrors.java
@@ -55,7 +55,6 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
-import java.util.List;
import java.util.Set;
import static com.android.server.Watchdog.NATIVE_STACKS_OF_INTEREST;
@@ -593,20 +592,46 @@ class AppErrors {
boolean handleAppCrashLocked(ProcessRecord app, String reason,
String shortMsg, String longMsg, String stackTrace, AppErrorDialog.Data data) {
- long now = SystemClock.uptimeMillis();
- boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
+ final long now = SystemClock.uptimeMillis();
+ final boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0;
+ final boolean procIsBoundForeground =
+ (app.curProcState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE);
+
Long crashTime;
Long crashTimePersistent;
+ boolean tryAgain = false;
+
if (!app.isolated) {
crashTime = mProcessCrashTimes.get(app.info.processName, app.uid);
crashTimePersistent = mProcessCrashTimesPersistent.get(app.info.processName, app.uid);
} else {
crashTime = crashTimePersistent = null;
}
- if (crashTime != null && now < crashTime+ProcessList.MIN_CRASH_INTERVAL) {
- // This process loses!
+
+ // Bump up the crash count of any services currently running in the proc.
+ for (int i = app.services.size() - 1; i >= 0; i--) {
+ // Any services running in the application need to be placed
+ // back in the pending list.
+ ServiceRecord sr = app.services.valueAt(i);
+ // If the service was restarted a while ago, then reset crash count, else increment it.
+ if (now > sr.restartTime + ProcessList.MIN_CRASH_INTERVAL) {
+ sr.crashCount = 1;
+ } else {
+ sr.crashCount++;
+ }
+ // Allow restarting for started or bound foreground services that are crashing.
+ // This includes wallpapers.
+ if (sr.crashCount < mService.mConstants.BOUND_SERVICE_MAX_CRASH_RETRY
+ && (sr.isForeground || procIsBoundForeground)) {
+ tryAgain = true;
+ }
+ }
+
+ if (crashTime != null && now < crashTime + ProcessList.MIN_CRASH_INTERVAL) {
+ // The process crashed again very quickly. If it was a bound foreground service, let's
+ // try to restart again in a while, otherwise the process loses!
Slog.w(TAG, "Process " + app.info.processName
+ " has crashed too many times: killing!");
EventLog.writeEvent(EventLogTags.AM_PROCESS_CRASHED_TOO_MUCH,
@@ -631,7 +656,7 @@ class AppErrors {
// Don't let services in this process be restarted and potentially
// annoy the user repeatedly. Unless it is persistent, since those
// processes run critical code.
- mService.removeProcessLocked(app, false, false, "crash");
+ mService.removeProcessLocked(app, false, tryAgain, "crash");
mService.mStackSupervisor.resumeFocusedStackTopActivityLocked();
if (!showBackground) {
return false;
@@ -650,21 +675,8 @@ class AppErrors {
}
}
- boolean procIsBoundForeground =
- (app.curProcState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE);
- // Bump up the crash count of any services currently running in the proc.
- for (int i=app.services.size()-1; i>=0; i--) {
- // Any services running in the application need to be placed
- // back in the pending list.
- ServiceRecord sr = app.services.valueAt(i);
- sr.crashCount++;
-
- // Allow restarting for started or bound foreground services that are crashing the
- // first time. This includes wallpapers.
- if ((data != null) && (sr.crashCount <= 1)
- && (sr.isForeground || procIsBoundForeground)) {
- data.isRestartableForService = true;
- }
+ if (data != null && tryAgain) {
+ data.isRestartableForService = true;
}
// If the crashing process is what we consider to be the "home process" and it has been
@@ -676,7 +688,7 @@ class AppErrors {
&& (mService.mHomeProcess.info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
final ActivityRecord r = activities.get(activityNdx);
- if (r.isHomeActivity()) {
+ if (r.isActivityTypeHome()) {
Log.i(TAG, "Clearing package preferred activities from " + r.packageName);
try {
ActivityThread.getPackageManager()
@@ -690,7 +702,7 @@ class AppErrors {
if (!app.isolated) {
// XXX Can't keep track of crash times for isolated processes,
- // because they don't have a perisistent identity.
+ // because they don't have a persistent identity.
mProcessCrashTimes.put(app.info.processName, app.uid, now);
mProcessCrashTimesPersistent.put(app.info.processName, app.uid, now);
}
diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
index 5ff04798110f..f3ccba5490d6 100644
--- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
+++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
@@ -38,6 +38,7 @@ import com.android.internal.os.BatteryStatsImpl;
import libcore.util.EmptyArray;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@@ -116,6 +117,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
}
public synchronized Future<?> scheduleWrite() {
+ if (mExecutorService.isShutdown()) {
+ return CompletableFuture.failedFuture(new IllegalStateException("worker shutdown"));
+ }
+
scheduleSyncLocked("write", UPDATE_ALL);
// Since we use a single threaded executor, we can assume the next scheduled task's
// Future finishes after the sync.
@@ -127,7 +132,9 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
* within the task, never wait on the resulting Future. This will result in a deadlock.
*/
public synchronized void scheduleRunnable(Runnable runnable) {
- mExecutorService.submit(runnable);
+ if (!mExecutorService.isShutdown()) {
+ mExecutorService.submit(runnable);
+ }
}
public void shutdown() {
@@ -135,6 +142,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
}
private Future<?> scheduleSyncLocked(String reason, int flags) {
+ if (mExecutorService.isShutdown()) {
+ return CompletableFuture.failedFuture(new IllegalStateException("worker shutdown"));
+ }
+
if (mCurrentFuture == null) {
mUpdateFlags = flags;
mCurrentReason = reason;
@@ -253,6 +264,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
mStats.updateKernelMemoryBandwidthLocked();
}
+ if ((updateFlags & UPDATE_RPM) != 0) {
+ mStats.updateRpmStatsLocked();
+ }
+
if (bluetoothInfo != null) {
if (bluetoothInfo.isValid()) {
mStats.updateBluetoothStateLocked(bluetoothInfo);
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 33568cd02c0d..e839003b957e 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -49,9 +49,11 @@ import com.android.internal.app.IBatteryStats;
import com.android.internal.os.BatteryStatsHelper;
import com.android.internal.os.BatteryStatsImpl;
import com.android.internal.os.PowerProfile;
+import com.android.internal.os.RpmStats;
import com.android.internal.util.DumpUtils;
import com.android.server.LocalServices;
import com.android.server.power.BatterySaverPolicy.ServiceType;
+import android.util.StatsLog;
import java.io.File;
import java.io.FileDescriptor;
@@ -84,6 +86,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
private final Context mContext;
private final BatteryExternalStatsWorker mWorker;
+ private native void getLowPowerStats(RpmStats rpmStats);
private native int getPlatformLowPowerStats(ByteBuffer outBuffer);
private native int getSubsystemLowPowerStats(ByteBuffer outBuffer);
private CharsetDecoder mDecoderStat = StandardCharsets.UTF_8
@@ -95,6 +98,19 @@ public final class BatteryStatsService extends IBatteryStats.Stub
private CharBuffer mUtf16BufferStat = CharBuffer.allocate(MAX_LOW_POWER_STATS_SIZE);
private static final int MAX_LOW_POWER_STATS_SIZE = 512;
+ /**
+ * Replaces the information in the given rpmStats with up-to-date information.
+ */
+ @Override
+ public void fillLowPowerStats(RpmStats rpmStats) {
+ if (DBG) Slog.d(TAG, "begin getLowPowerStats");
+ try {
+ getLowPowerStats(rpmStats);
+ } finally {
+ if (DBG) Slog.d(TAG, "end getLowPowerStats");
+ }
+ }
+
@Override
public String getPlatformLowPowerStats() {
if (DBG) Slog.d(TAG, "begin getPlatformLowPowerStats");
@@ -119,7 +135,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
@Override
public String getSubsystemLowPowerStats() {
- Slog.d(TAG, "begin getSubsystemLowPowerStats");
+ if (DBG) Slog.d(TAG, "begin getSubsystemLowPowerStats");
try {
mUtf8BufferStat.clear();
mUtf16BufferStat.clear();
@@ -135,7 +151,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
mUtf16BufferStat.flip();
return mUtf16BufferStat.toString();
} finally {
- Slog.d(TAG, "end getSubsystemLowPowerStats");
+ if (DBG) Slog.d(TAG, "end getSubsystemLowPowerStats");
}
}
@@ -281,12 +297,26 @@ public final class BatteryStatsService extends IBatteryStats.Stub
void noteProcessStart(String name, int uid) {
synchronized (mStats) {
mStats.noteProcessStartLocked(name, uid);
+
+ // TODO: remove this once we figure out properly where and how
+ // PROCESS_EVENT = 1112
+ // KEY_STATE = 1
+ // KEY_PACKAGE_NAME: 1002
+ // KEY_UID: 2
+ StatsLog.writeArray(1112, 1, 1, 1002, name, 2, uid);
}
}
void noteProcessCrash(String name, int uid) {
synchronized (mStats) {
mStats.noteProcessCrashLocked(name, uid);
+
+ // TODO: remove this once we figure out properly where and how
+ // PROCESS_EVENT = 1112
+ // KEY_STATE = 1
+ // KEY_PACKAGE_NAME: 1002
+ // KEY_UID: 2
+ StatsLog.writeArray(1112, 1, 2, 1002, name, 2, uid);
}
}
@@ -478,14 +508,14 @@ public final class BatteryStatsService extends IBatteryStats.Stub
mStats.noteStartSensorLocked(uid, sensor);
}
}
-
+
public void noteStopSensor(int uid, int sensor) {
enforceCallingPermission();
synchronized (mStats) {
mStats.noteStopSensorLocked(uid, sensor);
}
}
-
+
public void noteVibratorOn(int uid, long durationMillis) {
enforceCallingPermission();
synchronized (mStats) {
@@ -506,37 +536,42 @@ public final class BatteryStatsService extends IBatteryStats.Stub
mStats.noteStartGpsLocked(uid);
}
}
-
+
public void noteStopGps(int uid) {
enforceCallingPermission();
synchronized (mStats) {
mStats.noteStopGpsLocked(uid);
}
}
-
+
public void noteScreenState(int state) {
enforceCallingPermission();
if (DBG) Slog.d(TAG, "begin noteScreenState");
synchronized (mStats) {
mStats.noteScreenStateLocked(state);
+ // TODO: remove this once we figure out properly where and how
+ // SCREEN_EVENT = 2
+ // KEY_STATE: 1
+ // State value: state. We can change this to our own def later.
+ StatsLog.writeArray(2, 1, state);
}
if (DBG) Slog.d(TAG, "end noteScreenState");
}
-
+
public void noteScreenBrightness(int brightness) {
enforceCallingPermission();
synchronized (mStats) {
mStats.noteScreenBrightnessLocked(brightness);
}
}
-
+
public void noteUserActivity(int uid, int event) {
enforceCallingPermission();
synchronized (mStats) {
mStats.noteUserActivityLocked(uid, event);
}
}
-
+
public void noteWakeUp(String reason, int reasonUid) {
enforceCallingPermission();
synchronized (mStats) {
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index 7c7eda7a3efe..d83545491d2d 100644
--- a/services/core/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -1445,20 +1445,19 @@ public final class BroadcastQueue {
r.receiverTime = now;
r.anrCount++;
- // Current receiver has passed its expiration date.
- if (r.nextReceiver <= 0) {
- Slog.w(TAG, "Timeout on receiver with nextReceiver <= 0");
- return;
- }
-
ProcessRecord app = null;
String anrMessage = null;
- Object curReceiver = r.receivers.get(r.nextReceiver-1);
- r.delivery[r.nextReceiver-1] = BroadcastRecord.DELIVERY_TIMEOUT;
- Slog.w(TAG, "Receiver during timeout: " + curReceiver);
+ Object curReceiver;
+ if (r.nextReceiver > 0) {
+ curReceiver = r.receivers.get(r.nextReceiver-1);
+ r.delivery[r.nextReceiver-1] = BroadcastRecord.DELIVERY_TIMEOUT;
+ } else {
+ curReceiver = r.curReceiver;
+ }
+ Slog.w(TAG, "Receiver during timeout of " + r + " : " + curReceiver);
logBroadcastReceiverDiscardLocked(r);
- if (curReceiver instanceof BroadcastFilter) {
+ if (curReceiver != null && curReceiver instanceof BroadcastFilter) {
BroadcastFilter bf = (BroadcastFilter)curReceiver;
if (bf.receiverList.pid != 0
&& bf.receiverList.pid != ActivityManagerService.MY_PID) {
diff --git a/services/core/java/com/android/server/am/KeyguardController.java b/services/core/java/com/android/server/am/KeyguardController.java
index cea80c8d0e9d..e03c530d0c92 100644
--- a/services/core/java/com/android/server/am/KeyguardController.java
+++ b/services/core/java/com/android/server/am/KeyguardController.java
@@ -19,12 +19,15 @@ package com.android.server.am;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.Display.INVALID_DISPLAY;
import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_NO_WINDOW_ANIMATIONS;
import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_TO_SHADE;
import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_WITH_WALLPAPER;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS;
+import static com.android.server.am.proto.KeyguardControllerProto.KEYGUARD_OCCLUDED;
+import static com.android.server.am.proto.KeyguardControllerProto.KEYGUARD_SHOWING;
import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_NO_ANIMATION;
import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_TO_SHADE;
import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_WITH_WALLPAPER;
@@ -38,6 +41,7 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.os.Trace;
import android.util.Slog;
+import android.util.proto.ProtoOutputStream;
import com.android.internal.policy.IKeyguardDismissCallback;
import com.android.server.wm.WindowManagerService;
@@ -66,6 +70,7 @@ class KeyguardController {
private int mBeforeUnoccludeTransit;
private int mVisibilityTransactionDepth;
private SleepToken mSleepToken;
+ private int mSecondaryDisplayShowing = INVALID_DISPLAY;
KeyguardController(ActivityManagerService service,
ActivityStackSupervisor stackSupervisor) {
@@ -78,10 +83,12 @@ class KeyguardController {
}
/**
- * @return true if Keyguard is showing, not going away, and not being occluded, false otherwise
+ * @return true if Keyguard is showing, not going away, and not being occluded on the given
+ * display, false otherwise
*/
- boolean isKeyguardShowing() {
- return mKeyguardShowing && !mKeyguardGoingAway && !mOccluded;
+ boolean isKeyguardShowing(int displayId) {
+ return mKeyguardShowing && !mKeyguardGoingAway &&
+ (displayId == DEFAULT_DISPLAY ? !mOccluded : displayId == mSecondaryDisplayShowing);
}
/**
@@ -94,15 +101,19 @@ class KeyguardController {
/**
* Update the Keyguard showing state.
*/
- void setKeyguardShown(boolean showing) {
- if (showing == mKeyguardShowing) {
+ void setKeyguardShown(boolean showing, int secondaryDisplayShowing) {
+ boolean showingChanged = showing != mKeyguardShowing;
+ if (!showingChanged && secondaryDisplayShowing == mSecondaryDisplayShowing) {
return;
}
mKeyguardShowing = showing;
- dismissDockedStackIfNeeded();
- if (showing) {
- setKeyguardGoingAway(false);
- mDismissalRequested = false;
+ mSecondaryDisplayShowing = secondaryDisplayShowing;
+ if (showingChanged) {
+ dismissDockedStackIfNeeded();
+ if (showing) {
+ setKeyguardGoingAway(false);
+ mDismissalRequested = false;
+ }
}
mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS);
updateKeyguardSleepToken();
@@ -337,9 +348,9 @@ class KeyguardController {
}
private void updateKeyguardSleepToken() {
- if (mSleepToken == null && isKeyguardShowing()) {
+ if (mSleepToken == null && isKeyguardShowing(DEFAULT_DISPLAY)) {
mSleepToken = mService.acquireSleepToken("Keyguard", DEFAULT_DISPLAY);
- } else if (mSleepToken != null && !isKeyguardShowing()) {
+ } else if (mSleepToken != null && !isKeyguardShowing(DEFAULT_DISPLAY)) {
mSleepToken.release();
mSleepToken = null;
}
@@ -354,4 +365,11 @@ class KeyguardController {
pw.println(prefix + " mDismissalRequested=" + mDismissalRequested);
pw.println(prefix + " mVisibilityTransactionDepth=" + mVisibilityTransactionDepth);
}
+
+ void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ proto.write(KEYGUARD_SHOWING, mKeyguardShowing);
+ proto.write(KEYGUARD_OCCLUDED, mOccluded);
+ proto.end(token);
+ }
}
diff --git a/services/core/java/com/android/server/am/LockTaskController.java b/services/core/java/com/android/server/am/LockTaskController.java
index c03ac86a2bf9..72b5de88e50f 100644
--- a/services/core/java/com/android/server/am/LockTaskController.java
+++ b/services/core/java/com/android/server/am/LockTaskController.java
@@ -25,11 +25,14 @@ import static android.app.StatusBarManager.DISABLE_HOME;
import static android.app.StatusBarManager.DISABLE_MASK;
import static android.app.StatusBarManager.DISABLE_NONE;
import static android.app.StatusBarManager.DISABLE_RECENT;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.Context.DEVICE_POLICY_SERVICE;
import static android.content.Context.STATUS_BAR_SERVICE;
import static android.os.UserHandle.USER_ALL;
+import static android.os.UserHandle.USER_CURRENT;
import static android.provider.Settings.Secure.LOCK_TO_APP_EXIT_LOCKED;
import static android.view.Display.DEFAULT_DISPLAY;
+
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
@@ -54,7 +57,9 @@ import android.os.RemoteException;
import android.os.ServiceManager;
import android.provider.Settings;
import android.util.Slog;
+import android.util.SparseArray;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.widget.LockPatternUtils;
@@ -64,6 +69,7 @@ import com.android.server.wm.WindowManagerService;
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.Arrays;
/**
* Helper class that deals with all things related to task locking. This includes the screen pinning
@@ -122,6 +128,11 @@ public class LockTaskController {
private final ArrayList<TaskRecord> mLockTaskModeTasks = new ArrayList<>();
/**
+ * Packages that are allowed to be launched into the lock task mode for each user.
+ */
+ private final SparseArray<String[]> mLockTaskPackages = new SparseArray<>();
+
+ /**
* Store the current lock task mode. Possible values:
* {@link ActivityManager#LOCK_TASK_MODE_NONE}, {@link ActivityManager#LOCK_TASK_MODE_LOCKED},
* {@link ActivityManager#LOCK_TASK_MODE_PINNED}
@@ -158,8 +169,8 @@ public class LockTaskController {
}
/**
- * @return whether the given task can be moved to the back of the stack. Locked tasks cannot be
- * moved to the back of the stack.
+ * @return whether the given task is locked at the moment. Locked tasks cannot be moved to the
+ * back of the stack.
*/
boolean checkLockedTask(TaskRecord task) {
if (mLockTaskModeTasks.contains(task)) {
@@ -320,9 +331,10 @@ public class LockTaskController {
}
getLockTaskNotify().show(false);
try {
- boolean shouldLockKeyguard = Settings.Secure.getInt(
+ boolean shouldLockKeyguard = Settings.Secure.getIntForUser(
mContext.getContentResolver(),
- LOCK_TO_APP_EXIT_LOCKED) != 0;
+ LOCK_TO_APP_EXIT_LOCKED,
+ USER_CURRENT) != 0;
if (mLockTaskModeState == LOCK_TASK_MODE_PINNED && shouldLockKeyguard) {
mWindowManager.lockNow(null);
mWindowManager.dismissKeyguard(null /* callback */);
@@ -420,8 +432,8 @@ public class LockTaskController {
mSupervisor.resumeFocusedStackTopActivityLocked();
mWindowManager.executeAppTransition();
} else if (lockTaskModeState != LOCK_TASK_MODE_NONE) {
- mSupervisor.handleNonResizableTaskIfNeeded(task, INVALID_STACK_ID, DEFAULT_DISPLAY,
- task.getStackId(), true /* forceNonResizable */);
+ mSupervisor.handleNonResizableTaskIfNeeded(task, WINDOWING_MODE_UNDEFINED,
+ DEFAULT_DISPLAY, task.getStackId(), true /* forceNonResizable */);
}
}
@@ -450,29 +462,35 @@ public class LockTaskController {
}
/**
- * Called when the list of packages whitelisted for lock task mode is changed. Any currently
- * locked tasks that got removed from the whitelist will be finished.
+ * Update packages that are allowed to be launched in lock task mode.
+ * @param userId Which user this whitelist is associated with
+ * @param packages The whitelist of packages allowed in lock task mode
+ * @see #mLockTaskPackages
*/
- // TODO: Missing unit tests
- void onLockTaskPackagesUpdated() {
- boolean didSomething = false;
+ void updateLockTaskPackages(int userId, String[] packages) {
+ mLockTaskPackages.put(userId, packages);
+
+ boolean taskChanged = false;
for (int taskNdx = mLockTaskModeTasks.size() - 1; taskNdx >= 0; --taskNdx) {
final TaskRecord lockedTask = mLockTaskModeTasks.get(taskNdx);
- final boolean wasWhitelisted =
- (lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE) ||
- (lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_WHITELISTED);
+ final boolean wasWhitelisted = lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE
+ || lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_WHITELISTED;
lockedTask.setLockTaskAuth();
- final boolean isWhitelisted =
- (lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE) ||
- (lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_WHITELISTED);
- if (wasWhitelisted && !isWhitelisted) {
- // Lost whitelisting authorization. End it now.
- if (DEBUG_LOCKTASK) Slog.d(TAG_LOCKTASK, "onLockTaskPackagesUpdated: removing " +
- lockedTask + " mLockTaskAuth()=" + lockedTask.lockTaskAuthToString());
- removeLockedTask(lockedTask);
- lockedTask.performClearTaskLocked();
- didSomething = true;
+ final boolean isWhitelisted = lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE
+ || lockedTask.mLockTaskAuth == LOCK_TASK_AUTH_WHITELISTED;
+
+ if (mLockTaskModeState != LOCK_TASK_MODE_LOCKED
+ || lockedTask.userId != userId
+ || !wasWhitelisted || isWhitelisted) {
+ continue;
}
+
+ // Terminate locked tasks that have recently lost whitelist authorization.
+ if (DEBUG_LOCKTASK) Slog.d(TAG_LOCKTASK, "onLockTaskPackagesUpdated: removing " +
+ lockedTask + " mLockTaskAuth()=" + lockedTask.lockTaskAuthToString());
+ removeLockedTask(lockedTask);
+ lockedTask.performClearTaskLocked();
+ taskChanged = true;
}
for (int displayNdx = mSupervisor.getChildCount() - 1; displayNdx >= 0; --displayNdx) {
@@ -482,22 +500,40 @@ public class LockTaskController {
stack.onLockTaskPackagesUpdatedLocked();
}
}
+
final ActivityRecord r = mSupervisor.topRunningActivityLocked();
- final TaskRecord task = r != null ? r.getTask() : null;
- if (mLockTaskModeTasks.isEmpty() && task != null
+ final TaskRecord task = (r != null) ? r.getTask() : null;
+ if (mLockTaskModeTasks.isEmpty() && task!= null
&& task.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE) {
// This task must have just been authorized.
if (DEBUG_LOCKTASK) Slog.d(TAG_LOCKTASK,
"onLockTaskPackagesUpdated: starting new locktask task=" + task);
- setLockTaskMode(task, LOCK_TASK_MODE_LOCKED, "package updated",
- false);
- didSomething = true;
+ setLockTaskMode(task, LOCK_TASK_MODE_LOCKED, "package updated", false);
+ taskChanged = true;
}
- if (didSomething) {
+
+ if (taskChanged) {
mSupervisor.resumeFocusedStackTopActivityLocked();
}
}
+ boolean isPackageWhitelisted(int userId, String pkg) {
+ if (pkg == null) {
+ return false;
+ }
+ String[] whitelist;
+ whitelist = mLockTaskPackages.get(userId);
+ if (whitelist == null) {
+ return false;
+ }
+ for (String whitelistedPkg : whitelist) {
+ if (pkg.equals(whitelistedPkg)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* @return the topmost locked task
*/
@@ -554,8 +590,18 @@ public class LockTaskController {
}
public void dump(PrintWriter pw, String prefix) {
- pw.print(prefix); pw.print("mLockTaskModeState=" + lockTaskModeToString());
- pw.println(" mLockTaskModeTasks" + mLockTaskModeTasks);
+ pw.println(prefix + "LockTaskController");
+ prefix = prefix + " ";
+ pw.println(prefix + "mLockTaskModeState=" + lockTaskModeToString());
+ pw.println(prefix + "mLockTaskModeTasks=");
+ for (int i = 0; i < mLockTaskModeTasks.size(); ++i) {
+ pw.println(prefix + " #" + i + " " + mLockTaskModeTasks.get(i));
+ }
+ pw.println(prefix + "mLockTaskPackages (userId:packages)=");
+ for (int i = 0; i < mLockTaskPackages.size(); ++i) {
+ pw.println(prefix + " u" + mLockTaskPackages.keyAt(i)
+ + ":" + Arrays.toString(mLockTaskPackages.valueAt(i)));
+ }
}
private String lockTaskModeToString() {
diff --git a/services/core/java/com/android/server/am/PinnedActivityStack.java b/services/core/java/com/android/server/am/PinnedActivityStack.java
index c825b314e69e..a601ee1c0c89 100644
--- a/services/core/java/com/android/server/am/PinnedActivityStack.java
+++ b/services/core/java/com/android/server/am/PinnedActivityStack.java
@@ -39,9 +39,8 @@ class PinnedActivityStack extends ActivityStack<PinnedStackWindowController>
@Override
PinnedStackWindowController createStackWindowController(int displayId, boolean onTop,
- Rect outBounds, Configuration outOverrideConfig) {
- return new PinnedStackWindowController(mStackId, this, displayId, onTop, outBounds,
- outOverrideConfig);
+ Rect outBounds) {
+ return new PinnedStackWindowController(mStackId, this, displayId, onTop, outBounds);
}
Rect getDefaultPictureInPictureBounds(float aspectRatio) {
@@ -92,15 +91,16 @@ class PinnedActivityStack extends ActivityStack<PinnedStackWindowController>
return mWindowContainerController.deferScheduleMultiWindowModeChanged();
}
- public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds) {
+ public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds,
+ boolean forceUpdate) {
// It is guaranteed that the activities requiring the update will be in the pinned stack at
// this point (either reparented before the animation into PiP, or before reparenting after
// the animation out of PiP)
synchronized(this) {
ArrayList<TaskRecord> tasks = getAllTasks();
for (int i = 0; i < tasks.size(); i++ ) {
- mStackSupervisor.scheduleUpdatePictureInPictureModeIfNeeded(tasks.get(i),
- targetStackBounds, true /* immediate */);
+ mStackSupervisor.updatePictureInPictureMode(tasks.get(i), targetStackBounds,
+ forceUpdate);
}
}
}
diff --git a/services/core/java/com/android/server/am/RecentTasks.java b/services/core/java/com/android/server/am/RecentTasks.java
index a6ebac44062e..365c5b1d005c 100644
--- a/services/core/java/com/android/server/am/RecentTasks.java
+++ b/services/core/java/com/android/server/am/RecentTasks.java
@@ -193,10 +193,6 @@ class RecentTasks extends ArrayList<TaskRecord> {
return mTaskPersister.getTaskDescriptionIcon(path);
}
- Bitmap getImageFromWriteQueue(String path) {
- return mTaskPersister.getImageFromWriteQueue(path);
- }
-
void saveImage(Bitmap image, String path) {
mTaskPersister.saveImage(image, path);
}
@@ -651,9 +647,6 @@ class RecentTasks extends ArrayList<TaskRecord> {
if (task.userId != tr.userId) {
continue;
}
- if (i > MAX_RECENT_BITMAPS) {
- tr.freeLastThumbnail();
- }
final Intent trIntent = tr.intent;
final boolean sameAffinity =
task.affinity != null && task.affinity.equals(tr.affinity);
@@ -706,7 +699,6 @@ class RecentTasks extends ArrayList<TaskRecord> {
// Either task and tr are the same or, their affinities match or their intents match
// and neither of them is a document, or they are documents using the same activity
// and their maxRecents has been reached.
- tr.disposeThumbnail();
remove(i);
if (task != tr) {
tr.removedFromRecents();
diff --git a/services/core/java/com/android/server/am/TaskChangeNotificationController.java b/services/core/java/com/android/server/am/TaskChangeNotificationController.java
index 82971696d670..6a986bb8a684 100644
--- a/services/core/java/com/android/server/am/TaskChangeNotificationController.java
+++ b/services/core/java/com/android/server/am/TaskChangeNotificationController.java
@@ -95,7 +95,7 @@ class TaskChangeNotificationController {
};
private final TaskStackConsumer mNotifyActivityPinned = (l, m) -> {
- l.onActivityPinned((String) m.obj, m.arg1);
+ l.onActivityPinned((String) m.obj, m.arg1, m.arg2);
};
private final TaskStackConsumer mNotifyActivityUnpinned = (l, m) -> {
@@ -278,10 +278,10 @@ class TaskChangeNotificationController {
}
/** Notifies all listeners when an Activity is pinned. */
- void notifyActivityPinned(String packageName, int taskId) {
+ void notifyActivityPinned(String packageName, int userId, int taskId) {
mHandler.removeMessages(NOTIFY_ACTIVITY_PINNED_LISTENERS_MSG);
final Message msg = mHandler.obtainMessage(NOTIFY_ACTIVITY_PINNED_LISTENERS_MSG,
- taskId, 0, packageName);
+ userId, taskId, packageName);
forAllLocalListeners(mNotifyActivityPinned, msg);
msg.sendToTarget();
}
diff --git a/services/core/java/com/android/server/am/TaskPersister.java b/services/core/java/com/android/server/am/TaskPersister.java
index 74c4826f583b..f6e20cd2e1b4 100644
--- a/services/core/java/com/android/server/am/TaskPersister.java
+++ b/services/core/java/com/android/server/am/TaskPersister.java
@@ -472,8 +472,7 @@ public class TaskPersister {
final int taskId = task.taskId;
if (mStackSupervisor.anyTaskForIdLocked(taskId,
- MATCH_TASK_IN_STACKS_OR_RECENT_TASKS,
- INVALID_STACK_ID) != null) {
+ MATCH_TASK_IN_STACKS_OR_RECENT_TASKS) != null) {
// Should not happen.
Slog.wtf(TAG, "Existing task with taskId " + taskId + "found");
} else if (userId != task.userId) {
diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java
index c7e600138e19..fb8b034ab064 100644
--- a/services/core/java/com/android/server/am/TaskRecord.java
+++ b/services/core/java/com/android/server/am/TaskRecord.java
@@ -16,6 +16,73 @@
package com.android.server.am;
+import static android.app.ActivityManager.RESIZE_MODE_FORCED;
+import static android.app.ActivityManager.RESIZE_MODE_SYSTEM;
+import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID;
+import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
+import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
+import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
+import static android.app.ActivityManager.StackId.HOME_STACK_ID;
+import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
+import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
+import static android.app.ActivityManager.StackId.RECENTS_STACK_ID;
+import static android.app.ActivityManager.StackId.getWindowingModeForStackId;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
+import static android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS;
+import static android.content.pm.ActivityInfo.FLAG_RELINQUISH_TASK_IDENTITY;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE_DEPRECATED;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION;
+import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
+import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
+import static android.provider.Settings.Secure.USER_SETUP_COMPLETE;
+import static android.view.Display.DEFAULT_DISPLAY;
+
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE;
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK;
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_RECENTS;
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_TASKS;
+import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_ADD_REMOVE;
+import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK;
+import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_RECENTS;
+import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_TASKS;
+import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
+import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
+import static com.android.server.am.ActivityRecord.STARTING_WINDOW_SHOWN;
+import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING;
+import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING_TO_TOP;
+import static com.android.server.am.ActivityStackSupervisor.PAUSE_IMMEDIATELY;
+import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS;
+import static com.android.server.am.proto.TaskRecordProto.ACTIVITIES;
+import static com.android.server.am.proto.TaskRecordProto.BOUNDS;
+import static com.android.server.am.proto.TaskRecordProto.CONFIGURATION_CONTAINER;
+import static com.android.server.am.proto.TaskRecordProto.FULLSCREEN;
+import static com.android.server.am.proto.TaskRecordProto.ID;
+import static com.android.server.am.proto.TaskRecordProto.LAST_NON_FULLSCREEN_BOUNDS;
+import static com.android.server.am.proto.TaskRecordProto.MIN_HEIGHT;
+import static com.android.server.am.proto.TaskRecordProto.MIN_WIDTH;
+import static com.android.server.am.proto.TaskRecordProto.ORIG_ACTIVITY;
+import static com.android.server.am.proto.TaskRecordProto.REAL_ACTIVITY;
+import static com.android.server.am.proto.TaskRecordProto.RESIZE_MODE;
+import static com.android.server.am.proto.TaskRecordProto.RETURN_TO_TYPE;
+import static com.android.server.am.proto.TaskRecordProto.STACK_ID;
+import static com.android.server.am.proto.TaskRecordProto.ACTIVITY_TYPE;
+
+import static java.lang.Integer.MAX_VALUE;
+
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.app.Activity;
@@ -23,8 +90,6 @@ import android.app.ActivityManager;
import android.app.ActivityManager.StackId;
import android.app.ActivityManager.TaskDescription;
import android.app.ActivityManager.TaskSnapshot;
-import android.app.ActivityManager.TaskThumbnail;
-import android.app.ActivityManager.TaskThumbnailInfo;
import android.app.ActivityOptions;
import android.app.AppGlobals;
import android.app.IActivityManager;
@@ -35,11 +100,8 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
-import android.graphics.Bitmap;
-import android.graphics.Point;
import android.graphics.Rect;
import android.os.Debug;
-import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.Trace;
import android.os.UserHandle;
@@ -47,11 +109,11 @@ import android.provider.Settings;
import android.service.voice.IVoiceInteractionSession;
import android.util.DisplayMetrics;
import android.util.Slog;
+import android.util.proto.ProtoOutputStream;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IVoiceInteractor;
import com.android.internal.util.XmlUtils;
-
import com.android.server.wm.AppWindowContainerController;
import com.android.server.wm.ConfigurationContainer;
import com.android.server.wm.StackWindowController;
@@ -63,7 +125,6 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
-import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
@@ -71,58 +132,6 @@ import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Objects;
-import static android.app.ActivityManager.RESIZE_MODE_FORCED;
-import static android.app.ActivityManager.RESIZE_MODE_SYSTEM;
-import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID;
-import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
-import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
-import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
-import static android.app.ActivityManager.StackId.HOME_STACK_ID;
-import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
-import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
-import static android.app.ActivityManager.StackId.RECENTS_STACK_ID;
-import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
-import static android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS;
-import static android.content.pm.ActivityInfo.FLAG_RELINQUISH_TASK_IDENTITY;
-import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS;
-import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT;
-import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED;
-import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE_DEPRECATED;
-import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION;
-import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
-import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
-import static android.provider.Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES;
-import static android.provider.Settings.Secure.USER_SETUP_COMPLETE;
-import static android.view.Display.DEFAULT_DISPLAY;
-
-import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE;
-import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK;
-import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_RECENTS;
-import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_TASKS;
-import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_ADD_REMOVE;
-import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK;
-import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_RECENTS;
-import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_TASKS;
-import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
-import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
-import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.ASSISTANT_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.RECENTS_ACTIVITY_TYPE;
-import static com.android.server.am.ActivityRecord.STARTING_WINDOW_SHOWN;
-import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING;
-import static com.android.server.am.ActivityStack.REMOVE_TASK_MODE_MOVING_TO_TOP;
-import static com.android.server.am.ActivityStackSupervisor.PAUSE_IMMEDIATELY;
-import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS;
-
-import static java.lang.Integer.MAX_VALUE;
-
class TaskRecord extends ConfigurationContainer implements TaskWindowContainerListener {
private static final String TAG = TAG_WITH_CLASS_NAME ? "TaskRecord" : TAG_AM;
private static final String TAG_ADD_REMOVE = TAG + POSTFIX_ADD_REMOVE;
@@ -145,6 +154,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
private static final String ATTR_USERID = "user_id";
private static final String ATTR_USER_SETUP_COMPLETE = "user_setup_complete";
private static final String ATTR_EFFECTIVE_UID = "effective_uid";
+ @Deprecated
private static final String ATTR_TASKTYPE = "task_type";
private static final String ATTR_FIRSTACTIVETIME = "first_active_time";
private static final String ATTR_LASTACTIVETIME = "last_active_time";
@@ -258,9 +268,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
/** Current stack. Setter must always be used to update the value. */
private ActivityStack mStack;
- /** Takes on same set of values as ActivityRecord.mActivityType */
- int taskType;
-
/** Takes on same value as first root activity */
boolean isPersistable = false;
int maxRecents;
@@ -270,10 +277,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
* (positive) or back (negative). Absolute value indicates time. */
long mLastTimeMoved = System.currentTimeMillis();
- /** Indication of what to run next when task exits. Use ActivityRecord types.
- * ActivityRecord.APPLICATION_ACTIVITY_TYPE indicates to resume the task below this one in the
- * task stack. */
- private int mTaskToReturnTo = APPLICATION_ACTIVITY_TYPE;
+ /** Indication of what to run next when task exits. */
+ // TODO: Shouldn't be needed if we have things in visual order. I.e. we stop using stacks or
+ // have a stack per standard application type...
+ /*@WindowConfiguration.ActivityType*/
+ private int mTaskToReturnTo = ACTIVITY_TYPE_STANDARD;
/** If original intent did not allow relinquishing task identity, save that information */
private boolean mNeverRelinquishIdentity = true;
@@ -282,10 +290,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
// do not want to delete the stack when the task goes empty.
private boolean mReuseTask = false;
- private Bitmap mLastThumbnail; // Last thumbnail captured for this item.
- private final File mLastThumbnailFile; // File containing last thumbnail.
private final String mFilename;
- private TaskThumbnailInfo mLastThumbnailInfo;
CharSequence lastDescription; // Last description captured for this item.
int mAffiliatedTaskId; // taskId of parent affiliation or self if no parent.
@@ -329,13 +334,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
private TaskWindowContainerController mWindowContainerController;
TaskRecord(ActivityManagerService service, int _taskId, ActivityInfo info, Intent _intent,
- IVoiceInteractionSession _voiceSession, IVoiceInteractor _voiceInteractor, int type) {
+ IVoiceInteractionSession _voiceSession, IVoiceInteractor _voiceInteractor) {
mService = service;
mFilename = String.valueOf(_taskId) + TASK_THUMBNAIL_SUFFIX +
TaskPersister.IMAGE_EXTENSION;
userId = UserHandle.getUserId(info.applicationInfo.uid);
- mLastThumbnailFile = new File(TaskPersister.getUserImagesDir(userId), mFilename);
- mLastThumbnailInfo = new TaskThumbnailInfo();
taskId = _taskId;
mAffiliatedTaskId = _taskId;
voiceSession = _voiceSession;
@@ -344,7 +347,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
mActivities = new ArrayList<>();
mCallingUid = info.applicationInfo.uid;
mCallingPackage = info.packageName;
- taskType = type;
setIntent(_intent, info);
setMinDimensions(info);
touchActiveTime();
@@ -352,13 +354,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
TaskRecord(ActivityManagerService service, int _taskId, ActivityInfo info, Intent _intent,
- TaskDescription _taskDescription, TaskThumbnailInfo thumbnailInfo) {
+ TaskDescription _taskDescription) {
mService = service;
mFilename = String.valueOf(_taskId) + TASK_THUMBNAIL_SUFFIX +
TaskPersister.IMAGE_EXTENSION;
userId = UserHandle.getUserId(info.applicationInfo.uid);
- mLastThumbnailFile = new File(TaskPersister.getUserImagesDir(userId), mFilename);
- mLastThumbnailInfo = thumbnailInfo;
taskId = _taskId;
mAffiliatedTaskId = _taskId;
voiceSession = null;
@@ -375,8 +375,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
maxRecents = Math.min(Math.max(info.maxRecents, 1),
ActivityManager.getMaxAppRecentsLimitStatic());
- taskType = APPLICATION_ACTIVITY_TYPE;
- mTaskToReturnTo = HOME_ACTIVITY_TYPE;
+ mTaskToReturnTo = ACTIVITY_TYPE_HOME;
lastTaskDescription = _taskDescription;
touchActiveTime();
mService.mTaskChangeNotificationController.notifyTaskCreated(_taskId, realActivity);
@@ -385,20 +384,17 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
private TaskRecord(ActivityManagerService service, int _taskId, Intent _intent,
Intent _affinityIntent, String _affinity, String _rootAffinity,
ComponentName _realActivity, ComponentName _origActivity, boolean _rootWasReset,
- boolean _autoRemoveRecents, boolean _askedCompatMode, int _taskType, int _userId,
+ boolean _autoRemoveRecents, boolean _askedCompatMode, int _userId,
int _effectiveUid, String _lastDescription, ArrayList<ActivityRecord> activities,
long _firstActiveTime, long _lastActiveTime, long lastTimeMoved,
boolean neverRelinquishIdentity, TaskDescription _lastTaskDescription,
- TaskThumbnailInfo lastThumbnailInfo, int taskAffiliation, int prevTaskId,
- int nextTaskId, int taskAffiliationColor, int callingUid, String callingPackage,
- int resizeMode, boolean supportsPictureInPicture, boolean privileged,
- boolean _realActivitySuspended, boolean userSetupComplete, int minWidth,
- int minHeight) {
+ int taskAffiliation, int prevTaskId, int nextTaskId, int taskAffiliationColor,
+ int callingUid, String callingPackage, int resizeMode, boolean supportsPictureInPicture,
+ boolean privileged, boolean _realActivitySuspended, boolean userSetupComplete,
+ int minWidth, int minHeight) {
mService = service;
mFilename = String.valueOf(_taskId) + TASK_THUMBNAIL_SUFFIX +
TaskPersister.IMAGE_EXTENSION;
- mLastThumbnailFile = new File(TaskPersister.getUserImagesDir(_userId), mFilename);
- mLastThumbnailInfo = lastThumbnailInfo;
taskId = _taskId;
intent = _intent;
affinityIntent = _affinityIntent;
@@ -413,8 +409,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
isAvailable = true;
autoRemoveRecents = _autoRemoveRecents;
askedCompatMode = _askedCompatMode;
- taskType = _taskType;
- mTaskToReturnTo = HOME_ACTIVITY_TYPE;
+ mTaskToReturnTo = ACTIVITY_TYPE_HOME;
userId = _userId;
mUserSetupComplete = userSetupComplete;
effectiveUid = _effectiveUid;
@@ -450,11 +445,10 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
final Rect bounds = updateOverrideConfigurationFromLaunchBounds();
- final Configuration overrideConfig = getOverrideConfiguration();
setWindowContainerController(new TaskWindowContainerController(taskId, this,
- getStack().getWindowContainerController(), userId, bounds, overrideConfig,
- mResizeMode, mSupportsPictureInPicture, isHomeTask(), onTop, showForAllUsers,
- lastTaskDescription));
+ getStack().getWindowContainerController(), userId, bounds,
+ mResizeMode, mSupportsPictureInPicture, onTop,
+ showForAllUsers, lastTaskDescription));
}
/**
@@ -529,8 +523,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
updateOverrideConfiguration(bounds);
if (getStackId() != FREEFORM_WORKSPACE_STACK_ID) {
// re-restore the task so it can have the proper stack association.
- mService.mStackSupervisor.restoreRecentTaskLocked(this,
- FREEFORM_WORKSPACE_STACK_ID);
+ mService.mStackSupervisor.restoreRecentTaskLocked(this, null);
}
return true;
}
@@ -751,7 +744,8 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
// TODO: Handle incorrect request to move before the actual move, not after.
- supervisor.handleNonResizableTaskIfNeeded(this, preferredStackId, DEFAULT_DISPLAY, stackId);
+ supervisor.handleNonResizableTaskIfNeeded(this, getWindowingModeForStackId(preferredStackId,
+ supervisor.getStack(DOCKED_STACK_ID) != null), DEFAULT_DISPLAY, stackId);
boolean successful = (preferredStackId == stackId);
if (successful && stackId == DOCKED_STACK_ID) {
@@ -878,8 +872,13 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
mResizeMode = info.resizeMode;
mSupportsPictureInPicture = info.supportsPictureInPicture();
- mLockTaskMode = info.lockTaskLaunchMode;
mPrivileged = (info.applicationInfo.privateFlags & PRIVATE_FLAG_PRIVILEGED) != 0;
+ mLockTaskMode = info.lockTaskLaunchMode;
+ if (!mPrivileged && (mLockTaskMode == LOCK_TASK_LAUNCH_MODE_ALWAYS
+ || mLockTaskMode == LOCK_TASK_LAUNCH_MODE_NEVER)) {
+ // Non-priv apps are not allowed to use always or never, fall back to default
+ mLockTaskMode = LOCK_TASK_LAUNCH_MODE_DEFAULT;
+ }
setLockTaskAuth();
}
@@ -907,16 +906,16 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
return this.intent.filterEquals(intent);
}
- void setTaskToReturnTo(int taskToReturnTo) {
- mTaskToReturnTo = (taskToReturnTo == RECENTS_ACTIVITY_TYPE)
- ? HOME_ACTIVITY_TYPE : taskToReturnTo;
+ void setTaskToReturnTo(/*@WindowConfiguration.ActivityType*/ int taskToReturnTo) {
+ mTaskToReturnTo = taskToReturnTo == ACTIVITY_TYPE_RECENTS
+ ? ACTIVITY_TYPE_HOME : taskToReturnTo;
}
void setTaskToReturnTo(ActivityRecord source) {
- if (source.isRecentsActivity()) {
- setTaskToReturnTo(RECENTS_ACTIVITY_TYPE);
- } else if (source.isAssistantActivity()) {
- setTaskToReturnTo(ASSISTANT_ACTIVITY_TYPE);
+ if (source.isActivityTypeRecents()) {
+ setTaskToReturnTo(ACTIVITY_TYPE_RECENTS);
+ } else if (source.isActivityTypeAssistant()) {
+ setTaskToReturnTo(ACTIVITY_TYPE_ASSISTANT);
}
}
@@ -924,6 +923,14 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
return mTaskToReturnTo;
}
+ boolean returnsToHomeTask() {
+ return mTaskToReturnTo == ACTIVITY_TYPE_HOME;
+ }
+
+ boolean returnsToStandardTask() {
+ return mTaskToReturnTo == ACTIVITY_TYPE_STANDARD;
+ }
+
void setPrevAffiliate(TaskRecord prevAffiliate) {
mPrevAffiliate = prevAffiliate;
mPrevAffiliateTaskId = prevAffiliate == null ? INVALID_TASK_ID : prevAffiliate.taskId;
@@ -991,7 +998,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
void removedFromRecents() {
- disposeThumbnail();
closeRecentsChain();
if (inRecents) {
inRecents = false;
@@ -1025,107 +1031,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
setNextAffiliate(null);
}
- /**
- * Sets the last thumbnail with the current task bounds and the system orientation.
- * @return whether the thumbnail was set
- */
- boolean setLastThumbnailLocked(Bitmap thumbnail) {
- int taskWidth = 0;
- int taskHeight = 0;
- if (mBounds != null) {
- // Non-fullscreen tasks
- taskWidth = mBounds.width();
- taskHeight = mBounds.height();
- } else if (mStack != null) {
- // Fullscreen tasks
- final Point displaySize = new Point();
- mStack.getDisplaySize(displaySize);
- taskWidth = displaySize.x;
- taskHeight = displaySize.y;
- } else {
- Slog.e(TAG, "setLastThumbnailLocked() called on Task without stack");
- }
- // We need to provide the current orientation of the display on which this task resides,
- // not the orientation of the task.
- final int orientation = getStack().getDisplay().getConfiguration().orientation;
- return setLastThumbnailLocked(thumbnail, taskWidth, taskHeight, orientation);
- }
-
- /**
- * Sets the last thumbnail with the current task bounds.
- * @return whether the thumbnail was set
- */
- private boolean setLastThumbnailLocked(Bitmap thumbnail, int taskWidth, int taskHeight,
- int screenOrientation) {
- if (mLastThumbnail != thumbnail) {
- mLastThumbnail = thumbnail;
- mLastThumbnailInfo.taskWidth = taskWidth;
- mLastThumbnailInfo.taskHeight = taskHeight;
- mLastThumbnailInfo.screenOrientation = screenOrientation;
- if (thumbnail == null) {
- if (mLastThumbnailFile != null) {
- mLastThumbnailFile.delete();
- }
- } else {
- mService.mRecentTasks.saveImage(thumbnail, mLastThumbnailFile.getAbsolutePath());
- }
- return true;
- }
- return false;
- }
-
- void getLastThumbnail(TaskThumbnail thumbs) {
- thumbs.mainThumbnail = mLastThumbnail;
- thumbs.thumbnailInfo = mLastThumbnailInfo;
- thumbs.thumbnailFileDescriptor = null;
- if (mLastThumbnail == null) {
- thumbs.mainThumbnail = mService.mRecentTasks.getImageFromWriteQueue(
- mLastThumbnailFile.getAbsolutePath());
- }
- // Only load the thumbnail file if we don't have a thumbnail
- if (thumbs.mainThumbnail == null && mLastThumbnailFile.exists()) {
- try {
- thumbs.thumbnailFileDescriptor = ParcelFileDescriptor.open(mLastThumbnailFile,
- ParcelFileDescriptor.MODE_READ_ONLY);
- } catch (IOException e) {
- }
- }
- }
-
- /**
- * Removes in-memory thumbnail data when the max number of in-memory task thumbnails is reached.
- */
- void freeLastThumbnail() {
- mLastThumbnail = null;
- }
-
- /**
- * Removes all associated thumbnail data when a task is removed or pruned from recents.
- */
- void disposeThumbnail() {
- mLastThumbnailInfo.reset();
- mLastThumbnail = null;
- lastDescription = null;
- }
-
/** Returns the intent for the root activity for this task */
Intent getBaseIntent() {
return intent != null ? intent : affinityIntent;
}
- /**
- * @return Whether there are only fullscreen activities in this task.
- */
- boolean containsOnlyFullscreenActivities() {
- for (int i = 0; i < mActivities.size(); i++) {
- final ActivityRecord r = mActivities.get(i);
- if (!r.finishing && !r.fullscreen) {
- return false;
- }
- }
- return true;
- }
-
/** Returns the first non-finishing activity from the root. */
ActivityRecord getRootActivity() {
for (int i = 0; i < mActivities.size(); i++) {
@@ -1139,9 +1049,13 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
ActivityRecord getTopActivity() {
+ return getTopActivity(true /* includeOverlays */);
+ }
+
+ ActivityRecord getTopActivity(boolean includeOverlays) {
for (int i = mActivities.size() - 1; i >= 0; --i) {
final ActivityRecord r = mActivities.get(i);
- if (r.finishing) {
+ if (r.finishing || (!includeOverlays && r.mTaskOverlay)) {
continue;
}
return r;
@@ -1237,6 +1151,16 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
addActivityAtIndex(mActivities.size(), r);
}
+ @Override
+ /*@WindowConfiguration.ActivityType*/
+ public int getActivityType() {
+ final int applicationType = super.getActivityType();
+ if (applicationType != ACTIVITY_TYPE_UNDEFINED || mActivities.isEmpty()) {
+ return applicationType;
+ }
+ return mActivities.get(0).getActivityType();
+ }
+
/**
* Adds an activity {@param r} at the given {@param index}. The activity {@param r} must either
* be in the current task or unparented to any task.
@@ -1257,7 +1181,14 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
// Only set this based on the first activity
if (mActivities.isEmpty()) {
- taskType = r.mActivityType;
+ if (r.getActivityType() == ACTIVITY_TYPE_UNDEFINED) {
+ // Normally non-standard activity type for the activity record will be set when the
+ // object is created, however we delay setting the standard application type until
+ // this point so that the task can set the type for additional activities added in
+ // the else condition below.
+ r.setActivityType(ACTIVITY_TYPE_STANDARD);
+ }
+ setActivityType(r.getActivityType());
isPersistable = r.isPersistable();
mCallingUid = r.launchedFromUid;
mCallingPackage = r.launchedFromPackage;
@@ -1266,7 +1197,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
ActivityManager.getMaxAppRecentsLimitStatic());
} else {
// Otherwise make all added activities match this one.
- r.mActivityType = taskType;
+ r.setActivityType(getActivityType());
}
final int size = mActivities.size();
@@ -1468,19 +1399,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
return null;
}
- TaskThumbnail getTaskThumbnailLocked() {
- if (mStack != null) {
- final ActivityRecord resumedActivity = mStack.mResumedActivity;
- if (resumedActivity != null && resumedActivity.getTask() == this) {
- final Bitmap thumbnail = resumedActivity.screenshotActivityLocked();
- setLastThumbnailLocked(thumbnail);
- }
- }
- final TaskThumbnail taskThumbnail = new TaskThumbnail();
- getLastThumbnail(taskThumbnail);
- return taskThumbnail;
- }
-
void removeTaskActivitiesLocked(boolean pauseImmediately) {
// Just remove the entire task.
performClearTaskAtIndexLocked(0, pauseImmediately);
@@ -1498,16 +1416,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
void setLockTaskAuth() {
- if (!mPrivileged &&
- (mLockTaskMode == LOCK_TASK_LAUNCH_MODE_ALWAYS ||
- mLockTaskMode == LOCK_TASK_LAUNCH_MODE_NEVER)) {
- // Non-priv apps are not allowed to use always or never, fall back to default
- mLockTaskMode = LOCK_TASK_LAUNCH_MODE_DEFAULT;
- }
+ final String pkg = (realActivity != null) ? realActivity.getPackageName() : null;
switch (mLockTaskMode) {
case LOCK_TASK_LAUNCH_MODE_DEFAULT:
- mLockTaskAuth = isLockTaskWhitelistedLocked() ?
- LOCK_TASK_AUTH_WHITELISTED : LOCK_TASK_AUTH_PINNABLE;
+ mLockTaskAuth = mService.mLockTaskController.isPackageWhitelisted(userId, pkg)
+ ? LOCK_TASK_AUTH_WHITELISTED : LOCK_TASK_AUTH_PINNABLE;
break;
case LOCK_TASK_LAUNCH_MODE_NEVER:
@@ -1519,53 +1432,20 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
break;
case LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED:
- mLockTaskAuth = isLockTaskWhitelistedLocked() ?
- LOCK_TASK_AUTH_LAUNCHABLE : LOCK_TASK_AUTH_PINNABLE;
+ mLockTaskAuth = mService.mLockTaskController.isPackageWhitelisted(userId, pkg)
+ ? LOCK_TASK_AUTH_LAUNCHABLE : LOCK_TASK_AUTH_PINNABLE;
break;
}
if (DEBUG_LOCKTASK) Slog.d(TAG_LOCKTASK, "setLockTaskAuth: task=" + this +
" mLockTaskAuth=" + lockTaskAuthToString());
}
- private boolean isLockTaskWhitelistedLocked() {
- String pkg = (realActivity != null) ? realActivity.getPackageName() : null;
- if (pkg == null) {
- return false;
- }
- String[] packages = mService.mLockTaskPackages.get(userId);
- if (packages == null) {
- return false;
- }
- for (int i = packages.length - 1; i >= 0; --i) {
- if (pkg.equals(packages[i])) {
- return true;
- }
- }
- return false;
- }
-
- boolean isHomeTask() {
- return taskType == HOME_ACTIVITY_TYPE;
- }
-
- boolean isRecentsTask() {
- return taskType == RECENTS_ACTIVITY_TYPE;
- }
-
- boolean isAssistantTask() {
- return taskType == ASSISTANT_ACTIVITY_TYPE;
- }
-
- boolean isApplicationTask() {
- return taskType == APPLICATION_ACTIVITY_TYPE;
- }
-
boolean isOverHomeStack() {
- return mTaskToReturnTo == HOME_ACTIVITY_TYPE;
+ return mTaskToReturnTo == ACTIVITY_TYPE_HOME;
}
boolean isOverAssistantStack() {
- return mTaskToReturnTo == ASSISTANT_ACTIVITY_TYPE;
+ return mTaskToReturnTo == ACTIVITY_TYPE_ASSISTANT;
}
private boolean isResizeable(boolean checkSupportsPip) {
@@ -1759,7 +1639,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
out.attribute(null, ATTR_USERID, String.valueOf(userId));
out.attribute(null, ATTR_USER_SETUP_COMPLETE, String.valueOf(mUserSetupComplete));
out.attribute(null, ATTR_EFFECTIVE_UID, String.valueOf(effectiveUid));
- out.attribute(null, ATTR_TASKTYPE, String.valueOf(taskType));
out.attribute(null, ATTR_FIRSTACTIVETIME, String.valueOf(firstActiveTime));
out.attribute(null, ATTR_LASTACTIVETIME, String.valueOf(lastActiveTime));
out.attribute(null, ATTR_LASTTIMEMOVED, String.valueOf(mLastTimeMoved));
@@ -1770,7 +1649,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
if (lastTaskDescription != null) {
lastTaskDescription.saveToXml(out);
}
- mLastThumbnailInfo.saveToXml(out);
out.attribute(null, ATTR_TASK_AFFILIATION_COLOR, String.valueOf(mAffiliatedTaskColor));
out.attribute(null, ATTR_TASK_AFFILIATION, String.valueOf(mAffiliatedTaskId));
out.attribute(null, ATTR_PREV_AFFILIATION, String.valueOf(mPrevAffiliateTaskId));
@@ -1830,7 +1708,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
boolean rootHasReset = false;
boolean autoRemoveRecents = false;
boolean askedCompatMode = false;
- int taskType = ActivityRecord.APPLICATION_ACTIVITY_TYPE;
+ int taskType = 0;
int userId = 0;
boolean userSetupComplete = true;
int effectiveUid = -1;
@@ -1842,7 +1720,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
int taskId = INVALID_TASK_ID;
final int outerDepth = in.getDepth();
TaskDescription taskDescription = new TaskDescription();
- TaskThumbnailInfo thumbnailInfo = new TaskThumbnailInfo();
int taskAffiliation = INVALID_TASK_ID;
int taskAffiliationColor = 0;
int prevTaskId = INVALID_TASK_ID;
@@ -1899,8 +1776,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
lastTimeOnTop = Long.parseLong(attrValue);
} else if (ATTR_NEVERRELINQUISH.equals(attrName)) {
neverRelinquishIdentity = Boolean.parseBoolean(attrValue);
- } else if (attrName.startsWith(TaskThumbnailInfo.ATTR_TASK_THUMBNAILINFO_PREFIX)) {
- thumbnailInfo.restoreFromXml(attrName, attrValue);
} else if (attrName.startsWith(TaskDescription.ATTR_TASKDESCRIPTION_PREFIX)) {
taskDescription.restoreFromXml(attrName, attrValue);
} else if (ATTR_TASK_AFFILIATION.equals(attrName)) {
@@ -1988,7 +1863,7 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
// they are marked as RESIZE_MODE_RESIZEABLE to RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
// since we didn't have that differentiation before version 1 and the system didn't
// resize home activities before then.
- if (taskType == HOME_ACTIVITY_TYPE && resizeMode == RESIZE_MODE_RESIZEABLE) {
+ if (taskType == 1 /* old home type */ && resizeMode == RESIZE_MODE_RESIZEABLE) {
resizeMode = RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION;
}
} else {
@@ -2004,12 +1879,11 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
final TaskRecord task = new TaskRecord(stackSupervisor.mService, taskId, intent,
affinityIntent, affinity, rootAffinity, realActivity, origActivity, rootHasReset,
- autoRemoveRecents, askedCompatMode, taskType, userId, effectiveUid, lastDescription,
+ autoRemoveRecents, askedCompatMode, userId, effectiveUid, lastDescription,
activities, firstActiveTime, lastActiveTime, lastTimeOnTop, neverRelinquishIdentity,
- taskDescription, thumbnailInfo, taskAffiliation, prevTaskId, nextTaskId,
- taskAffiliationColor, callingUid, callingPackage, resizeMode,
- supportsPictureInPicture, privileged, realActivitySuspended, userSetupComplete,
- minWidth, minHeight);
+ taskDescription, taskAffiliation, prevTaskId, nextTaskId, taskAffiliationColor,
+ callingUid, callingPackage, resizeMode, supportsPictureInPicture, privileged,
+ realActivitySuspended, userSetupComplete, minWidth, minHeight);
task.updateOverrideConfiguration(bounds);
for (int activityNdx = activities.size() - 1; activityNdx >=0; --activityNdx) {
@@ -2221,27 +2095,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
}
}
- /**
- * Returns the correct stack to use based on task type and currently set bounds,
- * regardless of the focused stack and current stack association of the task.
- * The task will be moved (and stack focus changed) later if necessary.
- */
- int getLaunchStackId() {
- if (isRecentsTask()) {
- return RECENTS_STACK_ID;
- }
- if (isHomeTask()) {
- return HOME_STACK_ID;
- }
- if (isAssistantTask()) {
- return ASSISTANT_STACK_ID;
- }
- if (mBounds != null) {
- return FREEFORM_WORKSPACE_STACK_ID;
- }
- return FULLSCREEN_WORKSPACE_STACK_ID;
- }
-
/** Returns the bounds that should be used to launch this task. */
private Rect getLaunchBounds() {
if (mStack == null) {
@@ -2312,12 +2165,12 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
pw.print(prefix); pw.print("realActivity=");
pw.println(realActivity.flattenToShortString());
}
- if (autoRemoveRecents || isPersistable || taskType != 0 || mTaskToReturnTo != 0
- || numFullscreen != 0) {
+ if (autoRemoveRecents || isPersistable || !isActivityTypeStandard()
+ || mTaskToReturnTo != ACTIVITY_TYPE_STANDARD || numFullscreen != 0) {
pw.print(prefix); pw.print("autoRemoveRecents="); pw.print(autoRemoveRecents);
pw.print(" isPersistable="); pw.print(isPersistable);
pw.print(" numFullscreen="); pw.print(numFullscreen);
- pw.print(" taskType="); pw.print(taskType);
+ pw.print(" activityType="); pw.print(getActivityType());
pw.print(" mTaskToReturnTo="); pw.println(mTaskToReturnTo);
}
if (rootWasReset || mNeverRelinquishIdentity || mReuseTask
@@ -2353,8 +2206,6 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
pw.print(" inRecents="); pw.print(inRecents);
pw.print(" isAvailable="); pw.println(isAvailable);
}
- pw.print(prefix); pw.print("lastThumbnail="); pw.print(mLastThumbnail);
- pw.print(" lastThumbnailFile="); pw.println(mLastThumbnailFile);
if (lastDescription != null) {
pw.print(prefix); pw.print("lastDescription="); pw.println(lastDescription);
}
@@ -2401,4 +2252,34 @@ class TaskRecord extends ConfigurationContainer implements TaskWindowContainerLi
stringName = sb.toString();
return toString();
}
+
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ super.writeToProto(proto, CONFIGURATION_CONTAINER);
+ proto.write(ID, taskId);
+ for (int i = mActivities.size() - 1; i >= 0; i--) {
+ ActivityRecord activity = mActivities.get(i);
+ activity.writeToProto(proto, ACTIVITIES);
+ }
+ proto.write(STACK_ID, mStack.mStackId);
+ if (mLastNonFullscreenBounds != null) {
+ mLastNonFullscreenBounds.writeToProto(proto, LAST_NON_FULLSCREEN_BOUNDS);
+ }
+ if (realActivity != null) {
+ proto.write(REAL_ACTIVITY, realActivity.flattenToShortString());
+ }
+ if (origActivity != null) {
+ proto.write(ORIG_ACTIVITY, origActivity.flattenToShortString());
+ }
+ proto.write(ACTIVITY_TYPE, getActivityType());
+ proto.write(RETURN_TO_TYPE, mTaskToReturnTo);
+ proto.write(RESIZE_MODE, mResizeMode);
+ proto.write(FULLSCREEN, mFullscreen);
+ if (mBounds != null) {
+ mBounds.writeToProto(proto, BOUNDS);
+ }
+ proto.write(MIN_WIDTH, mMinWidth);
+ proto.write(MIN_HEIGHT, mMinHeight);
+ proto.end(token);
+ }
}
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 29445673dfff..f2e294217999 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -22,6 +22,7 @@ import static android.app.ActivityManager.USER_OP_ERROR_IS_SYSTEM;
import static android.app.ActivityManager.USER_OP_ERROR_RELATED_USERS_CANNOT_STOP;
import static android.app.ActivityManager.USER_OP_IS_CURRENT;
import static android.app.ActivityManager.USER_OP_SUCCESS;
+import static android.os.Process.SHELL_UID;
import static android.os.Process.SYSTEM_UID;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
@@ -30,13 +31,6 @@ import static com.android.server.am.ActivityManagerService.ALLOW_FULL_ONLY;
import static com.android.server.am.ActivityManagerService.ALLOW_NON_FULL;
import static com.android.server.am.ActivityManagerService.ALLOW_NON_FULL_IN_PROFILE;
import static com.android.server.am.ActivityManagerService.MY_PID;
-import static com.android.server.am.ActivityManagerService.REPORT_LOCKED_BOOT_COMPLETE_MSG;
-import static com.android.server.am.ActivityManagerService.REPORT_USER_SWITCH_COMPLETE_MSG;
-import static com.android.server.am.ActivityManagerService.REPORT_USER_SWITCH_MSG;
-import static com.android.server.am.ActivityManagerService.SYSTEM_USER_CURRENT_MSG;
-import static com.android.server.am.ActivityManagerService.SYSTEM_USER_START_MSG;
-import static com.android.server.am.ActivityManagerService.SYSTEM_USER_UNLOCK_MSG;
-import static com.android.server.am.ActivityManagerService.USER_SWITCH_TIMEOUT_MSG;
import static com.android.server.am.UserState.STATE_BOOTING;
import static com.android.server.am.UserState.STATE_RUNNING_LOCKED;
import static com.android.server.am.UserState.STATE_RUNNING_UNLOCKED;
@@ -67,6 +61,7 @@ import android.os.IBinder;
import android.os.IProgressListener;
import android.os.IRemoteCallback;
import android.os.IUserManager;
+import android.os.Message;
import android.os.Process;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
@@ -77,6 +72,7 @@ import android.os.UserManager;
import android.os.UserManagerInternal;
import android.os.storage.IStorageManager;
import android.os.storage.StorageManager;
+import android.text.format.DateUtils;
import android.util.ArraySet;
import android.util.IntArray;
import android.util.Pair;
@@ -92,6 +88,7 @@ import com.android.internal.util.ArrayUtils;
import com.android.internal.util.Preconditions;
import com.android.internal.widget.LockPatternUtils;
import com.android.server.LocalServices;
+import com.android.server.SystemServiceManager;
import com.android.server.pm.UserManagerService;
import com.android.server.wm.WindowManagerService;
@@ -107,7 +104,7 @@ import java.util.concurrent.atomic.AtomicInteger;
/**
* Helper class for {@link ActivityManagerService} responsible for multi-user functionality.
*/
-class UserController {
+class UserController implements Handler.Callback {
private static final String TAG = TAG_WITH_CLASS_NAME ? "UserController" : TAG_AM;
// Maximum number of users we allow to be running at a time.
@@ -115,11 +112,34 @@ class UserController {
// Amount of time we wait for observers to handle a user switch before
// giving up on them and unfreezing the screen.
- static final int USER_SWITCH_TIMEOUT = 3 * 1000;
+ static final int USER_SWITCH_TIMEOUT_MS = 3 * 1000;
+
+ // ActivityManager thread message constants
+ static final int REPORT_USER_SWITCH_MSG = 10;
+ static final int CONTINUE_USER_SWITCH_MSG = 20;
+ static final int USER_SWITCH_TIMEOUT_MSG = 30;
+ static final int START_PROFILES_MSG = 40;
+ static final int SYSTEM_USER_START_MSG = 50;
+ static final int SYSTEM_USER_CURRENT_MSG = 60;
+ static final int FOREGROUND_PROFILE_CHANGED_MSG = 70;
+ static final int REPORT_USER_SWITCH_COMPLETE_MSG = 80;
+ static final int USER_SWITCH_CALLBACKS_TIMEOUT_MSG = 90;
+ static final int SYSTEM_USER_UNLOCK_MSG = 100;
+ static final int REPORT_LOCKED_BOOT_COMPLETE_MSG = 110;
+ static final int START_USER_SWITCH_FG_MSG = 120;
+
+ // UI thread message constants
+ static final int START_USER_SWITCH_UI_MSG = 1000;
+
+ // If a callback wasn't called within USER_SWITCH_CALLBACKS_TIMEOUT_MS after
+ // USER_SWITCH_TIMEOUT_MS, an error is reported. Usually it indicates a problem in the observer
+ // when it never calls back.
+ private static final int USER_SWITCH_CALLBACKS_TIMEOUT_MS = 5 * 1000;
private final Object mLock;
private final Injector mInjector;
private final Handler mHandler;
+ private final Handler mUiHandler;
// Holds the current foreground user's id. Use mLock when updating
@GuardedBy("mLock")
@@ -171,6 +191,12 @@ class UserController {
@GuardedBy("mLock")
private volatile ArraySet<String> mCurWaitingUserSwitchCallbacks;
+ /**
+ * Callbacks that are still active after {@link #USER_SWITCH_TIMEOUT_MS}
+ */
+ @GuardedBy("mLock")
+ private ArraySet<String> mTimeoutUserSwitchCallbacks;
+
private final LockPatternUtils mLockPatternUtils;
UserController(ActivityManagerService service) {
@@ -181,7 +207,8 @@ class UserController {
UserController(Injector injector) {
mInjector = injector;
mLock = injector.getLock();
- mHandler = injector.getHandler();
+ mHandler = mInjector.getHandler(this);
+ mUiHandler = mInjector.getUiHandler(this);
// User 0 is the first and only user that runs at boot.
final UserState uss = new UserState(UserHandle.SYSTEM);
mStartedUsers.put(UserHandle.USER_SYSTEM, uss);
@@ -487,7 +514,7 @@ class UserController {
if (userId < 0 || userId == UserHandle.USER_SYSTEM) {
throw new IllegalArgumentException("Can't stop system user " + userId);
}
- mInjector.enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, userId);
+ enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, userId);
synchronized (mLock) {
return stopUsersLocked(userId, force, callback);
}
@@ -623,7 +650,7 @@ class UserController {
mInjector.batteryStatsServiceNoteEvent(
BatteryStats.HistoryItem.EVENT_USER_RUNNING_FINISH,
Integer.toString(userId), userId);
- mInjector.systemServiceManagerStopUser(userId);
+ mInjector.getSystemServiceManager().stopUser(userId);
synchronized (mLock) {
mInjector.broadcastIntentLocked(shutdownIntent,
@@ -753,6 +780,13 @@ class UserController {
}
}
+ void scheduleStartProfilesLocked() {
+ if (!mHandler.hasMessages(START_PROFILES_MSG)) {
+ mHandler.sendMessageDelayed(mHandler.obtainMessage(START_PROFILES_MSG),
+ DateUtils.SECOND_IN_MILLIS);
+ }
+ }
+
void startProfilesLocked() {
if (DEBUG_MU) Slog.i(TAG, "startProfilesLocked");
List<UserInfo> profiles = mInjector.getUserManager().getProfiles(
@@ -924,7 +958,7 @@ class UserController {
mHandler.sendMessage(mHandler.obtainMessage(REPORT_USER_SWITCH_MSG,
oldUserId, userId, uss));
mHandler.sendMessageDelayed(mHandler.obtainMessage(USER_SWITCH_TIMEOUT_MSG,
- oldUserId, userId, uss), USER_SWITCH_TIMEOUT);
+ oldUserId, userId, uss), USER_SWITCH_TIMEOUT_MS);
}
if (needStart) {
@@ -1068,6 +1102,50 @@ class UserController {
return true;
}
+ boolean switchUser(final int targetUserId) {
+ enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, targetUserId);
+ int currentUserId;
+ UserInfo targetUserInfo;
+ synchronized (mLock) {
+ currentUserId = getCurrentUserIdLocked();
+ targetUserInfo = getUserInfo(targetUserId);
+ if (targetUserId == currentUserId) {
+ Slog.i(TAG, "user #" + targetUserId + " is already the current user");
+ return true;
+ }
+ if (targetUserInfo == null) {
+ Slog.w(TAG, "No user info for user #" + targetUserId);
+ return false;
+ }
+ if (!targetUserInfo.isDemo() && UserManager.isDeviceInDemoMode(mInjector.getContext())) {
+ Slog.w(TAG, "Cannot switch to non-demo user #" + targetUserId
+ + " when device is in demo mode");
+ return false;
+ }
+ if (!targetUserInfo.supportsSwitchTo()) {
+ Slog.w(TAG, "Cannot switch to User #" + targetUserId + ": not supported");
+ return false;
+ }
+ if (targetUserInfo.isManagedProfile()) {
+ Slog.w(TAG, "Cannot switch to User #" + targetUserId + ": not a full user");
+ return false;
+ }
+ setTargetUserIdLocked(targetUserId);
+ }
+ if (mUserSwitchUiEnabled) {
+ UserInfo currentUserInfo = getUserInfo(currentUserId);
+ Pair<UserInfo, UserInfo> userNames = new Pair<>(currentUserInfo, targetUserInfo);
+ mUiHandler.removeMessages(START_USER_SWITCH_UI_MSG);
+ mUiHandler.sendMessage(mHandler.obtainMessage(
+ START_USER_SWITCH_UI_MSG, userNames));
+ } else {
+ mHandler.removeMessages(START_USER_SWITCH_FG_MSG);
+ mHandler.sendMessage(mHandler.obtainMessage(
+ START_USER_SWITCH_FG_MSG, targetUserId, 0));
+ }
+ return true;
+ }
+
void showUserSwitchDialog(Pair<UserInfo, UserInfo> fromToUserPair) {
// The dialog will show and then initiate the user switch by calling startUserInForeground
mInjector.showUserSwitchingDialog(fromToUserPair.first, fromToUserPair.second);
@@ -1130,8 +1208,23 @@ class UserController {
void timeoutUserSwitch(UserState uss, int oldUserId, int newUserId) {
synchronized (mLock) {
- Slog.wtf(TAG, "User switch timeout: from " + oldUserId + " to " + newUserId);
+ Slog.e(TAG, "User switch timeout: from " + oldUserId + " to " + newUserId);
+ mTimeoutUserSwitchCallbacks = mCurWaitingUserSwitchCallbacks;
+ mHandler.removeMessages(USER_SWITCH_CALLBACKS_TIMEOUT_MSG);
sendContinueUserSwitchLocked(uss, oldUserId, newUserId);
+ // Report observers that never called back (USER_SWITCH_CALLBACKS_TIMEOUT)
+ mHandler.sendMessageDelayed(mHandler.obtainMessage(USER_SWITCH_CALLBACKS_TIMEOUT_MSG,
+ oldUserId, newUserId), USER_SWITCH_CALLBACKS_TIMEOUT_MS);
+ }
+ }
+
+ void timeoutUserSwitchCallbacks(int oldUserId, int newUserId) {
+ synchronized (mLock) {
+ if (mTimeoutUserSwitchCallbacks != null && !mTimeoutUserSwitchCallbacks.isEmpty()) {
+ Slog.wtf(TAG, "User switch timeout: from " + oldUserId + " to " + newUserId
+ + ". Observers that didn't respond: " + mTimeoutUserSwitchCallbacks);
+ mTimeoutUserSwitchCallbacks = null;
+ }
}
}
@@ -1158,18 +1251,16 @@ class UserController {
public void sendResult(Bundle data) throws RemoteException {
synchronized (mLock) {
long delay = SystemClock.elapsedRealtime() - dispatchStartedTime;
- if (delay > USER_SWITCH_TIMEOUT) {
- Slog.wtf(TAG, "User switch timeout: observer " + name
+ if (delay > USER_SWITCH_TIMEOUT_MS) {
+ Slog.e(TAG, "User switch timeout: observer " + name
+ " sent result after " + delay + " ms");
}
- // Early return if this session is no longer valid
- if (curWaitingUserSwitchCallbacks
- != mCurWaitingUserSwitchCallbacks) {
- return;
- }
curWaitingUserSwitchCallbacks.remove(name);
- // Continue switching if all callbacks have been notified
- if (waitingCallbacksCount.decrementAndGet() == 0) {
+ // Continue switching if all callbacks have been notified and
+ // user switching session is still valid
+ if (waitingCallbacksCount.decrementAndGet() == 0
+ && (curWaitingUserSwitchCallbacks
+ == mCurWaitingUserSwitchCallbacks)) {
sendContinueUserSwitchLocked(uss, oldUserId, newUserId);
}
}
@@ -1190,7 +1281,7 @@ class UserController {
void sendContinueUserSwitchLocked(UserState uss, int oldUserId, int newUserId) {
mCurWaitingUserSwitchCallbacks = null;
mHandler.removeMessages(USER_SWITCH_TIMEOUT_MSG);
- mHandler.sendMessage(mHandler.obtainMessage(ActivityManagerService.CONTINUE_USER_SWITCH_MSG,
+ mHandler.sendMessage(mHandler.obtainMessage(CONTINUE_USER_SWITCH_MSG,
oldUserId, newUserId, uss));
}
@@ -1370,6 +1461,11 @@ class UserController {
mUserSwitchObservers.register(observer, name);
}
+ void sendForegroundProfileChanged(int userId) {
+ mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG);
+ mHandler.obtainMessage(FOREGROUND_PROFILE_CHANGED_MSG, userId, 0).sendToTarget();
+ }
+
void unregisterUserSwitchObserver(IUserSwitchObserver observer) {
mUserSwitchObservers.unregister(observer);
}
@@ -1550,6 +1646,15 @@ class UserController {
return mInjector.getUserManager().exists(userId);
}
+ void enforceShellRestriction(String restriction, int userHandle) {
+ if (Binder.getCallingUid() == SHELL_UID) {
+ if (userHandle < 0 || hasUserRestriction(restriction, userHandle)) {
+ throw new SecurityException("Shell does not have permission to access user "
+ + userHandle);
+ }
+ }
+ }
+
boolean hasUserRestriction(String restriction, int userId) {
return mInjector.getUserManager().hasUserRestriction(restriction, userId);
}
@@ -1642,6 +1747,72 @@ class UserController {
}
}
+ public boolean handleMessage(Message msg) {
+ switch (msg.what) {
+ case START_USER_SWITCH_FG_MSG:
+ startUserInForeground(msg.arg1);
+ break;
+ case REPORT_USER_SWITCH_MSG:
+ dispatchUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2);
+ break;
+ case CONTINUE_USER_SWITCH_MSG:
+ continueUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2);
+ break;
+ case USER_SWITCH_TIMEOUT_MSG:
+ timeoutUserSwitch((UserState) msg.obj, msg.arg1, msg.arg2);
+ break;
+ case USER_SWITCH_CALLBACKS_TIMEOUT_MSG:
+ timeoutUserSwitchCallbacks(msg.arg1, msg.arg2);
+ break;
+ case START_PROFILES_MSG:
+ synchronized (mLock) {
+ startProfilesLocked();
+ }
+ break;
+ case SYSTEM_USER_START_MSG:
+ mInjector.batteryStatsServiceNoteEvent(
+ BatteryStats.HistoryItem.EVENT_USER_RUNNING_START,
+ Integer.toString(msg.arg1), msg.arg1);
+ mInjector.getSystemServiceManager().startUser(msg.arg1);
+ break;
+ case SYSTEM_USER_UNLOCK_MSG:
+ final int userId = msg.arg1;
+ mInjector.getSystemServiceManager().unlockUser(userId);
+ synchronized (mLock) {
+ mInjector.loadUserRecentsLocked(userId);
+ }
+ if (userId == UserHandle.USER_SYSTEM) {
+ mInjector.startPersistentApps(PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+ }
+ mInjector.installEncryptionUnawareProviders(userId);
+ finishUserUnlocked((UserState) msg.obj);
+ break;
+ case SYSTEM_USER_CURRENT_MSG:
+ mInjector.batteryStatsServiceNoteEvent(
+ BatteryStats.HistoryItem.EVENT_USER_FOREGROUND_FINISH,
+ Integer.toString(msg.arg2), msg.arg2);
+ mInjector.batteryStatsServiceNoteEvent(
+ BatteryStats.HistoryItem.EVENT_USER_FOREGROUND_START,
+ Integer.toString(msg.arg1), msg.arg1);
+
+ mInjector.getSystemServiceManager().switchUser(msg.arg1);
+ break;
+ case FOREGROUND_PROFILE_CHANGED_MSG:
+ dispatchForegroundProfileChanged(msg.arg1);
+ break;
+ case REPORT_USER_SWITCH_COMPLETE_MSG:
+ dispatchUserSwitchComplete(msg.arg1);
+ break;
+ case REPORT_LOCKED_BOOT_COMPLETE_MSG:
+ dispatchLockedBootComplete(msg.arg1);
+ break;
+ case START_USER_SWITCH_UI_MSG:
+ showUserSwitchDialog((Pair<UserInfo, UserInfo>) msg.obj);
+ break;
+ }
+ return false;
+ }
+
@VisibleForTesting
static class Injector {
private final ActivityManagerService mService;
@@ -1656,8 +1827,12 @@ class UserController {
return mService;
}
- protected Handler getHandler() {
- return mService.mHandler;
+ protected Handler getHandler(Handler.Callback callback) {
+ return new Handler(mService.mHandlerThread.getLooper(), callback);
+ }
+
+ protected Handler getUiHandler(Handler.Callback callback) {
+ return new Handler(mService.mUiHandler.getLooper(), callback);
}
protected Context getContext() {
@@ -1715,14 +1890,14 @@ class UserController {
mService.mBatteryStatsService.noteEvent(code, name, uid);
}
- void systemServiceManagerStopUser(int userId) {
- mService.mSystemServiceManager.stopUser(userId);
- }
-
boolean isRuntimeRestarted() {
return mService.mSystemServiceManager.isRuntimeRestarted();
}
+ SystemServiceManager getSystemServiceManager() {
+ return mService.mSystemServiceManager;
+ }
+
boolean isFirstBootOrUpgrade() {
IPackageManager pm = AppGlobals.getPackageManager();
try {
@@ -1763,8 +1938,16 @@ class UserController {
mService.clearBroadcastQueueForUserLocked(userId);
}
- void enforceShellRestriction(String restriction, int userId) {
- mService.enforceShellRestriction(restriction, userId);
+ void loadUserRecentsLocked(int userId) {
+ mService.mRecentTasks.loadUserRecentsLocked(userId);
+ }
+
+ void startPersistentApps(int matchFlags) {
+ mService.startPersistentApps(matchFlags);
+ }
+
+ void installEncryptionUnawareProviders(int userId) {
+ mService.installEncryptionUnawareProviders(userId);
}
void showUserSwitchingDialog(UserInfo fromUser, UserInfo toUser) {
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 503810683fdf..11d0470ee8e5 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -16,6 +16,11 @@
package com.android.server.audio;
+import com.android.server.audio.AudioServiceEvents.ForceUseEvent;
+import com.android.server.audio.AudioServiceEvents.PhoneStateEvent;
+import com.android.server.audio.AudioServiceEvents.VolumeEvent;
+import com.android.server.audio.AudioServiceEvents.WiredDevConnectEvent;
+
import static android.Manifest.permission.REMOTE_AUDIO_PLAYBACK;
import static android.media.AudioManager.RINGER_MODE_NORMAL;
import static android.media.AudioManager.RINGER_MODE_SILENT;
@@ -796,12 +801,23 @@ public class AudioService extends IAudioService.Stub
public void systemReady() {
sendMsg(mAudioHandler, MSG_SYSTEM_READY, SENDMSG_QUEUE,
0, 0, null, 0);
- try {
- ActivityManager.getService().registerUidObserver(mUidObserver,
- ActivityManager.UID_OBSERVER_CACHED | ActivityManager.UID_OBSERVER_GONE,
- ActivityManager.PROCESS_STATE_UNKNOWN, null);
- } catch (RemoteException e) {
- // ignored; both services live in system_server
+ if (false) {
+ // This is turned off for now, because it is racy and thus causes apps to break.
+ // Currently banning a uid means that if an app tries to start playing an audio
+ // stream, that will be preventing, and unbanning it will not allow that stream
+ // to resume. However these changes in uid state are racy with what the app is doing,
+ // so that after taking a process out of the cached state we can't guarantee that
+ // we will unban the uid before the app actually tries to start playing audio.
+ // (To do that, the activity manager would need to wait until it knows for sure
+ // that the ban has been removed, before telling the app to do whatever it is
+ // supposed to do that caused it to go out of the cached state.)
+ try {
+ ActivityManager.getService().registerUidObserver(mUidObserver,
+ ActivityManager.UID_OBSERVER_CACHED | ActivityManager.UID_OBSERVER_GONE,
+ ActivityManager.PROCESS_STATE_UNKNOWN, null);
+ } catch (RemoteException e) {
+ // ignored; both services live in system_server
+ }
}
}
@@ -1310,6 +1326,9 @@ public class AudioService extends IAudioService.Stub
+ ", flags=" + flags + ", caller=" + caller
+ ", volControlStream=" + mVolumeControlStream
+ ", userSelect=" + mUserSelectedVolumeControlStream);
+ mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_ADJUST_SUGG_VOL, suggestedStreamType,
+ direction/*val1*/, flags/*val2*/, new StringBuilder(callingPackage)
+ .append("/").append(caller).append(" uid:").append(uid).toString()));
final int streamType;
if (mUserSelectedVolumeControlStream) { // implies mVolumeControlStream != -1
streamType = mVolumeControlStream;
@@ -1359,6 +1378,8 @@ public class AudioService extends IAudioService.Stub
+ "CHANGE_ACCESSIBILITY_VOLUME / callingPackage=" + callingPackage);
return;
}
+ mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_ADJUST_STREAM_VOL, streamType,
+ direction/*val1*/, flags/*val2*/, callingPackage));
adjustStreamVolume(streamType, direction, flags, callingPackage, callingPackage,
Binder.getCallingUid());
}
@@ -1675,6 +1696,8 @@ public class AudioService extends IAudioService.Stub
+ " CHANGE_ACCESSIBILITY_VOLUME callingPackage=" + callingPackage);
return;
}
+ mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_SET_STREAM_VOL, streamType,
+ index/*val1*/, flags/*val2*/, callingPackage));
setStreamVolume(streamType, index, flags, callingPackage, callingPackage,
Binder.getCallingUid());
}
@@ -4017,7 +4040,7 @@ public class AudioService extends IAudioService.Stub
/*
* A class just for packaging up a set of connection parameters.
*/
- private class WiredDeviceConnectionState {
+ class WiredDeviceConnectionState {
public final int mType;
public final int mState;
public final String mAddress;
@@ -6111,12 +6134,12 @@ public class AudioService extends IAudioService.Stub
private int mSafeMediaVolumeIndex;
// mSafeUsbMediaVolumeIndex is used for USB Headsets and is the music volume UI index
// corresponding to a gain of -30 dBFS in audio flinger mixer.
- // We remove -15 dBs from the theoretical -15dB to account for the EQ boost when bands are set
- // to max gain.
+ // We remove -22 dBs from the theoretical -15dB to account for the EQ + bass boost
+ // amplification when both effects are on with all band gains at maximum.
// This level corresponds to a loudness of 85 dB SPL for the warning to be displayed when
// the headset is compliant to EN 60950 with a max loudness of 100dB SPL.
private int mSafeUsbMediaVolumeIndex;
- private static final float SAFE_VOLUME_GAIN_DBFS = -30.0f;
+ private static final float SAFE_VOLUME_GAIN_DBFS = -37.0f;
// mSafeMediaVolumeDevices lists the devices for which safe media volume is enforced,
private final int mSafeMediaVolumeDevices = AudioSystem.DEVICE_OUT_WIRED_HEADSET |
AudioSystem.DEVICE_OUT_WIRED_HEADPHONE |
@@ -6372,63 +6395,7 @@ public class AudioService extends IAudioService.Stub
final int LOG_NB_EVENTS_PHONE_STATE = 20;
final int LOG_NB_EVENTS_WIRED_DEV_CONNECTION = 30;
final int LOG_NB_EVENTS_FORCE_USE = 20;
-
- final private static class PhoneStateEvent extends AudioEventLogger.Event {
- final String mPackage;
- final int mPid;
- final int mMode;
-
- PhoneStateEvent(String callingPackage, int pid, int mode) {
- mPackage = callingPackage;
- mPid = pid;
- mMode = mode;
- }
-
- @Override
- public String eventToString() {
- return new StringBuilder("setMode(").append(AudioSystem.modeToString(mMode))
- .append(") from package=").append(mPackage)
- .append(" pid=").append(mPid).toString();
- }
- }
-
- final private static class WiredDevConnectEvent extends AudioEventLogger.Event {
- final WiredDeviceConnectionState mState;
-
- WiredDevConnectEvent(WiredDeviceConnectionState state) {
- mState = state;
- }
-
- @Override
- public String eventToString() {
- return new StringBuilder("setWiredDeviceConnectionState(")
- .append(" type:").append(Integer.toHexString(mState.mType))
- .append(" state:").append(AudioSystem.deviceStateToString(mState.mState))
- .append(" addr:").append(mState.mAddress)
- .append(" name:").append(mState.mName)
- .append(") from ").append(mState.mCaller).toString();
- }
- }
-
- final private static class ForceUseEvent extends AudioEventLogger.Event {
- final int mUsage;
- final int mConfig;
- final String mReason;
-
- ForceUseEvent(int usage, int config, String reason) {
- mUsage = usage;
- mConfig = config;
- mReason = reason;
- }
-
- @Override
- public String eventToString() {
- return new StringBuilder("setForceUse(")
- .append(AudioSystem.forceUseUsageToString(mUsage))
- .append(", ").append(AudioSystem.forceUseConfigToString(mConfig))
- .append(") due to ").append(mReason).toString();
- }
- }
+ final int LOG_NB_EVENTS_VOLUME = 40;
final private AudioEventLogger mModeLogger = new AudioEventLogger(LOG_NB_EVENTS_PHONE_STATE,
"phone state (logged after successfull call to AudioSystem.setPhoneState(int))");
@@ -6442,6 +6409,9 @@ public class AudioService extends IAudioService.Stub
LOG_NB_EVENTS_FORCE_USE,
"force use (logged before setForceUse() is executed)");
+ final private AudioEventLogger mVolumeLogger = new AudioEventLogger(LOG_NB_EVENTS_VOLUME,
+ "volume changes (logged when command received by AudioService)");
+
private static final String[] RINGER_MODE_NAMES = new String[] {
"SILENT",
"VIBRATE",
@@ -6513,12 +6483,15 @@ public class AudioService extends IAudioService.Stub
mRecordMonitor.dump(pw);
+ pw.println("\n");
pw.println("\nEvent logs:");
mModeLogger.dump(pw);
pw.println("\n");
mWiredDevLogger.dump(pw);
pw.println("\n");
mForceUseLogger.dump(pw);
+ pw.println("\n");
+ mVolumeLogger.dump(pw);
}
private static String safeMediaVolumeStateToString(Integer state) {
@@ -7011,6 +6984,10 @@ public class AudioService extends IAudioService.Stub
mPlaybackMonitor.playerEvent(piid, event, Binder.getCallingUid());
}
+ public void playerHasOpPlayAudio(int piid, boolean hasOpPlayAudio) {
+ mPlaybackMonitor.playerHasOpPlayAudio(piid, hasOpPlayAudio, Binder.getCallingUid());
+ }
+
public void releasePlayer(int piid) {
mPlaybackMonitor.releasePlayer(piid, Binder.getCallingUid());
}
diff --git a/services/core/java/com/android/server/audio/AudioServiceEvents.java b/services/core/java/com/android/server/audio/AudioServiceEvents.java
new file mode 100644
index 000000000000..634c8c27a3cc
--- /dev/null
+++ b/services/core/java/com/android/server/audio/AudioServiceEvents.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2017 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.audio;
+
+import android.media.AudioManager;
+import android.media.AudioSystem;
+
+import com.android.server.audio.AudioService.WiredDeviceConnectionState;
+
+
+public class AudioServiceEvents {
+
+ final static class PhoneStateEvent extends AudioEventLogger.Event {
+ final String mPackage;
+ final int mPid;
+ final int mMode;
+
+ PhoneStateEvent(String callingPackage, int pid, int mode) {
+ mPackage = callingPackage;
+ mPid = pid;
+ mMode = mode;
+ }
+
+ @Override
+ public String eventToString() {
+ return new StringBuilder("setMode(").append(AudioSystem.modeToString(mMode))
+ .append(") from package=").append(mPackage)
+ .append(" pid=").append(mPid).toString();
+ }
+ }
+
+ final static class WiredDevConnectEvent extends AudioEventLogger.Event {
+ final WiredDeviceConnectionState mState;
+
+ WiredDevConnectEvent(WiredDeviceConnectionState state) {
+ mState = state;
+ }
+
+ @Override
+ public String eventToString() {
+ return new StringBuilder("setWiredDeviceConnectionState(")
+ .append(" type:").append(Integer.toHexString(mState.mType))
+ .append(" state:").append(AudioSystem.deviceStateToString(mState.mState))
+ .append(" addr:").append(mState.mAddress)
+ .append(" name:").append(mState.mName)
+ .append(") from ").append(mState.mCaller).toString();
+ }
+ }
+
+ final static class ForceUseEvent extends AudioEventLogger.Event {
+ final int mUsage;
+ final int mConfig;
+ final String mReason;
+
+ ForceUseEvent(int usage, int config, String reason) {
+ mUsage = usage;
+ mConfig = config;
+ mReason = reason;
+ }
+
+ @Override
+ public String eventToString() {
+ return new StringBuilder("setForceUse(")
+ .append(AudioSystem.forceUseUsageToString(mUsage))
+ .append(", ").append(AudioSystem.forceUseConfigToString(mConfig))
+ .append(") due to ").append(mReason).toString();
+ }
+ }
+
+ final static class VolumeEvent extends AudioEventLogger.Event {
+ final static int VOL_ADJUST_SUGG_VOL = 0;
+ final static int VOL_ADJUST_STREAM_VOL = 1;
+ final static int VOL_SET_STREAM_VOL = 2;
+
+ final int mOp;
+ final int mStream;
+ final int mVal1;
+ final int mVal2;
+ final String mCaller;
+
+ VolumeEvent(int op, int stream, int val1, int val2, String caller) {
+ mOp = op;
+ mStream = stream;
+ mVal1 = val1;
+ mVal2 = val2;
+ mCaller = caller;
+ }
+
+ @Override
+ public String eventToString() {
+ switch (mOp) {
+ case VOL_ADJUST_SUGG_VOL:
+ return new StringBuilder("adjustSuggestedStreamVolume(sugg:")
+ .append(AudioSystem.streamToString(mStream))
+ .append(" dir:").append(AudioManager.adjustToString(mVal1))
+ .append(" flags:0x").append(Integer.toHexString(mVal2))
+ .append(") from ").append(mCaller)
+ .toString();
+ case VOL_ADJUST_STREAM_VOL:
+ return new StringBuilder("adjustStreamVolume(stream:")
+ .append(AudioSystem.streamToString(mStream))
+ .append(" dir:").append(AudioManager.adjustToString(mVal1))
+ .append(" flags:0x").append(Integer.toHexString(mVal2))
+ .append(") from ").append(mCaller)
+ .toString();
+ case VOL_SET_STREAM_VOL:
+ return new StringBuilder("setStreamVolume(stream:")
+ .append(AudioSystem.streamToString(mStream))
+ .append(" index:").append(mVal1)
+ .append(" flags:0x").append(Integer.toHexString(mVal2))
+ .append(") from ").append(mCaller)
+ .toString();
+ default: return new StringBuilder("FIXME invalid op:").append(mOp).toString();
+ }
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
index c075cdceb685..d1a37af5e7a8 100644
--- a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
+++ b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
@@ -171,7 +171,7 @@ public final class PlaybackActivityMonitor
}
}
if (change) {
- dispatchPlaybackChange();
+ dispatchPlaybackChange(false);
}
}
@@ -210,10 +210,15 @@ public final class PlaybackActivityMonitor
}
}
if (change) {
- dispatchPlaybackChange();
+ dispatchPlaybackChange(event == AudioPlaybackConfiguration.PLAYER_STATE_RELEASED);
}
}
+ public void playerHasOpPlayAudio(int piid, boolean hasOpPlayAudio, int binderUid) {
+ // no check on UID yet because this is only for logging at the moment
+ mEventLogger.log(new PlayerOpPlayAudioEvent(piid, hasOpPlayAudio, binderUid));
+ }
+
public void releasePlayer(int piid, int binderUid) {
if (DEBUG) { Log.v(TAG, "releasePlayer() for piid=" + piid); }
synchronized(mPlayerLock) {
@@ -223,6 +228,7 @@ public final class PlaybackActivityMonitor
"releasing player piid:" + piid));
mPlayers.remove(new Integer(piid));
mDuckingManager.removeReleased(apc);
+ apc.handleStateEvent(AudioPlaybackConfiguration.PLAYER_STATE_RELEASED);
}
}
}
@@ -238,6 +244,14 @@ public final class PlaybackActivityMonitor
pw.println("\nPlaybackActivityMonitor dump time: "
+ DateFormat.getTimeInstance().format(new Date()));
synchronized(mPlayerLock) {
+ pw.println("\n playback listeners:");
+ synchronized(mClients) {
+ for (PlayMonitorClient pmc : mClients) {
+ pw.print(" " + (pmc.mIsPrivileged ? "(S)" : "(P)")
+ + pmc.toString());
+ }
+ }
+ pw.println("\n");
// all players
pw.println("\n players:");
final List<Integer> piidIntList = new ArrayList<Integer>(mPlayers.keySet());
@@ -262,7 +276,7 @@ public final class PlaybackActivityMonitor
for (int uid : mBannedUids) {
pw.print(" " + uid);
}
- pw.println();
+ pw.println("\n");
// log
mEventLogger.dump(pw);
}
@@ -287,7 +301,11 @@ public final class PlaybackActivityMonitor
return true;
}
- private void dispatchPlaybackChange() {
+ /**
+ * Sends new list after update of playback configurations
+ * @param iplayerReleased indicates if the change was due to a player being released
+ */
+ private void dispatchPlaybackChange(boolean iplayerReleased) {
synchronized (mClients) {
// typical use case, nobody is listening, don't do any work
if (mClients.isEmpty()) {
@@ -318,9 +336,12 @@ public final class PlaybackActivityMonitor
// do not spam the logs if there are problems communicating with this client
if (pmc.mErrorCount < PlayMonitorClient.MAX_ERRORS) {
if (pmc.mIsPrivileged) {
- pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsSystem);
+ pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsSystem,
+ iplayerReleased);
} else {
- pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsPublic);
+ // non-system clients don't have the control interface IPlayer, so
+ // they don't need to flush commands when a player was released
+ pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsPublic, false);
}
}
} catch (RemoteException e) {
@@ -702,8 +723,28 @@ public final class PlaybackActivityMonitor
@Override
public String eventToString() {
- return new String("player piid:" + mPlayerIId + " state:"
- + AudioPlaybackConfiguration.toLogFriendlyPlayerState(mState));
+ return new StringBuilder("player piid:").append(mPlayerIId).append(" state:")
+ .append(AudioPlaybackConfiguration.toLogFriendlyPlayerState(mState)).toString();
+ }
+ }
+
+ private final static class PlayerOpPlayAudioEvent extends AudioEventLogger.Event {
+ // only keeping the player interface ID as it uniquely identifies the player in the event
+ final int mPlayerIId;
+ final boolean mHasOp;
+ final int mUid;
+
+ PlayerOpPlayAudioEvent(int piid, boolean hasOp, int uid) {
+ mPlayerIId = piid;
+ mHasOp = hasOp;
+ mUid = uid;
+ }
+
+ @Override
+ public String eventToString() {
+ return new StringBuilder("player piid:").append(mPlayerIId)
+ .append(" has OP_PLAY_AUDIO:").append(mHasOp)
+ .append(" in uid:").append(mUid).toString();
}
}
diff --git a/services/core/java/com/android/server/broadcastradio/Tuner.java b/services/core/java/com/android/server/broadcastradio/Tuner.java
index 06a5af5f482e..e6ae320cf38d 100644
--- a/services/core/java/com/android/server/broadcastradio/Tuner.java
+++ b/services/core/java/com/android/server/broadcastradio/Tuner.java
@@ -77,6 +77,8 @@ class Tuner extends ITuner.Stub {
@NonNull RadioManager.BandConfig config);
private native RadioManager.BandConfig nativeGetConfiguration(long nativeContext, int region);
+ private native void nativeSetMuted(long nativeContext, boolean mute);
+
private native void nativeStep(long nativeContext, boolean directionDown, boolean skipSubChannel);
private native void nativeScan(long nativeContext, boolean directionDown, boolean skipSubChannel);
private native void nativeTune(long nativeContext, @NonNull ProgramSelector selector);
@@ -148,8 +150,7 @@ class Tuner extends ITuner.Stub {
if (mIsMuted == mute) return;
mIsMuted = mute;
- // TODO(b/62713378): notifify audio policy manager of media activity on radio audio
- // device. This task is pulled directly from previous implementation of native service.
+ nativeSetMuted(mNativeContext, mute);
}
}
diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java
index db72c5e4cbab..e6228d46e15c 100644
--- a/services/core/java/com/android/server/clipboard/ClipboardService.java
+++ b/services/core/java/com/android/server/clipboard/ClipboardService.java
@@ -20,6 +20,7 @@ import android.app.ActivityManager;
import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.IActivityManager;
+import android.app.KeyguardManager;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.ContentProvider;
@@ -304,7 +305,7 @@ public class ClipboardService extends SystemService {
public ClipData getPrimaryClip(String pkg) {
synchronized (this) {
if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, pkg,
- Binder.getCallingUid())) {
+ Binder.getCallingUid()) || isDeviceLocked()) {
return null;
}
addActiveOwnerLocked(Binder.getCallingUid(), pkg);
@@ -316,7 +317,7 @@ public class ClipboardService extends SystemService {
public ClipDescription getPrimaryClipDescription(String callingPackage) {
synchronized (this) {
if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage,
- Binder.getCallingUid())) {
+ Binder.getCallingUid()) || isDeviceLocked()) {
return null;
}
PerUserClipboard clipboard = getClipboard();
@@ -328,7 +329,7 @@ public class ClipboardService extends SystemService {
public boolean hasPrimaryClip(String callingPackage) {
synchronized (this) {
if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage,
- Binder.getCallingUid())) {
+ Binder.getCallingUid()) || isDeviceLocked()) {
return false;
}
return getClipboard().primaryClip != null;
@@ -355,7 +356,7 @@ public class ClipboardService extends SystemService {
public boolean hasClipboardText(String callingPackage) {
synchronized (this) {
if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage,
- Binder.getCallingUid())) {
+ Binder.getCallingUid()) || isDeviceLocked()) {
return false;
}
PerUserClipboard clipboard = getClipboard();
@@ -433,6 +434,17 @@ public class ClipboardService extends SystemService {
}
}
+ private boolean isDeviceLocked() {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ final KeyguardManager keyguardManager = getContext().getSystemService(
+ KeyguardManager.class);
+ return keyguardManager != null && keyguardManager.isDeviceLocked();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
private final void checkUriOwnerLocked(Uri uri, int uid) {
if (!"content".equals(uri.getScheme())) {
return;
diff --git a/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java b/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java
index ee382199438b..67e72167faa7 100644
--- a/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java
+++ b/services/core/java/com/android/server/connectivity/IpConnectivityEventBuilder.java
@@ -38,6 +38,7 @@ import android.net.metrics.IpReachabilityEvent;
import android.net.metrics.NetworkEvent;
import android.net.metrics.RaEvent;
import android.net.metrics.ValidationProbeEvent;
+import android.net.metrics.WakeupStats;
import android.os.Parcelable;
import android.util.SparseArray;
import android.util.SparseIntArray;
@@ -115,6 +116,22 @@ final public class IpConnectivityEventBuilder {
return out;
}
+ public static IpConnectivityEvent toProto(WakeupStats in) {
+ IpConnectivityLogClass.WakeupStats wakeupStats =
+ new IpConnectivityLogClass.WakeupStats();
+ in.updateDuration();
+ wakeupStats.durationSec = in.durationSec;
+ wakeupStats.totalWakeups = in.totalWakeups;
+ wakeupStats.rootWakeups = in.rootWakeups;
+ wakeupStats.systemWakeups = in.systemWakeups;
+ wakeupStats.nonApplicationWakeups = in.nonApplicationWakeups;
+ wakeupStats.applicationWakeups = in.applicationWakeups;
+ wakeupStats.noUidWakeups = in.noUidWakeups;
+ final IpConnectivityEvent out = buildEvent(0, 0, in.iface);
+ out.setWakeupStats(wakeupStats);
+ return out;
+ }
+
private static IpConnectivityEvent buildEvent(int netId, long transports, String ifname) {
final IpConnectivityEvent ev = new IpConnectivityEvent();
ev.networkId = netId;
diff --git a/services/core/java/com/android/server/connectivity/Nat464Xlat.java b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
index b3908847137a..fbbdf0051266 100644
--- a/services/core/java/com/android/server/connectivity/Nat464Xlat.java
+++ b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
@@ -16,71 +16,68 @@
package com.android.server.connectivity;
-import java.net.Inet4Address;
-
-import android.content.Context;
import android.net.InterfaceConfiguration;
import android.net.ConnectivityManager;
import android.net.LinkAddress;
import android.net.LinkProperties;
-import android.net.NetworkAgent;
+import android.net.NetworkInfo;
import android.net.RouteInfo;
-import android.os.Handler;
-import android.os.Message;
import android.os.INetworkManagementService;
import android.os.RemoteException;
import android.util.Slog;
-import com.android.server.net.BaseNetworkObserver;
import com.android.internal.util.ArrayUtils;
+import com.android.server.net.BaseNetworkObserver;
+
+import java.net.Inet4Address;
+import java.util.Objects;
/**
- * @hide
+ * Class to manage a 464xlat CLAT daemon. Nat464Xlat is not thread safe and should be manipulated
+ * from a consistent and unique thread context. It is the responsibility of ConnectivityService to
+ * call into this class from its own Handler thread.
*
- * Class to manage a 464xlat CLAT daemon.
+ * @hide
*/
public class Nat464Xlat extends BaseNetworkObserver {
- private static final String TAG = "Nat464Xlat";
+ private static final String TAG = Nat464Xlat.class.getSimpleName();
// This must match the interface prefix in clatd.c.
private static final String CLAT_PREFIX = "v4-";
- // The network types we will start clatd on.
+ // The network types on which we will start clatd,
+ // allowing clat only on networks for which we can support IPv6-only.
private static final int[] NETWORK_TYPES = {
- ConnectivityManager.TYPE_MOBILE,
- ConnectivityManager.TYPE_WIFI,
- ConnectivityManager.TYPE_ETHERNET,
+ ConnectivityManager.TYPE_MOBILE,
+ ConnectivityManager.TYPE_WIFI,
+ ConnectivityManager.TYPE_ETHERNET,
};
- private final INetworkManagementService mNMService;
+ // The network states in which running clatd is supported.
+ private static final NetworkInfo.State[] NETWORK_STATES = {
+ NetworkInfo.State.CONNECTED,
+ NetworkInfo.State.SUSPENDED,
+ };
- // ConnectivityService Handler for LinkProperties updates.
- private final Handler mHandler;
+ private final INetworkManagementService mNMService;
// The network we're running on, and its type.
private final NetworkAgentInfo mNetwork;
- // Internal state variables.
- //
- // The possible states are:
- // - Idle: start() not called. Everything is null.
- // - Starting: start() called. Interfaces are non-null. isStarted() returns true.
- // mIsRunning is false.
- // - Running: start() called, and interfaceLinkStateChanged() told us that mIface is up.
- // mIsRunning is true.
- //
- // Once mIface is non-null and isStarted() is true, methods called by ConnectivityService on
- // its handler thread must not modify any internal state variables; they are only updated by the
- // interface observers, called on the notification threads.
+ private enum State {
+ IDLE, // start() not called. Base iface and stacked iface names are null.
+ STARTING, // start() called. Base iface and stacked iface names are known.
+ RUNNING, // start() called, and the stacked iface is known to be up.
+ STOPPING; // stop() called, this Nat464Xlat is still registered as a network observer for
+ // the stacked interface.
+ }
+
private String mBaseIface;
private String mIface;
- private boolean mIsRunning;
+ private State mState = State.IDLE;
- public Nat464Xlat(
- Context context, INetworkManagementService nmService,
- Handler handler, NetworkAgentInfo nai) {
+ public Nat464Xlat(INetworkManagementService nmService, NetworkAgentInfo nai) {
mNMService = nmService;
- mHandler = handler;
mNetwork = nai;
}
@@ -90,34 +87,109 @@ public class Nat464Xlat extends BaseNetworkObserver {
* @return true if the network requires clat, false otherwise.
*/
public static boolean requiresClat(NetworkAgentInfo nai) {
- final int netType = nai.networkInfo.getType();
- final boolean connected = nai.networkInfo.isConnected();
+ // TODO: migrate to NetworkCapabilities.TRANSPORT_*.
+ final boolean supported = ArrayUtils.contains(NETWORK_TYPES, nai.networkInfo.getType());
+ final boolean connected = ArrayUtils.contains(NETWORK_STATES, nai.networkInfo.getState());
+ // We only run clat on networks that don't have a native IPv4 address.
final boolean hasIPv4Address =
- (nai.linkProperties != null) ? nai.linkProperties.hasIPv4Address() : false;
- // Only support clat on mobile and wifi for now, because these are the only IPv6-only
- // networks we can connect to.
- return connected && !hasIPv4Address && ArrayUtils.contains(NETWORK_TYPES, netType);
+ (nai.linkProperties != null) && nai.linkProperties.hasIPv4Address();
+ return supported && connected && !hasIPv4Address;
}
/**
- * Determines whether clatd is started. Always true, except a) if start has not yet been called,
- * or b) if our interface was removed.
+ * @return true if clatd has been started and has not yet stopped.
+ * A true result corresponds to internal states STARTING and RUNNING.
*/
public boolean isStarted() {
- return mIface != null;
+ return mState != State.IDLE;
+ }
+
+ /**
+ * @return true if clatd has been started but the stacked interface is not yet up.
+ */
+ public boolean isStarting() {
+ return mState == State.STARTING;
+ }
+
+ /**
+ * @return true if clatd has been started and the stacked interface is up.
+ */
+ public boolean isRunning() {
+ return mState == State.RUNNING;
+ }
+
+ /**
+ * @return true if clatd has been stopped.
+ */
+ public boolean isStopping() {
+ return mState == State.STOPPING;
+ }
+
+ /**
+ * Start clatd, register this Nat464Xlat as a network observer for the stacked interface,
+ * and set internal state.
+ */
+ private void enterStartingState(String baseIface) {
+ try {
+ mNMService.registerObserver(this);
+ } catch(RemoteException e) {
+ Slog.e(TAG,
+ "startClat: Can't register interface observer for clat on " + mNetwork.name());
+ return;
+ }
+ try {
+ mNMService.startClatd(baseIface);
+ } catch(RemoteException|IllegalStateException e) {
+ Slog.e(TAG, "Error starting clatd on " + baseIface, e);
+ }
+ mIface = CLAT_PREFIX + baseIface;
+ mBaseIface = baseIface;
+ mState = State.STARTING;
+ }
+
+ /**
+ * Enter running state just after getting confirmation that the stacked interface is up, and
+ * turn ND offload off if on WiFi.
+ */
+ private void enterRunningState() {
+ maybeSetIpv6NdOffload(mBaseIface, false);
+ mState = State.RUNNING;
+ }
+
+ /**
+ * Stop clatd, and turn ND offload on if it had been turned off.
+ */
+ private void enterStoppingState() {
+ if (isRunning()) {
+ maybeSetIpv6NdOffload(mBaseIface, true);
+ }
+
+ try {
+ mNMService.stopClatd(mBaseIface);
+ } catch(RemoteException|IllegalStateException e) {
+ Slog.e(TAG, "Error stopping clatd on " + mBaseIface, e);
+ }
+
+ mState = State.STOPPING;
}
/**
- * Clears internal state. Must not be called by ConnectivityService.
+ * Unregister as a base observer for the stacked interface, and clear internal state.
*/
- private void clear() {
+ private void enterIdleState() {
+ try {
+ mNMService.unregisterObserver(this);
+ } catch(RemoteException|IllegalStateException e) {
+ Slog.e(TAG, "Error unregistering clatd observer on " + mBaseIface, e);
+ }
+
mIface = null;
mBaseIface = null;
- mIsRunning = false;
+ mState = State.IDLE;
}
/**
- * Starts the clat daemon. Called by ConnectivityService on the handler thread.
+ * Starts the clat daemon.
*/
public void start() {
if (isStarted()) {
@@ -130,52 +202,30 @@ public class Nat464Xlat extends BaseNetworkObserver {
return;
}
- try {
- mNMService.registerObserver(this);
- } catch(RemoteException e) {
- Slog.e(TAG, "startClat: Can't register interface observer for clat on " + mNetwork);
- return;
- }
-
- mBaseIface = mNetwork.linkProperties.getInterfaceName();
- if (mBaseIface == null) {
+ String baseIface = mNetwork.linkProperties.getInterfaceName();
+ if (baseIface == null) {
Slog.e(TAG, "startClat: Can't start clat on null interface");
return;
}
- mIface = CLAT_PREFIX + mBaseIface;
- // From now on, isStarted() will return true.
-
- Slog.i(TAG, "Starting clatd on " + mBaseIface);
- try {
- mNMService.startClatd(mBaseIface);
- } catch(RemoteException|IllegalStateException e) {
- Slog.e(TAG, "Error starting clatd: " + e);
- }
+ // TODO: should we only do this if mNMService.startClatd() succeeds?
+ Slog.i(TAG, "Starting clatd on " + baseIface);
+ enterStartingState(baseIface);
}
/**
- * Stops the clat daemon. Called by ConnectivityService on the handler thread.
+ * Stops the clat daemon.
*/
public void stop() {
- if (isStarted()) {
- Slog.i(TAG, "Stopping clatd");
- try {
- mNMService.stopClatd(mBaseIface);
- } catch(RemoteException|IllegalStateException e) {
- Slog.e(TAG, "Error stopping clatd: " + e);
- }
- // When clatd stops and its interface is deleted, interfaceRemoved() will notify
- // ConnectivityService and call clear().
- } else {
- Slog.e(TAG, "clatd: already stopped");
+ if (!isStarted()) {
+ return;
}
- }
+ Slog.i(TAG, "Stopping clatd on " + mBaseIface);
- private void updateConnectivityService(LinkProperties lp) {
- Message msg = mHandler.obtainMessage(NetworkAgent.EVENT_NETWORK_PROPERTIES_CHANGED, lp);
- msg.replyTo = mNetwork.messenger;
- Slog.i(TAG, "sending message to ConnectivityService: " + msg);
- msg.sendToTarget();
+ boolean wasStarting = isStarting();
+ enterStoppingState();
+ if (wasStarting) {
+ enterIdleState();
+ }
}
/**
@@ -184,16 +234,19 @@ public class Nat464Xlat extends BaseNetworkObserver {
* has no idea that 464xlat is running on top of it.
*/
public void fixupLinkProperties(LinkProperties oldLp) {
- if (mNetwork.clatd != null &&
- mIsRunning &&
- mNetwork.linkProperties != null &&
- !mNetwork.linkProperties.getAllInterfaceNames().contains(mIface)) {
- Slog.d(TAG, "clatd running, updating NAI for " + mIface);
- for (LinkProperties stacked: oldLp.getStackedLinks()) {
- if (mIface.equals(stacked.getInterfaceName())) {
- mNetwork.linkProperties.addStackedLink(stacked);
- break;
- }
+ if (!isRunning()) {
+ return;
+ }
+ LinkProperties lp = mNetwork.linkProperties;
+ if (lp == null || lp.getAllInterfaceNames().contains(mIface)) {
+ return;
+ }
+
+ Slog.d(TAG, "clatd running, updating NAI for " + mIface);
+ for (LinkProperties stacked: oldLp.getStackedLinks()) {
+ if (Objects.equals(mIface, stacked.getInterfaceName())) {
+ lp.addStackedLink(stacked);
+ return;
}
}
}
@@ -227,6 +280,7 @@ public class Nat464Xlat extends BaseNetworkObserver {
}
private void maybeSetIpv6NdOffload(String iface, boolean on) {
+ // TODO: migrate to NetworkCapabilities.TRANSPORT_*.
if (mNetwork.networkInfo.getType() != ConnectivityManager.TYPE_WIFI) {
return;
}
@@ -238,52 +292,63 @@ public class Nat464Xlat extends BaseNetworkObserver {
}
}
+ /**
+ * Adds stacked link on base link and transitions to RUNNING state.
+ */
+ private void handleInterfaceLinkStateChanged(String iface, boolean up) {
+ if (!isStarting() || !up || !Objects.equals(mIface, iface)) {
+ return;
+ }
+
+ LinkAddress clatAddress = getLinkAddress(iface);
+ if (clatAddress == null) {
+ Slog.e(TAG, "clatAddress was null for stacked iface " + iface);
+ return;
+ }
+
+ Slog.i(TAG, String.format("interface %s is up, adding stacked link %s on top of %s",
+ mIface, mIface, mBaseIface));
+ enterRunningState();
+ LinkProperties lp = new LinkProperties(mNetwork.linkProperties);
+ lp.addStackedLink(makeLinkProperties(clatAddress));
+ mNetwork.connService().handleUpdateLinkProperties(mNetwork, lp);
+ }
+
+ /**
+ * Removes stacked link on base link and transitions to IDLE state.
+ */
+ private void handleInterfaceRemoved(String iface) {
+ if (!Objects.equals(mIface, iface)) {
+ return;
+ }
+ if (!isRunning() && !isStopping()) {
+ return;
+ }
+
+ Slog.i(TAG, "interface " + iface + " removed");
+ if (!isStopping()) {
+ // Ensure clatd is stopped if stop() has not been called: this likely means that clatd
+ // has crashed.
+ enterStoppingState();
+ }
+ enterIdleState();
+ LinkProperties lp = new LinkProperties(mNetwork.linkProperties);
+ lp.removeStackedLink(iface);
+ mNetwork.connService().handleUpdateLinkProperties(mNetwork, lp);
+ }
+
@Override
public void interfaceLinkStateChanged(String iface, boolean up) {
- // Called by the InterfaceObserver on its own thread, so can race with stop().
- if (isStarted() && up && mIface.equals(iface)) {
- Slog.i(TAG, "interface " + iface + " is up, mIsRunning " + mIsRunning + "->true");
-
- if (!mIsRunning) {
- LinkAddress clatAddress = getLinkAddress(iface);
- if (clatAddress == null) {
- return;
- }
- mIsRunning = true;
- maybeSetIpv6NdOffload(mBaseIface, false);
- LinkProperties lp = new LinkProperties(mNetwork.linkProperties);
- lp.addStackedLink(makeLinkProperties(clatAddress));
- Slog.i(TAG, "Adding stacked link " + mIface + " on top of " + mBaseIface);
- updateConnectivityService(lp);
- }
- }
+ mNetwork.handler().post(() -> { handleInterfaceLinkStateChanged(iface, up); });
}
@Override
public void interfaceRemoved(String iface) {
- if (isStarted() && mIface.equals(iface)) {
- Slog.i(TAG, "interface " + iface + " removed, mIsRunning " + mIsRunning + "->false");
-
- if (mIsRunning) {
- // The interface going away likely means clatd has crashed. Ask netd to stop it,
- // because otherwise when we try to start it again on the same base interface netd
- // will complain that it's already started.
- //
- // Note that this method can be called by the interface observer at the same time
- // that ConnectivityService calls stop(). In this case, the second call to
- // stopClatd() will just throw IllegalStateException, which we'll ignore.
- try {
- mNMService.unregisterObserver(this);
- mNMService.stopClatd(mBaseIface);
- } catch (RemoteException|IllegalStateException e) {
- // Well, we tried.
- }
- maybeSetIpv6NdOffload(mBaseIface, true);
- LinkProperties lp = new LinkProperties(mNetwork.linkProperties);
- lp.removeStackedLink(mIface);
- clear();
- updateConnectivityService(lp);
- }
- }
+ mNetwork.handler().post(() -> { handleInterfaceRemoved(iface); });
+ }
+
+ @Override
+ public String toString() {
+ return "mBaseIface: " + mBaseIface + ", mIface: " + mIface + ", mState: " + mState;
}
}
diff --git a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
index 4094083f138c..25dba3570e20 100644
--- a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
+++ b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
@@ -16,6 +16,8 @@
package com.android.server.connectivity;
+import static android.util.TimeUtils.NANOS_PER_MS;
+
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.INetdEventCallback;
@@ -25,9 +27,12 @@ import android.net.metrics.ConnectStats;
import android.net.metrics.DnsEvent;
import android.net.metrics.INetdEventListener;
import android.net.metrics.IpConnectivityLog;
+import android.net.metrics.WakeupEvent;
+import android.net.metrics.WakeupStats;
import android.os.RemoteException;
import android.text.format.DateUtils;
import android.util.Log;
+import android.util.ArrayMap;
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -59,12 +64,28 @@ public class NetdEventListenerService extends INetdEventListener.Stub {
private static final int CONNECT_LATENCY_FILL_RATE = 15 * (int) DateUtils.SECOND_IN_MILLIS;
private static final int CONNECT_LATENCY_MAXIMUM_RECORDS = 20000;
+ @VisibleForTesting
+ static final int WAKEUP_EVENT_BUFFER_LENGTH = 1024;
+ // TODO: dedup this String constant with the one used in
+ // ConnectivityService#wakeupModifyInterface().
+ @VisibleForTesting
+ static final String WAKEUP_EVENT_IFACE_PREFIX = "iface:";
+
// Sparse arrays of DNS and connect events, grouped by net id.
@GuardedBy("this")
private final SparseArray<DnsEvent> mDnsEvents = new SparseArray<>();
@GuardedBy("this")
private final SparseArray<ConnectStats> mConnectEvents = new SparseArray<>();
+ // Array of aggregated wakeup event stats, grouped by interface name.
+ @GuardedBy("this")
+ private final ArrayMap<String, WakeupStats> mWakeupStats = new ArrayMap<>();
+ // Ring buffer array for storing packet wake up events sent by Netd.
+ @GuardedBy("this")
+ private final WakeupEvent[] mWakeupEvents = new WakeupEvent[WAKEUP_EVENT_BUFFER_LENGTH];
+ @GuardedBy("this")
+ private long mWakeupEventCursor = 0;
+
private final ConnectivityManager mCm;
@GuardedBy("this")
@@ -137,11 +158,62 @@ public class NetdEventListenerService extends INetdEventListener.Stub {
@Override
public synchronized void onWakeupEvent(String prefix, int uid, int gid, long timestampNs) {
+ maybeVerboseLog("onWakeupEvent(%s, %d, %d, %sns)", prefix, uid, gid, timestampNs);
+
+ // TODO: add ip protocol and port
+
+ String iface = prefix.replaceFirst(WAKEUP_EVENT_IFACE_PREFIX, "");
+ final long timestampMs;
+ if (timestampNs > 0) {
+ timestampMs = timestampNs / NANOS_PER_MS;
+ } else {
+ timestampMs = System.currentTimeMillis();
+ }
+
+ addWakeupEvent(iface, timestampMs, uid);
+ }
+
+ @GuardedBy("this")
+ private void addWakeupEvent(String iface, long timestampMs, int uid) {
+ int index = wakeupEventIndex(mWakeupEventCursor);
+ mWakeupEventCursor++;
+ WakeupEvent event = new WakeupEvent();
+ event.iface = iface;
+ event.timestampMs = timestampMs;
+ event.uid = uid;
+ mWakeupEvents[index] = event;
+ WakeupStats stats = mWakeupStats.get(iface);
+ if (stats == null) {
+ stats = new WakeupStats(iface);
+ mWakeupStats.put(iface, stats);
+ }
+ stats.countEvent(event);
+ }
+
+ @GuardedBy("this")
+ private WakeupEvent[] getWakeupEvents() {
+ int length = (int) Math.min(mWakeupEventCursor, (long) mWakeupEvents.length);
+ WakeupEvent[] out = new WakeupEvent[length];
+ // Reverse iteration from youngest event to oldest event.
+ long inCursor = mWakeupEventCursor - 1;
+ int outIdx = out.length - 1;
+ while (outIdx >= 0) {
+ out[outIdx--] = mWakeupEvents[wakeupEventIndex(inCursor--)];
+ }
+ return out;
+ }
+
+ private static int wakeupEventIndex(long cursor) {
+ return (int) Math.abs(cursor % WAKEUP_EVENT_BUFFER_LENGTH);
}
public synchronized void flushStatistics(List<IpConnectivityEvent> events) {
flushProtos(events, mConnectEvents, IpConnectivityEventBuilder::toProto);
flushProtos(events, mDnsEvents, IpConnectivityEventBuilder::toProto);
+ for (int i = 0; i < mWakeupStats.size(); i++) {
+ events.add(IpConnectivityEventBuilder.toProto(mWakeupStats.valueAt(i)));
+ }
+ mWakeupStats.clear();
}
public synchronized void dump(PrintWriter writer) {
@@ -153,13 +225,22 @@ public class NetdEventListenerService extends INetdEventListener.Stub {
}
public synchronized void list(PrintWriter pw) {
- listEvents(pw, mConnectEvents, (x) -> x);
- listEvents(pw, mDnsEvents, (x) -> x);
+ listEvents(pw, mConnectEvents, (x) -> x, "\n");
+ listEvents(pw, mDnsEvents, (x) -> x, "\n");
+ for (int i = 0; i < mWakeupStats.size(); i++) {
+ pw.println(mWakeupStats.valueAt(i));
+ }
+ for (WakeupEvent wakeup : getWakeupEvents()) {
+ pw.println(wakeup);
+ }
}
public synchronized void listAsProtos(PrintWriter pw) {
- listEvents(pw, mConnectEvents, IpConnectivityEventBuilder::toProto);
- listEvents(pw, mDnsEvents, IpConnectivityEventBuilder::toProto);
+ listEvents(pw, mConnectEvents, IpConnectivityEventBuilder::toProto, "");
+ listEvents(pw, mDnsEvents, IpConnectivityEventBuilder::toProto, "");
+ for (int i = 0; i < mWakeupStats.size(); i++) {
+ pw.print(IpConnectivityEventBuilder.toProto(mWakeupStats.valueAt(i)));
+ }
}
private static <T> void flushProtos(List<IpConnectivityEvent> out, SparseArray<T> in,
@@ -170,10 +251,13 @@ public class NetdEventListenerService extends INetdEventListener.Stub {
in.clear();
}
- public static <T> void listEvents(
- PrintWriter pw, SparseArray<T> events, Function<T, Object> mapper) {
+ private static <T> void listEvents(
+ PrintWriter pw, SparseArray<T> events, Function<T, Object> mapper, String separator) {
+ // Proto derived Classes have toString method that adds a \n at the end.
+ // Let the caller control that by passing in the line separator explicitly.
for (int i = 0; i < events.size(); i++) {
- pw.println(mapper.apply(events.valueAt(i)).toString());
+ pw.print(mapper.apply(events.valueAt(i)));
+ pw.print(separator);
}
}
diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
index 2a618bcc2eac..a4d7242086bf 100644
--- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
+++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
@@ -27,7 +27,9 @@ import android.net.NetworkMisc;
import android.net.NetworkRequest;
import android.net.NetworkState;
import android.os.Handler;
+import android.os.INetworkManagementService;
import android.os.Messenger;
+import android.os.RemoteException;
import android.os.SystemClock;
import android.util.Log;
import android.util.SparseArray;
@@ -268,6 +270,18 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
networkMisc = misc;
}
+ public ConnectivityService connService() {
+ return mConnService;
+ }
+
+ public Handler handler() {
+ return mHandler;
+ }
+
+ public Network network() {
+ return network;
+ }
+
// Functions for manipulating the requests satisfied by this network.
//
// These functions must only called on ConnectivityService's main thread.
@@ -551,6 +565,32 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
for (LingerTimer timer : mLingerTimers) { pw.println(timer); }
}
+ public void updateClat(INetworkManagementService netd) {
+ if (Nat464Xlat.requiresClat(this)) {
+ maybeStartClat(netd);
+ } else {
+ maybeStopClat();
+ }
+ }
+
+ /** Ensure clat has started for this network. */
+ public void maybeStartClat(INetworkManagementService netd) {
+ if (clatd != null && clatd.isStarted()) {
+ return;
+ }
+ clatd = new Nat464Xlat(netd, this);
+ clatd.start();
+ }
+
+ /** Ensure clat has stopped for this network. */
+ public void maybeStopClat() {
+ if (clatd == null) {
+ return;
+ }
+ clatd.stop();
+ clatd = null;
+ }
+
public String toString() {
return "NetworkAgentInfo{ ni{" + networkInfo + "} " +
"network{" + network + "} nethandle{" + network.getNetworkHandle() + "} " +
@@ -562,13 +602,13 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> {
"acceptUnvalidated{" + networkMisc.acceptUnvalidated + "} " +
"everCaptivePortalDetected{" + everCaptivePortalDetected + "} " +
"lastCaptivePortalDetected{" + lastCaptivePortalDetected + "} " +
+ "clat{" + clatd + "} " +
"}";
}
public String name() {
return "NetworkAgentInfo [" + networkInfo.getTypeName() + " (" +
- networkInfo.getSubtypeName() + ") - " +
- (network == null ? "null" : network.toString()) + "]";
+ networkInfo.getSubtypeName() + ") - " + Objects.toString(network) + "]";
}
// Enables sorting in descending order of score.
diff --git a/services/core/java/com/android/server/connectivity/NetworkMonitor.java b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
index d3a93542c740..8b886d6b3cff 100644
--- a/services/core/java/com/android/server/connectivity/NetworkMonitor.java
+++ b/services/core/java/com/android/server/connectivity/NetworkMonitor.java
@@ -20,7 +20,6 @@ import static android.net.CaptivePortal.APP_RETURN_DISMISSED;
import static android.net.CaptivePortal.APP_RETURN_UNWANTED;
import static android.net.CaptivePortal.APP_RETURN_WANTED_AS_IS;
-import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -229,6 +228,8 @@ public class NetworkMonitor extends StateMachine {
// Delay between reevaluations once a captive portal has been found.
private static final int CAPTIVE_PORTAL_REEVALUATE_DELAY_MS = 10*60*1000;
+ private static final int NUM_VALIDATION_LOG_LINES = 20;
+
private final Context mContext;
private final Handler mConnectivityServiceHandler;
private final NetworkAgentInfo mNetworkAgentInfo;
@@ -236,9 +237,15 @@ public class NetworkMonitor extends StateMachine {
private final int mNetId;
private final TelephonyManager mTelephonyManager;
private final WifiManager mWifiManager;
- private final AlarmManager mAlarmManager;
private final NetworkRequest mDefaultRequest;
private final IpConnectivityLog mMetricsLog;
+ private final NetworkMonitorSettings mSettings;
+
+ // Configuration values for captive portal detection probes.
+ private final String mCaptivePortalUserAgent;
+ private final URL mCaptivePortalHttpsUrl;
+ private final URL mCaptivePortalHttpUrl;
+ private final URL[] mCaptivePortalFallbackUrls;
@VisibleForTesting
protected boolean mIsCaptivePortalCheckEnabled;
@@ -262,40 +269,37 @@ public class NetworkMonitor extends StateMachine {
private CustomIntentReceiver mLaunchCaptivePortalAppBroadcastReceiver = null;
- private final LocalLog validationLogs = new LocalLog(20); // 20 lines
+ private final LocalLog validationLogs = new LocalLog(NUM_VALIDATION_LOG_LINES);
private final Stopwatch mEvaluationTimer = new Stopwatch();
// This variable is set before transitioning to the mCaptivePortalState.
private CaptivePortalProbeResult mLastPortalProbeResult = CaptivePortalProbeResult.FAILED;
- // Configuration values for captive portal detection probes.
- private final String mCaptivePortalUserAgent;
- private final URL mCaptivePortalHttpsUrl;
- private final URL mCaptivePortalHttpUrl;
- private final URL[] mCaptivePortalFallbackUrls;
private int mNextFallbackUrlIndex = 0;
public NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo,
NetworkRequest defaultRequest) {
- this(context, handler, networkAgentInfo, defaultRequest, new IpConnectivityLog());
+ this(context, handler, networkAgentInfo, defaultRequest, new IpConnectivityLog(),
+ NetworkMonitorSettings.DEFAULT);
}
@VisibleForTesting
protected NetworkMonitor(Context context, Handler handler, NetworkAgentInfo networkAgentInfo,
- NetworkRequest defaultRequest, IpConnectivityLog logger) {
+ NetworkRequest defaultRequest, IpConnectivityLog logger,
+ NetworkMonitorSettings settings) {
// Add suffix indicating which NetworkMonitor we're talking about.
super(TAG + networkAgentInfo.name());
mContext = context;
mMetricsLog = logger;
mConnectivityServiceHandler = handler;
+ mSettings = settings;
mNetworkAgentInfo = networkAgentInfo;
- mNetwork = new OneAddressPerFamilyNetwork(networkAgentInfo.network);
+ mNetwork = new OneAddressPerFamilyNetwork(networkAgentInfo.network());
mNetId = mNetwork.netId;
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
mDefaultRequest = defaultRequest;
addState(mDefaultState);
@@ -305,16 +309,12 @@ public class NetworkMonitor extends StateMachine {
addState(mCaptivePortalState, mMaybeNotifyState);
setInitialState(mDefaultState);
- mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.CAPTIVE_PORTAL_MODE, Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT)
- != Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE;
- mUseHttps = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1;
-
- mCaptivePortalUserAgent = getCaptivePortalUserAgent(context);
- mCaptivePortalHttpsUrl = makeURL(getCaptivePortalServerHttpsUrl(context));
- mCaptivePortalHttpUrl = makeURL(getCaptivePortalServerHttpUrl(context));
- mCaptivePortalFallbackUrls = makeCaptivePortalFallbackUrls(context);
+ mIsCaptivePortalCheckEnabled = getIsCaptivePortalCheckEnabled();
+ mUseHttps = getUseHttpsValidation();
+ mCaptivePortalUserAgent = getCaptivePortalUserAgent();
+ mCaptivePortalHttpsUrl = makeURL(getCaptivePortalServerHttpsUrl());
+ mCaptivePortalHttpUrl = makeURL(getCaptivePortalServerHttpUrl(settings, context));
+ mCaptivePortalFallbackUrls = makeCaptivePortalFallbackUrls();
start();
}
@@ -705,19 +705,42 @@ public class NetworkMonitor extends StateMachine {
}
}
- private static String getCaptivePortalServerHttpsUrl(Context context) {
- return getSetting(context, Settings.Global.CAPTIVE_PORTAL_HTTPS_URL, DEFAULT_HTTPS_URL);
+ public boolean getIsCaptivePortalCheckEnabled() {
+ String symbol = Settings.Global.CAPTIVE_PORTAL_MODE;
+ int defaultValue = Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT;
+ int mode = mSettings.getSetting(mContext, symbol, defaultValue);
+ return mode != Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE;
}
+ public boolean getUseHttpsValidation() {
+ return mSettings.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1;
+ }
+
+ public boolean getWifiScansAlwaysAvailableDisabled() {
+ return mSettings.getSetting(mContext, Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 0;
+ }
+
+ private String getCaptivePortalServerHttpsUrl() {
+ return mSettings.getSetting(mContext,
+ Settings.Global.CAPTIVE_PORTAL_HTTPS_URL, DEFAULT_HTTPS_URL);
+ }
+
+ // Static for direct access by ConnectivityService
public static String getCaptivePortalServerHttpUrl(Context context) {
- return getSetting(context, Settings.Global.CAPTIVE_PORTAL_HTTP_URL, DEFAULT_HTTP_URL);
+ return getCaptivePortalServerHttpUrl(NetworkMonitorSettings.DEFAULT, context);
+ }
+
+ public static String getCaptivePortalServerHttpUrl(
+ NetworkMonitorSettings settings, Context context) {
+ return settings.getSetting(
+ context, Settings.Global.CAPTIVE_PORTAL_HTTP_URL, DEFAULT_HTTP_URL);
}
- private URL[] makeCaptivePortalFallbackUrls(Context context) {
+ private URL[] makeCaptivePortalFallbackUrls() {
String separator = ",";
- String firstUrl = getSetting(context,
+ String firstUrl = mSettings.getSetting(mContext,
Settings.Global.CAPTIVE_PORTAL_FALLBACK_URL, DEFAULT_FALLBACK_URL);
- String joinedUrls = firstUrl + separator + getSetting(context,
+ String joinedUrls = firstUrl + separator + mSettings.getSetting(mContext,
Settings.Global.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS, DEFAULT_OTHER_FALLBACK_URLS);
List<URL> urls = new ArrayList<>();
for (String s : joinedUrls.split(separator)) {
@@ -733,13 +756,9 @@ public class NetworkMonitor extends StateMachine {
return urls.toArray(new URL[urls.size()]);
}
- private static String getCaptivePortalUserAgent(Context context) {
- return getSetting(context, Settings.Global.CAPTIVE_PORTAL_USER_AGENT, DEFAULT_USER_AGENT);
- }
-
- private static String getSetting(Context context, String symbol, String defaultValue) {
- final String value = Settings.Global.getString(context.getContentResolver(), symbol);
- return value != null ? value : defaultValue;
+ private String getCaptivePortalUserAgent() {
+ return mSettings.getSetting(mContext,
+ Settings.Global.CAPTIVE_PORTAL_USER_AGENT, DEFAULT_USER_AGENT);
}
private URL nextFallbackUrl() {
@@ -1035,12 +1054,13 @@ public class NetworkMonitor extends StateMachine {
*/
private void sendNetworkConditionsBroadcast(boolean responseReceived, boolean isCaptivePortal,
long requestTimestampMs, long responseTimestampMs) {
- if (Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 0) {
+ if (getWifiScansAlwaysAvailableDisabled()) {
return;
}
- if (systemReady == false) return;
+ if (!systemReady) {
+ return;
+ }
Intent latencyBroadcast = new Intent(ACTION_NETWORK_CONDITIONS_MEASURED);
switch (mNetworkAgentInfo.networkInfo.getType()) {
@@ -1144,4 +1164,24 @@ public class NetworkMonitor extends StateMachine {
ev.durationMs = durationMs;
mMetricsLog.log(mNetId, transports, ev);
}
+
+ @VisibleForTesting
+ public interface NetworkMonitorSettings {
+ int getSetting(Context context, String symbol, int defaultValue);
+ String getSetting(Context context, String symbol, String defaultValue);
+
+ static NetworkMonitorSettings DEFAULT = new DefaultNetworkMonitorSettings();
+ }
+
+ @VisibleForTesting
+ public static class DefaultNetworkMonitorSettings implements NetworkMonitorSettings {
+ public int getSetting(Context context, String symbol, int defaultValue) {
+ return Settings.Global.getInt(context.getContentResolver(), symbol, defaultValue);
+ }
+
+ public String getSetting(Context context, String symbol, String defaultValue) {
+ final String value = Settings.Global.getString(context.getContentResolver(), symbol);
+ return value != null ? value : defaultValue;
+ }
+ }
}
diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java
index 6d5c428e58f8..057704a56c4c 100644
--- a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java
+++ b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java
@@ -30,6 +30,10 @@ import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.NetworkStats;
import android.net.RouteInfo;
+import android.net.netlink.ConntrackMessage;
+import android.net.netlink.NetlinkConstants;
+import android.net.netlink.NetlinkSocket;
+import android.net.util.IpUtils;
import android.net.util.SharedLog;
import android.os.Handler;
import android.os.Looper;
@@ -37,15 +41,18 @@ import android.os.INetworkManagementService;
import android.os.RemoteException;
import android.os.SystemClock;
import android.provider.Settings;
+import android.system.ErrnoException;
+import android.system.OsConstants;
import android.text.TextUtils;
-import com.android.server.connectivity.tethering.OffloadHardwareInterface.ForwardedStats;
import com.android.internal.util.IndentingPrintWriter;
+import com.android.server.connectivity.tethering.OffloadHardwareInterface.ForwardedStats;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -63,6 +70,11 @@ import java.util.concurrent.TimeUnit;
*/
public class OffloadController {
private static final String TAG = OffloadController.class.getSimpleName();
+ private static final boolean DBG = false;
+ private static final String ANYIP = "0.0.0.0";
+ private static final ForwardedStats EMPTY_STATS = new ForwardedStats();
+
+ private static enum UpdateType { IF_NEEDED, FORCE };
private final Handler mHandler;
private final OffloadHardwareInterface mHwInterface;
@@ -94,6 +106,9 @@ public class OffloadController {
// includes upstream interfaces that have a quota set.
private HashMap<String, Long> mInterfaceQuotas = new HashMap<>();
+ private int mNatUpdateCallbacksReceived;
+ private int mNatUpdateNetlinkErrors;
+
public OffloadController(Handler h, OffloadHardwareInterface hwi,
ContentResolver contentResolver, INetworkManagementService nms, SharedLog log) {
mHandler = h;
@@ -113,12 +128,12 @@ public class OffloadController {
}
}
- public void start() {
- if (started()) return;
+ public boolean start() {
+ if (started()) return true;
if (isOffloadDisabled()) {
mLog.i("tethering offload disabled");
- return;
+ return false;
}
if (!mConfigInitialized) {
@@ -126,11 +141,14 @@ public class OffloadController {
if (!mConfigInitialized) {
mLog.i("tethering offload config not supported");
stop();
- return;
+ return false;
}
}
mControlInitialized = mHwInterface.initOffloadControl(
+ // OffloadHardwareInterface guarantees that these callback
+ // methods are called on the handler passed to it, which is the
+ // same as mHandler, as coordinated by the setup in Tethering.
new OffloadHardwareInterface.ControlCallback() {
@Override
public void onStarted() {
@@ -148,6 +166,14 @@ public class OffloadController {
public void onStoppedUnsupported() {
if (!started()) return;
mLog.log("onStoppedUnsupported");
+ // Poll for statistics and trigger a sweep of tethering
+ // stats by observers. This might not succeed, but it's
+ // worth trying anyway. We need to do this because from
+ // this point on we continue with software forwarding,
+ // and we need to synchronize stats and limits between
+ // software and hardware forwarding.
+ updateStatsForAllUpstreams();
+ forceTetherStatsPoll();
}
@Override
@@ -155,11 +181,15 @@ public class OffloadController {
if (!started()) return;
mLog.log("onSupportAvailable");
- // [1] Poll for statistics and notify NetworkStats
- // [2] (Re)Push all state:
- // [a] push local prefixes
- // [b] push downstreams
- // [c] push upstream parameters
+ // [1] Poll for statistics and trigger a sweep of stats
+ // by observers. We need to do this to ensure that any
+ // limits set take into account any software tethering
+ // traffic that has been happening in the meantime.
+ updateStatsForAllUpstreams();
+ forceTetherStatsPoll();
+ // [2] (Re)Push all state.
+ computeAndPushLocalPrefixes(UpdateType.FORCE);
+ pushAllDownstreamState();
pushUpstreamParameters(null);
}
@@ -181,12 +211,7 @@ public class OffloadController {
// The stats for the previous upstream were already updated on this thread
// just after the upstream was changed, so they are also up-to-date.
updateStatsForCurrentUpstream();
-
- try {
- mNms.tetherLimitReached(mStatsProvider);
- } catch (RemoteException e) {
- mLog.e("Cannot report data limit reached: " + e);
- }
+ forceTetherStatsPoll();
}
@Override
@@ -194,15 +219,20 @@ public class OffloadController {
String srcAddr, int srcPort,
String dstAddr, int dstPort) {
if (!started()) return;
- mLog.log(String.format("NAT timeout update: %s (%s,%s) -> (%s,%s)",
- proto, srcAddr, srcPort, dstAddr, dstPort));
+ updateNatTimeout(proto, srcAddr, srcPort, dstAddr, dstPort);
}
});
- if (!mControlInitialized) {
+
+ final boolean isStarted = started();
+ if (!isStarted) {
mLog.i("tethering offload control not supported");
stop();
+ } else {
+ mLog.log("tethering offload started");
+ mNatUpdateCallbacksReceived = 0;
+ mNatUpdateNetlinkErrors = 0;
}
- mLog.log("tethering offload started");
+ return isStarted;
}
public void stop() {
@@ -218,6 +248,10 @@ public class OffloadController {
if (wasStarted) mLog.log("tethering offload stopped");
}
+ private boolean started() {
+ return mConfigInitialized && mControlInitialized;
+ }
+
private class OffloadTetheringStatsProvider extends ITetheringStatsProvider.Stub {
@Override
public NetworkStats getTetherStats(int how) {
@@ -288,7 +322,7 @@ public class OffloadController {
}
private boolean maybeUpdateDataLimit(String iface) {
- // setDataLimit may only be called while offload is occuring on this upstream.
+ // setDataLimit may only be called while offload is occurring on this upstream.
if (!started() || !TextUtils.equals(iface, currentUpstreamInterface())) {
return true;
}
@@ -305,27 +339,47 @@ public class OffloadController {
maybeUpdateStats(currentUpstreamInterface());
}
+ private void updateStatsForAllUpstreams() {
+ // In practice, there should only ever be a single digit number of
+ // upstream interfaces over the lifetime of an active tethering session.
+ // Roughly speaking, imagine a very ambitious one or two of each of the
+ // following interface types: [ "rmnet_data", "wlan", "eth", "rndis" ].
+ for (Map.Entry<String, ForwardedStats> kv : mForwardedStats.entrySet()) {
+ maybeUpdateStats(kv.getKey());
+ }
+ }
+
+ private void forceTetherStatsPoll() {
+ try {
+ mNms.tetherLimitReached(mStatsProvider);
+ } catch (RemoteException e) {
+ mLog.e("Cannot report data limit reached: " + e);
+ }
+ }
+
public void setUpstreamLinkProperties(LinkProperties lp) {
if (!started() || Objects.equals(mUpstreamLinkProperties, lp)) return;
- String prevUpstream = (mUpstreamLinkProperties != null) ?
- mUpstreamLinkProperties.getInterfaceName() : null;
+ final String prevUpstream = currentUpstreamInterface();
mUpstreamLinkProperties = (lp != null) ? new LinkProperties(lp) : null;
+ // Make sure we record this interface in the ForwardedStats map.
+ final String iface = currentUpstreamInterface();
+ if (!TextUtils.isEmpty(iface)) mForwardedStats.putIfAbsent(iface, EMPTY_STATS);
// TODO: examine return code and decide what to do if programming
// upstream parameters fails (probably just wait for a subsequent
// onOffloadEvent() callback to tell us offload is available again and
// then reapply all state).
- computeAndPushLocalPrefixes();
+ computeAndPushLocalPrefixes(UpdateType.IF_NEEDED);
pushUpstreamParameters(prevUpstream);
}
public void setLocalPrefixes(Set<IpPrefix> localPrefixes) {
- if (!started()) return;
-
mExemptPrefixes = localPrefixes;
- computeAndPushLocalPrefixes();
+
+ if (!started()) return;
+ computeAndPushLocalPrefixes(UpdateType.IF_NEEDED);
}
public void notifyDownstreamLinkProperties(LinkProperties lp) {
@@ -334,27 +388,38 @@ public class OffloadController {
if (Objects.equals(oldLp, lp)) return;
if (!started()) return;
+ pushDownstreamState(oldLp, lp);
+ }
- final List<RouteInfo> oldRoutes = (oldLp != null) ? oldLp.getRoutes() : new ArrayList<>();
- final List<RouteInfo> newRoutes = lp.getRoutes();
+ private void pushDownstreamState(LinkProperties oldLp, LinkProperties newLp) {
+ final String ifname = newLp.getInterfaceName();
+ final List<RouteInfo> oldRoutes =
+ (oldLp != null) ? oldLp.getRoutes() : Collections.EMPTY_LIST;
+ final List<RouteInfo> newRoutes = newLp.getRoutes();
// For each old route, if not in new routes: remove.
- for (RouteInfo oldRoute : oldRoutes) {
- if (shouldIgnoreDownstreamRoute(oldRoute)) continue;
- if (!newRoutes.contains(oldRoute)) {
- mHwInterface.removeDownstreamPrefix(ifname, oldRoute.getDestination().toString());
+ for (RouteInfo ri : oldRoutes) {
+ if (shouldIgnoreDownstreamRoute(ri)) continue;
+ if (!newRoutes.contains(ri)) {
+ mHwInterface.removeDownstreamPrefix(ifname, ri.getDestination().toString());
}
}
// For each new route, if not in old routes: add.
- for (RouteInfo newRoute : newRoutes) {
- if (shouldIgnoreDownstreamRoute(newRoute)) continue;
- if (!oldRoutes.contains(newRoute)) {
- mHwInterface.addDownstreamPrefix(ifname, newRoute.getDestination().toString());
+ for (RouteInfo ri : newRoutes) {
+ if (shouldIgnoreDownstreamRoute(ri)) continue;
+ if (!oldRoutes.contains(ri)) {
+ mHwInterface.addDownstreamPrefix(ifname, ri.getDestination().toString());
}
}
}
+ private void pushAllDownstreamState() {
+ for (LinkProperties lp : mDownstreams.values()) {
+ pushDownstreamState(null, lp);
+ }
+ }
+
public void removeDownstreamInterface(String ifname) {
final LinkProperties lp = mDownstreams.remove(ifname);
if (lp == null) return;
@@ -373,21 +438,21 @@ public class OffloadController {
mContentResolver, TETHER_OFFLOAD_DISABLED, defaultDisposition) != 0);
}
- private boolean started() {
- return mConfigInitialized && mControlInitialized;
- }
-
private boolean pushUpstreamParameters(String prevUpstream) {
- if (mUpstreamLinkProperties == null) {
+ final String iface = currentUpstreamInterface();
+
+ if (TextUtils.isEmpty(iface)) {
+ final boolean rval = mHwInterface.setUpstreamParameters("", ANYIP, ANYIP, null);
+ // Update stats after we've told the hardware to stop forwarding so
+ // we don't miss packets.
maybeUpdateStats(prevUpstream);
- return mHwInterface.setUpstreamParameters(null, null, null, null);
+ return rval;
}
// A stacked interface cannot be an upstream for hardware offload.
// Consequently, we examine only the primary interface name, look at
// getAddresses() rather than getAllAddresses(), and check getRoutes()
// rather than getAllRoutes().
- final String iface = mUpstreamLinkProperties.getInterfaceName();
final ArrayList<String> v6gateways = new ArrayList<>();
String v4addr = null;
String v4gateway = null;
@@ -433,10 +498,11 @@ public class OffloadController {
return success;
}
- private boolean computeAndPushLocalPrefixes() {
+ private boolean computeAndPushLocalPrefixes(UpdateType how) {
+ final boolean force = (how == UpdateType.FORCE);
final Set<String> localPrefixStrs = computeLocalPrefixStrings(
mExemptPrefixes, mUpstreamLinkProperties);
- if (mLastLocalPrefixStrs.equals(localPrefixStrs)) return true;
+ if (!force && mLastLocalPrefixStrs.equals(localPrefixStrs)) return true;
mLastLocalPrefixStrs = localPrefixStrs;
return mHwInterface.setLocalPrefixes(new ArrayList<>(localPrefixStrs));
@@ -483,10 +549,113 @@ public class OffloadController {
pw.println("Offload disabled");
return;
}
- pw.println("Offload HALs " + (started() ? "started" : "not started"));
+ final boolean isStarted = started();
+ pw.println("Offload HALs " + (isStarted ? "started" : "not started"));
LinkProperties lp = mUpstreamLinkProperties;
String upstream = (lp != null) ? lp.getInterfaceName() : null;
pw.println("Current upstream: " + upstream);
pw.println("Exempt prefixes: " + mLastLocalPrefixStrs);
+ pw.println("NAT timeout update callbacks received during the "
+ + (isStarted ? "current" : "last")
+ + " offload session: "
+ + mNatUpdateCallbacksReceived);
+ pw.println("NAT timeout update netlink errors during the "
+ + (isStarted ? "current" : "last")
+ + " offload session: "
+ + mNatUpdateNetlinkErrors);
+ }
+
+ private void updateNatTimeout(
+ int proto, String srcAddr, int srcPort, String dstAddr, int dstPort) {
+ final String protoName = protoNameFor(proto);
+ if (protoName == null) {
+ mLog.e("Unknown NAT update callback protocol: " + proto);
+ return;
+ }
+
+ final Inet4Address src = parseIPv4Address(srcAddr);
+ if (src == null) {
+ mLog.e("Failed to parse IPv4 address: " + srcAddr);
+ return;
+ }
+
+ if (!IpUtils.isValidUdpOrTcpPort(srcPort)) {
+ mLog.e("Invalid src port: " + srcPort);
+ return;
+ }
+
+ final Inet4Address dst = parseIPv4Address(dstAddr);
+ if (dst == null) {
+ mLog.e("Failed to parse IPv4 address: " + dstAddr);
+ return;
+ }
+
+ if (!IpUtils.isValidUdpOrTcpPort(dstPort)) {
+ mLog.e("Invalid dst port: " + dstPort);
+ return;
+ }
+
+ mNatUpdateCallbacksReceived++;
+ if (DBG) {
+ mLog.log(String.format("NAT timeout update: %s (%s, %s) -> (%s, %s)",
+ protoName, srcAddr, srcPort, dstAddr, dstPort));
+ }
+
+ final int timeoutSec = connectionTimeoutUpdateSecondsFor(proto);
+ final byte[] msg = ConntrackMessage.newIPv4TimeoutUpdateRequest(
+ proto, src, srcPort, dst, dstPort, timeoutSec);
+
+ try {
+ NetlinkSocket.sendOneShotKernelMessage(OsConstants.NETLINK_NETFILTER, msg);
+ } catch (ErrnoException e) {
+ mNatUpdateNetlinkErrors++;
+ mLog.e("Error updating NAT conntrack entry: " + e
+ + ", msg: " + NetlinkConstants.hexify(msg));
+ mLog.log("NAT timeout update callbacks received: " + mNatUpdateCallbacksReceived);
+ mLog.log("NAT timeout update netlink errors: " + mNatUpdateNetlinkErrors);
+ }
+ }
+
+ private static Inet4Address parseIPv4Address(String addrString) {
+ try {
+ final InetAddress ip = InetAddress.parseNumericAddress(addrString);
+ // TODO: Consider other sanitization steps here, including perhaps:
+ // not eql to 0.0.0.0
+ // not within 169.254.0.0/16
+ // not within ::ffff:0.0.0.0/96
+ // not within ::/96
+ // et cetera.
+ if (ip instanceof Inet4Address) {
+ return (Inet4Address) ip;
+ }
+ } catch (IllegalArgumentException iae) {}
+ return null;
+ }
+
+ private static String protoNameFor(int proto) {
+ // OsConstants values are not constant expressions; no switch statement.
+ if (proto == OsConstants.IPPROTO_UDP) {
+ return "UDP";
+ } else if (proto == OsConstants.IPPROTO_TCP) {
+ return "TCP";
+ }
+ return null;
+ }
+
+ private static int connectionTimeoutUpdateSecondsFor(int proto) {
+ // TODO: Replace this with more thoughtful work, perhaps reading from
+ // and maybe writing to any required
+ //
+ // /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_*
+ // /proc/sys/net/netfilter/nf_conntrack_udp_timeout{,_stream}
+ //
+ // entries. TBD.
+ if (proto == OsConstants.IPPROTO_TCP) {
+ // Cf. /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
+ return 432000;
+ } else {
+ // Cf. /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream
+ return 180;
+ }
}
}
diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
index 865a98902d0b..76195c4ac7d4 100644
--- a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
+++ b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
@@ -21,10 +21,12 @@ import static com.android.internal.util.BitUtils.uint16;
import android.hardware.tetheroffload.control.V1_0.IOffloadControl;
import android.hardware.tetheroffload.control.V1_0.ITetheringOffloadCallback;
import android.hardware.tetheroffload.control.V1_0.NatTimeoutUpdate;
+import android.hardware.tetheroffload.control.V1_0.NetworkProtocol;
import android.hardware.tetheroffload.control.V1_0.OffloadCallbackEvent;
import android.os.Handler;
import android.os.RemoteException;
import android.net.util.SharedLog;
+import android.system.OsConstants;
import java.util.ArrayList;
@@ -107,6 +109,10 @@ public class OffloadHardwareInterface {
mLog.e("tethering offload control not supported: " + e);
return false;
}
+ if (mOffloadControl == null) {
+ mLog.e("tethering IOffloadControl.getService() returned null");
+ return false;
+ }
}
final String logmsg = String.format("initOffloadControl(%s)",
@@ -327,13 +333,24 @@ public class OffloadHardwareInterface {
public void updateTimeout(NatTimeoutUpdate params) {
handler.post(() -> {
controlCb.onNatTimeoutUpdate(
- params.proto,
+ networkProtocolToOsConstant(params.proto),
params.src.addr, uint16(params.src.port),
params.dst.addr, uint16(params.dst.port));
});
}
}
+ private static int networkProtocolToOsConstant(int proto) {
+ switch (proto) {
+ case NetworkProtocol.TCP: return OsConstants.IPPROTO_TCP;
+ case NetworkProtocol.UDP: return OsConstants.IPPROTO_UDP;
+ default:
+ // The caller checks this value and will log an error. Just make
+ // sure it won't collide with valid OsContants.IPPROTO_* values.
+ return -Math.abs(proto);
+ }
+ }
+
private static class CbResults {
boolean success;
String errMsg;
diff --git a/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java b/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java
index 57d2502c6dc7..17adb1a74e30 100644
--- a/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java
+++ b/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java
@@ -27,6 +27,7 @@ import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.NetworkUtils;
import android.net.RouteInfo;
+import android.net.ip.InterfaceController;
import android.net.ip.RouterAdvertisementDaemon;
import android.net.ip.RouterAdvertisementDaemon.RaParams;
import android.net.util.NetdService;
@@ -107,8 +108,10 @@ public class TetherInterfaceStateMachine extends StateMachine {
private final SharedLog mLog;
private final INetworkManagementService mNMService;
+ private final INetd mNetd;
private final INetworkStatsService mStatsService;
private final IControlsTethering mTetherController;
+ private final InterfaceController mInterfaceCtrl;
private final String mIfaceName;
private final int mInterfaceType;
@@ -136,8 +139,11 @@ public class TetherInterfaceStateMachine extends StateMachine {
super(ifaceName, looper);
mLog = log.forSubComponent(ifaceName);
mNMService = nMService;
+ // TODO: This should be passed in for testability.
+ mNetd = NetdService.getInstance();
mStatsService = statsService;
mTetherController = tetherController;
+ mInterfaceCtrl = new InterfaceController(ifaceName, nMService, mNetd, mLog);
mIfaceName = ifaceName;
mInterfaceType = interfaceType;
mLinkProperties = new LinkProperties();
@@ -179,6 +185,7 @@ public class TetherInterfaceStateMachine extends StateMachine {
private void stopIPv4() { configureIPv4(false); }
+ // TODO: Refactor this in terms of calls to InterfaceController.
private boolean configureIPv4(boolean enabled) {
if (VDBG) Log.d(TAG, "configureIPv4(" + enabled + ")");
@@ -381,8 +388,8 @@ public class TetherInterfaceStateMachine extends StateMachine {
private void configureLocalIPv6Dns(
HashSet<Inet6Address> deprecatedDnses, HashSet<Inet6Address> newDnses) {
- final INetd netd = NetdService.getInstance();
- if (netd == null) {
+ // TODO: Is this really necessary? Can we not fail earlier if INetd cannot be located?
+ if (mNetd == null) {
if (newDnses != null) newDnses.clear();
mLog.e("No netd service instance available; not setting local IPv6 addresses");
return;
@@ -391,11 +398,8 @@ public class TetherInterfaceStateMachine extends StateMachine {
// [1] Remove deprecated local DNS IP addresses.
if (!deprecatedDnses.isEmpty()) {
for (Inet6Address dns : deprecatedDnses) {
- final String dnsString = dns.getHostAddress();
- try {
- netd.interfaceDelAddress(mIfaceName, dnsString, RFC7421_PREFIX_LENGTH);
- } catch (ServiceSpecificException | RemoteException e) {
- mLog.e("Failed to remove local dns IP " + dnsString + ": " + e);
+ if (!mInterfaceCtrl.removeAddress(dns, RFC7421_PREFIX_LENGTH)) {
+ mLog.e("Failed to remove local dns IP " + dns);
}
mLinkProperties.removeLinkAddress(new LinkAddress(dns, RFC7421_PREFIX_LENGTH));
@@ -410,11 +414,8 @@ public class TetherInterfaceStateMachine extends StateMachine {
}
for (Inet6Address dns : addedDnses) {
- final String dnsString = dns.getHostAddress();
- try {
- netd.interfaceAddAddress(mIfaceName, dnsString, RFC7421_PREFIX_LENGTH);
- } catch (ServiceSpecificException | RemoteException e) {
- mLog.e("Failed to add local dns IP " + dnsString + ": " + e);
+ if (!mInterfaceCtrl.addAddress(dns, RFC7421_PREFIX_LENGTH)) {
+ mLog.e("Failed to add local dns IP " + dns);
newDnses.remove(dns);
}
@@ -423,7 +424,7 @@ public class TetherInterfaceStateMachine extends StateMachine {
}
try {
- netd.tetherApplyDnsInterfaces();
+ mNetd.tetherApplyDnsInterfaces();
} catch (ServiceSpecificException | RemoteException e) {
mLog.e("Failed to update local DNS caching server");
if (newDnses != null) newDnses.clear();
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 51ed6b2c2937..205e8283cc55 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -99,6 +99,7 @@ import com.android.server.backup.AccountSyncSettingsBackupHelper;
import com.android.server.content.SyncStorageEngine.AuthorityInfo;
import com.android.server.content.SyncStorageEngine.EndPoint;
import com.android.server.content.SyncStorageEngine.OnSyncRequestListener;
+import com.android.server.job.JobSchedulerInternal.JobStorePersistStats;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -142,6 +143,7 @@ public class SyncManager {
private static final boolean DEBUG_ACCOUNT_ACCESS = false;
+ // Only do the check on a debuggable build.
private static final boolean ENABLE_SUSPICIOUS_CHECK = Build.IS_DEBUGGABLE;
/** Delay a sync due to local changes this long. In milliseconds */
@@ -403,12 +405,21 @@ public class SyncManager {
return (networkInfo != null) && networkInfo.isConnected();
}
+ private String getJobStats() {
+ JobSchedulerInternal js = LocalServices.getService(JobSchedulerInternal.class);
+ return "JobStats: "
+ + ((js == null) ? "(JobSchedulerInternal==null)"
+ : js.getPersistStats().toString());
+ }
+
private BroadcastReceiver mShutdownIntentReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.w(TAG, "Writing sync state before shutdown...");
getSyncStorageEngine().writeAllState();
+
+ mLogger.log(getJobStats());
mLogger.log("Shutting down.");
}
};
@@ -504,13 +515,11 @@ public class SyncManager {
}
}
}
- final int totalJobs = (mJobSchedulerInternal == null)
- ? -1 : mJobSchedulerInternal.countJobs();
final String summary = "Loaded persisted syncs: "
+ numPersistedPeriodicSyncs + " periodic syncs, "
+ numPersistedOneshotSyncs + " oneshot syncs, "
+ (pendingJobs.size()) + " total system server jobs, "
- + totalJobs + " total jobs.";
+ + getJobStats();
Slog.i(TAG, summary);
mLogger.log(summary);
@@ -529,9 +538,11 @@ public class SyncManager {
* @return whether the device most likely has some periodic syncs.
*/
private boolean likelyHasPeriodicSyncs() {
- // STOPSHIP Remove the google specific string.
try {
- return AccountManager.get(mContext).getAccountsByType("com.google").length > 0;
+ // Each sync adapter has a daily periodic sync by default, but sync adapters can remove
+ // them by themselves. So here, we use an arbitrary threshold. If there are more than
+ // this many sync endpoints, surely one of them should have a periodic sync...
+ return mSyncStorageEngine.getAuthorityCount() >= 6;
} catch (Throwable th) {
// Just in case.
}
@@ -720,7 +731,7 @@ public class SyncManager {
// the account (they run before) which is the genie is out of the bottle.
whiteListExistingSyncAdaptersIfNeeded();
- mLogger.log("Sync manager initialized.");
+ mLogger.log("Sync manager initialized: " + Build.FINGERPRINT);
}
public void onStartUser(int userHandle) {
@@ -3767,48 +3778,10 @@ public class SyncManager {
}
if (op.isPeriodic) {
mLogger.log("Removing periodic sync ", op, " for ", why);
-
- if (ENABLE_SUSPICIOUS_CHECK && isSuspiciousPeriodicSyncRemoval(op)) {
- wtfWithLog("Suspicious removal of " + op + " for " + why);
- }
}
getJobScheduler().cancel(op.jobId);
}
- private boolean isSuspiciousPeriodicSyncRemoval(SyncOperation op) {
- // STOPSHIP Remove the google specific string.
- if (!op.isPeriodic){
- return false;
- }
- boolean found = false;
- for (UserInfo user : UserManager.get(mContext).getUsers(/*excludeDying=*/ true)) {
- if (op.target.userId == user.id) {
- found = true;
- break;
- }
- }
- if (!found) {
- return false; // User is being removed, okay.
- }
- switch (op.target.provider) {
- case "gmail-ls":
- case "com.android.contacts.metadata":
- break;
- default:
- return false;
- }
- final Account account = op.target.account;
- final Account[] accounts = AccountManager.get(mContext)
- .getAccountsByTypeAsUser(account.type, UserHandle.of(op.target.userId));
- for (Account a : accounts) {
- if (a.equals(account)) {
- return true; // Account still exists. Suspicious!
- }
- }
- // Account no longer exists. Makes sense...
- return false;
- }
-
private void wtfWithLog(String message) {
Slog.wtf(TAG, message);
mLogger.log("WTF: ", message);
diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java
index 7b277c06328e..3591871f5386 100644
--- a/services/core/java/com/android/server/content/SyncStorageEngine.java
+++ b/services/core/java/com/android/server/content/SyncStorageEngine.java
@@ -911,6 +911,12 @@ public class SyncStorageEngine extends Handler {
}
}
+ public int getAuthorityCount() {
+ synchronized (mAuthorities) {
+ return mAuthorities.size();
+ }
+ }
+
public AuthorityInfo getAuthority(int authorityId) {
synchronized (mAuthorities) {
return mAuthorities.get(authorityId);
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 8269042da24a..d0a1d9e63141 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -31,6 +31,8 @@ import android.Manifest;
import android.annotation.NonNull;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.graphics.Point;
import android.hardware.SensorManager;
import android.hardware.display.DisplayManagerGlobal;
import android.hardware.display.DisplayManagerInternal;
@@ -211,6 +213,12 @@ public final class DisplayManagerService extends SystemService {
// The virtual display adapter, or null if not registered.
private VirtualDisplayAdapter mVirtualDisplayAdapter;
+ // The stable device screen height and width. These are not tied to a specific display, even
+ // the default display, because they need to be stable over the course of the device's entire
+ // life, even if the default display changes (e.g. a new monitor is plugged into a PC-like
+ // device).
+ private Point mStableDisplaySize = new Point();
+
// Viewports of the default display and the display that should receive touch
// input from an external source. Used by the input system.
private final DisplayViewport mDefaultViewport = new DisplayViewport();
@@ -284,7 +292,10 @@ public final class DisplayManagerService extends SystemService {
// adapter is up so that we have it's configuration. We could load it lazily, but since
// we're going to have to read it in eventually we may as well do it here rather than after
// we've waited for the display to register itself with us.
- mPersistentDataStore.loadIfNeeded();
+ synchronized(mSyncRoot) {
+ mPersistentDataStore.loadIfNeeded();
+ loadStableDisplayValuesLocked();
+ }
mHandler.sendEmptyMessage(MSG_REGISTER_DEFAULT_DISPLAY_ADAPTERS);
publishBinderService(Context.DISPLAY_SERVICE, new BinderService(),
@@ -346,6 +357,34 @@ public final class DisplayManagerService extends SystemService {
return mHandler;
}
+ private void loadStableDisplayValuesLocked() {
+ final Point size = mPersistentDataStore.getStableDisplaySize();
+ if (size.x > 0 && size.y > 0) {
+ // Just set these values directly so we don't write the display persistent data again
+ // unnecessarily
+ mStableDisplaySize.set(size.x, size.y);
+ } else {
+ final Resources res = mContext.getResources();
+ final int width = res.getInteger(
+ com.android.internal.R.integer.config_stableDeviceDisplayWidth);
+ final int height = res.getInteger(
+ com.android.internal.R.integer.config_stableDeviceDisplayHeight);
+ if (width > 0 && height > 0) {
+ setStableDisplaySizeLocked(width, height);
+ }
+ }
+ }
+
+ private Point getStableDisplaySizeInternal() {
+ Point r = new Point();
+ synchronized (mSyncRoot) {
+ if (mStableDisplaySize.x > 0 && mStableDisplaySize.y > 0) {
+ r.set(mStableDisplaySize.x, mStableDisplaySize.y);
+ }
+ }
+ return r;
+ }
+
private void registerDisplayTransactionListenerInternal(
DisplayTransactionListener listener) {
// List is self-synchronized copy-on-write.
@@ -770,18 +809,6 @@ public final class DisplayManagerService extends SystemService {
if (work != null) {
work.run();
}
- if (display != null && display.getPrimaryDisplayDeviceLocked() == device) {
- int colorMode = mPersistentDataStore.getColorMode(device);
- if (colorMode == Display.COLOR_MODE_INVALID) {
- if ((device.getDisplayDeviceInfoLocked().flags
- & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0) {
- colorMode = mDefaultDisplayDefaultColorMode;
- } else {
- colorMode = Display.COLOR_MODE_DEFAULT;
- }
- }
- display.setRequestedColorModeLocked(colorMode);
- }
scheduleTraversalLocked(false);
}
@@ -886,6 +913,11 @@ public final class DisplayManagerService extends SystemService {
return null;
}
+ configureColorModeLocked(display, device);
+ if (isDefault) {
+ recordStableDisplayStatsIfNeededLocked(display);
+ }
+
mLogicalDisplays.put(displayId, display);
// Wake up waitForDefaultDisplay.
@@ -907,6 +939,40 @@ public final class DisplayManagerService extends SystemService {
return displayId;
}
+ private void configureColorModeLocked(LogicalDisplay display, DisplayDevice device) {
+ if (display.getPrimaryDisplayDeviceLocked() == device) {
+ int colorMode = mPersistentDataStore.getColorMode(device);
+ if (colorMode == Display.COLOR_MODE_INVALID) {
+ if ((device.getDisplayDeviceInfoLocked().flags
+ & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0) {
+ colorMode = mDefaultDisplayDefaultColorMode;
+ } else {
+ colorMode = Display.COLOR_MODE_DEFAULT;
+ }
+ }
+ display.setRequestedColorModeLocked(colorMode);
+ }
+ }
+
+ // If we've never recorded stable device stats for this device before and they aren't
+ // explicitly configured, go ahead and record the stable device stats now based on the status
+ // of the default display at first boot.
+ private void recordStableDisplayStatsIfNeededLocked(LogicalDisplay d) {
+ if (mStableDisplaySize.x <= 0 && mStableDisplaySize.y <= 0) {
+ DisplayInfo info = d.getDisplayInfoLocked();
+ setStableDisplaySizeLocked(info.getNaturalWidth(), info.getNaturalHeight());
+ }
+ }
+
+ private void setStableDisplaySizeLocked(int width, int height) {
+ mStableDisplaySize = new Point(width, height);
+ try {
+ mPersistentDataStore.setStableDisplaySize(mStableDisplaySize);
+ } finally {
+ mPersistentDataStore.saveIfNeeded();
+ }
+ }
+
// Updates all existing logical displays given the current set of display devices.
// Removes invalid logical displays.
// Sends notifications if needed.
@@ -1166,6 +1232,8 @@ public final class DisplayManagerService extends SystemService {
pw.println(" mDefaultDisplayDefaultColorMode=" + mDefaultDisplayDefaultColorMode);
pw.println(" mSingleDisplayDemoMode=" + mSingleDisplayDemoMode);
pw.println(" mWifiDisplayScanRequestCount=" + mWifiDisplayScanRequestCount);
+ pw.println(" mStableDisplaySize=" + mStableDisplaySize);
+
IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
ipw.increaseIndent();
@@ -1378,6 +1446,19 @@ public final class DisplayManagerService extends SystemService {
}
}
+ /**
+ * Returns the stable device display size, in pixels.
+ */
+ @Override // Binder call
+ public Point getStableDisplaySize() {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return getStableDisplaySizeInternal();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
@Override // Binder call
public void registerCallback(IDisplayManagerCallback callback) {
if (callback == null) {
diff --git a/services/core/java/com/android/server/display/NightDisplayService.java b/services/core/java/com/android/server/display/NightDisplayService.java
index b3cf57b3564a..9cf136720881 100644
--- a/services/core/java/com/android/server/display/NightDisplayService.java
+++ b/services/core/java/com/android/server/display/NightDisplayService.java
@@ -48,8 +48,10 @@ import com.android.server.twilight.TwilightListener;
import com.android.server.twilight.TwilightManager;
import com.android.server.twilight.TwilightState;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.Calendar;
import java.util.TimeZone;
import static com.android.server.display.DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY;
@@ -110,23 +112,7 @@ public final class NightDisplayService extends SystemService
private float[] mMatrixNight = new float[16];
- /**
- * These coefficients were generated by an LLS quadratic regression fitted to the
- * overdetermined system based on experimental readings (and subsequent conversion from xy
- * chromaticity coordinates to gamma-corrected RGB values): { (temperature, R, G, B) } ->
- * { (7304, 1.0, 1.0, 1.0), (4082, 1.0, 0.857, 0.719), (2850, 1.0, .754, .516),
- * (2596, 1.0, 0.722, 0.454) }. The 3x3 matrix is formatted like so:
- * <table>
- * <tr><td>R: a coefficient</td><td>G: a coefficient</td><td>B: a coefficient</td></tr>
- * <tr><td>R: b coefficient</td><td>G: b coefficient</td><td>B: b coefficient</td></tr>
- * <tr><td>R: y-intercept</td><td>G: y-intercept</td><td>B: y-intercept</td></tr>
- * </table>
- */
- private static final float[] mColorTempCoefficients = new float[] {
- 0.0f, -0.00000000962353339f, -0.0000000189359041f,
- 0.0f, 0.000153045476f, 0.000302412211f,
- 1.0f, 0.390782778f, -0.198650895f
- };
+ private final float[] mColorTempCoefficients = new float[9];
private int mCurrentUser = UserHandle.USER_NULL;
private ContentObserver mUserSetupObserver;
@@ -140,6 +126,12 @@ public final class NightDisplayService extends SystemService
public NightDisplayService(Context context) {
super(context);
mHandler = new Handler(Looper.getMainLooper());
+
+ final String[] coefficients = context.getResources().getStringArray(
+ com.android.internal.R.array.config_nightDisplayColorTemperatureCoefficients);
+ for (int i = 0; i < 9 && i < coefficients.length; i++) {
+ mColorTempCoefficients[i] = Float.parseFloat(coefficients[i]);
+ }
}
@Override
@@ -316,7 +308,7 @@ public final class NightDisplayService extends SystemService
}
@Override
- public void onCustomStartTimeChanged(NightDisplayController.LocalTime startTime) {
+ public void onCustomStartTimeChanged(LocalTime startTime) {
Slog.d(TAG, "onCustomStartTimeChanged: startTime=" + startTime);
if (mAutoMode != null) {
@@ -325,7 +317,7 @@ public final class NightDisplayService extends SystemService
}
@Override
- public void onCustomEndTimeChanged(NightDisplayController.LocalTime endTime) {
+ public void onCustomEndTimeChanged(LocalTime endTime) {
Slog.d(TAG, "onCustomEndTimeChanged: endTime=" + endTime);
if (mAutoMode != null) {
@@ -414,16 +406,46 @@ public final class NightDisplayService extends SystemService
final float squareTemperature = colorTemperature * colorTemperature;
final float red = squareTemperature * mColorTempCoefficients[0]
- + colorTemperature * mColorTempCoefficients[3] + mColorTempCoefficients[6];
- final float green = squareTemperature * mColorTempCoefficients[1]
- + colorTemperature * mColorTempCoefficients[4] + mColorTempCoefficients[7];
- final float blue = squareTemperature * mColorTempCoefficients[2]
- + colorTemperature * mColorTempCoefficients[5] + mColorTempCoefficients[8];
+ + colorTemperature * mColorTempCoefficients[1] + mColorTempCoefficients[2];
+ final float green = squareTemperature * mColorTempCoefficients[3]
+ + colorTemperature * mColorTempCoefficients[4] + mColorTempCoefficients[5];
+ final float blue = squareTemperature * mColorTempCoefficients[6]
+ + colorTemperature * mColorTempCoefficients[7] + mColorTempCoefficients[8];
outTemp[0] = red;
outTemp[5] = green;
outTemp[10] = blue;
}
+ /**
+ * Returns the first date time corresponding to the local time that occurs before the
+ * provided date time.
+ *
+ * @param compareTime the LocalDateTime to compare against
+ * @return the prior LocalDateTime corresponding to this local time
+ */
+ public static LocalDateTime getDateTimeBefore(LocalTime localTime, LocalDateTime compareTime) {
+ final LocalDateTime ldt = LocalDateTime.of(compareTime.getYear(), compareTime.getMonth(),
+ compareTime.getDayOfMonth(), localTime.getHour(), localTime.getMinute());
+
+ // Check if the local time has passed, if so return the same time yesterday.
+ return ldt.isAfter(compareTime) ? ldt.minusDays(1) : ldt;
+ }
+
+ /**
+ * Returns the first date time corresponding to this local time that occurs after the
+ * provided date time.
+ *
+ * @param compareTime the LocalDateTime to compare against
+ * @return the next LocalDateTime corresponding to this local time
+ */
+ public static LocalDateTime getDateTimeAfter(LocalTime localTime, LocalDateTime compareTime) {
+ final LocalDateTime ldt = LocalDateTime.of(compareTime.getYear(), compareTime.getMonth(),
+ compareTime.getDayOfMonth(), localTime.getHour(), localTime.getMinute());
+
+ // Check if the local time has passed, if so return the same time tomorrow.
+ return ldt.isBefore(compareTime) ? ldt.plusDays(1) : ldt;
+ }
+
private abstract class AutoMode implements NightDisplayController.Callback {
public abstract void onStart();
@@ -435,10 +457,10 @@ public final class NightDisplayService extends SystemService
private final AlarmManager mAlarmManager;
private final BroadcastReceiver mTimeChangedReceiver;
- private NightDisplayController.LocalTime mStartTime;
- private NightDisplayController.LocalTime mEndTime;
+ private LocalTime mStartTime;
+ private LocalTime mEndTime;
- private Calendar mLastActivatedTime;
+ private LocalDateTime mLastActivatedTime;
CustomAutoMode() {
mAlarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
@@ -451,31 +473,15 @@ public final class NightDisplayService extends SystemService
}
private void updateActivated() {
- final Calendar now = Calendar.getInstance();
- final Calendar startTime = mStartTime.getDateTimeBefore(now);
- final Calendar endTime = mEndTime.getDateTimeAfter(startTime);
+ final LocalDateTime now = LocalDateTime.now();
+ final LocalDateTime start = getDateTimeBefore(mStartTime, now);
+ final LocalDateTime end = getDateTimeAfter(mEndTime, start);
+ boolean activate = now.isBefore(end);
- boolean activate = now.before(endTime);
if (mLastActivatedTime != null) {
- // Convert mLastActivatedTime to the current timezone if needed.
- final TimeZone currentTimeZone = now.getTimeZone();
- if (!currentTimeZone.equals(mLastActivatedTime.getTimeZone())) {
- final int year = mLastActivatedTime.get(Calendar.YEAR);
- final int dayOfYear = mLastActivatedTime.get(Calendar.DAY_OF_YEAR);
- final int hourOfDay = mLastActivatedTime.get(Calendar.HOUR_OF_DAY);
- final int minute = mLastActivatedTime.get(Calendar.MINUTE);
-
- mLastActivatedTime.setTimeZone(currentTimeZone);
- mLastActivatedTime.set(Calendar.YEAR, year);
- mLastActivatedTime.set(Calendar.DAY_OF_YEAR, dayOfYear);
- mLastActivatedTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
- mLastActivatedTime.set(Calendar.MINUTE, minute);
- }
-
// Maintain the existing activated state if within the current period.
- if (mLastActivatedTime.before(now)
- && mLastActivatedTime.after(startTime)
- && (mLastActivatedTime.after(endTime) || now.before(endTime))) {
+ if (mLastActivatedTime.isBefore(now) && mLastActivatedTime.isAfter(start)
+ && (mLastActivatedTime.isAfter(end) || now.isBefore(end))) {
activate = mController.isActivated();
}
}
@@ -483,14 +489,16 @@ public final class NightDisplayService extends SystemService
if (mIsActivated == null || mIsActivated != activate) {
mController.setActivated(activate);
}
+
updateNextAlarm(mIsActivated, now);
}
- private void updateNextAlarm(@Nullable Boolean activated, @NonNull Calendar now) {
+ private void updateNextAlarm(@Nullable Boolean activated, @NonNull LocalDateTime now) {
if (activated != null) {
- final Calendar next = activated ? mEndTime.getDateTimeAfter(now)
- : mStartTime.getDateTimeAfter(now);
- mAlarmManager.setExact(AlarmManager.RTC, next.getTimeInMillis(), TAG, this, null);
+ final LocalDateTime next = activated ? getDateTimeAfter(mEndTime, now)
+ : getDateTimeAfter(mStartTime, now);
+ final long millis = next.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
+ mAlarmManager.setExact(AlarmManager.RTC, millis, TAG, this, null);
}
}
@@ -520,18 +528,18 @@ public final class NightDisplayService extends SystemService
@Override
public void onActivated(boolean activated) {
mLastActivatedTime = mController.getLastActivatedTime();
- updateNextAlarm(activated, Calendar.getInstance());
+ updateNextAlarm(activated, LocalDateTime.now());
}
@Override
- public void onCustomStartTimeChanged(NightDisplayController.LocalTime startTime) {
+ public void onCustomStartTimeChanged(LocalTime startTime) {
mStartTime = startTime;
mLastActivatedTime = null;
updateActivated();
}
@Override
- public void onCustomEndTimeChanged(NightDisplayController.LocalTime endTime) {
+ public void onCustomEndTimeChanged(LocalTime endTime) {
mEndTime = endTime;
mLastActivatedTime = null;
updateActivated();
@@ -560,15 +568,14 @@ public final class NightDisplayService extends SystemService
}
boolean activate = state.isNight();
- final Calendar lastActivatedTime = mController.getLastActivatedTime();
+ final LocalDateTime lastActivatedTime = mController.getLastActivatedTime();
if (lastActivatedTime != null) {
- final Calendar now = Calendar.getInstance();
- final Calendar sunrise = state.sunrise();
- final Calendar sunset = state.sunset();
-
+ final LocalDateTime now = LocalDateTime.now();
+ final LocalDateTime sunrise = state.sunrise();
+ final LocalDateTime sunset = state.sunset();
// Maintain the existing activated state if within the current period.
- if (lastActivatedTime.before(now)
- && (lastActivatedTime.after(sunrise) ^ lastActivatedTime.after(sunset))) {
+ if (lastActivatedTime.isBefore(now) && (lastActivatedTime.isBefore(sunrise)
+ ^ lastActivatedTime.isBefore(sunset))) {
activate = mController.isActivated();
}
}
diff --git a/services/core/java/com/android/server/display/PersistentDataStore.java b/services/core/java/com/android/server/display/PersistentDataStore.java
index 47701b99860a..34c8e22a9f1e 100644
--- a/services/core/java/com/android/server/display/PersistentDataStore.java
+++ b/services/core/java/com/android/server/display/PersistentDataStore.java
@@ -23,6 +23,7 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
+import android.graphics.Point;
import android.hardware.display.WifiDisplay;
import android.util.AtomicFile;
import android.util.Slog;
@@ -60,6 +61,10 @@ import libcore.util.Objects;
* &lt;color-mode>0&lt;/color-mode>
* &lt;/display>
* &lt;/display-states>
+ * &lt;stable-device-values>
+ * &lt;stable-display-height>1920&lt;stable-display-height>
+ * &lt;stable-display-width>1080&lt;stable-display-width>
+ * &lt;/stable-device-values>
* &lt;/display-manager-state>
* </code>
*
@@ -75,6 +80,9 @@ final class PersistentDataStore {
private final HashMap<String, DisplayState> mDisplayStates =
new HashMap<String, DisplayState>();
+ // Display values which should be stable across the device's lifetime.
+ private final StableDeviceValues mStableDeviceValues = new StableDeviceValues();
+
// The atomic file used to safely read or write the file.
private final AtomicFile mAtomicFile;
@@ -162,6 +170,7 @@ final class PersistentDataStore {
}
public boolean forgetWifiDisplay(String deviceAddress) {
+ loadIfNeeded();
int index = findRememberedWifiDisplay(deviceAddress);
if (index >= 0) {
mRememberedWifiDisplays.remove(index);
@@ -204,6 +213,18 @@ final class PersistentDataStore {
return false;
}
+ public Point getStableDisplaySize() {
+ loadIfNeeded();
+ return mStableDeviceValues.getDisplaySize();
+ }
+
+ public void setStableDisplaySize(Point size) {
+ loadIfNeeded();
+ if (mStableDeviceValues.setDisplaySize(size)) {
+ setDirty();
+ }
+ }
+
private DisplayState getDisplayState(String uniqueId, boolean createIfAbsent) {
loadIfNeeded();
DisplayState state = mDisplayStates.get(uniqueId);
@@ -290,6 +311,9 @@ final class PersistentDataStore {
if (parser.getName().equals("display-states")) {
loadDisplaysFromXml(parser);
}
+ if (parser.getName().equals("stable-device-values")) {
+ mStableDeviceValues.loadFromXml(parser);
+ }
}
}
@@ -363,6 +387,9 @@ final class PersistentDataStore {
serializer.endTag(null, "display");
}
serializer.endTag(null, "display-states");
+ serializer.startTag(null, "stable-device-values");
+ mStableDeviceValues.saveToXml(serializer);
+ serializer.endTag(null, "stable-device-values");
serializer.endTag(null, "display-manager-state");
serializer.endDocument();
}
@@ -382,6 +409,8 @@ final class PersistentDataStore {
pw.println(" " + i++ + ": " + entry.getKey());
entry.getValue().dump(pw, " ");
}
+ pw.println(" StableDeviceValues:");
+ mStableDeviceValues.dump(pw, " ");
}
private static final class DisplayState {
@@ -417,8 +446,66 @@ final class PersistentDataStore {
serializer.endTag(null, "color-mode");
}
- private void dump(final PrintWriter pw, final String prefix) {
+ public void dump(final PrintWriter pw, final String prefix) {
pw.println(prefix + "ColorMode=" + mColorMode);
}
}
+
+ private static final class StableDeviceValues {
+ private int mWidth;
+ private int mHeight;
+
+ private Point getDisplaySize() {
+ return new Point(mWidth, mHeight);
+ }
+
+ public boolean setDisplaySize(Point r) {
+ if (mWidth != r.x || mHeight != r.y) {
+ mWidth = r.x;
+ mHeight = r.y;
+ return true;
+ }
+ return false;
+ }
+
+ public void loadFromXml(XmlPullParser parser) throws IOException, XmlPullParserException {
+ final int outerDepth = parser.getDepth();
+ while (XmlUtils.nextElementWithin(parser, outerDepth)) {
+ switch (parser.getName()) {
+ case "stable-display-width":
+ mWidth = loadIntValue(parser);
+ break;
+ case "stable-display-height":
+ mHeight = loadIntValue(parser);
+ break;
+ }
+ }
+ }
+
+ private static int loadIntValue(XmlPullParser parser)
+ throws IOException, XmlPullParserException {
+ try {
+ String value = parser.nextText();
+ return Integer.parseInt(value);
+ } catch (NumberFormatException nfe) {
+ return 0;
+ }
+ }
+
+ public void saveToXml(XmlSerializer serializer) throws IOException {
+ if (mWidth > 0 && mHeight > 0) {
+ serializer.startTag(null, "stable-display-width");
+ serializer.text(Integer.toString(mWidth));
+ serializer.endTag(null, "stable-display-width");
+ serializer.startTag(null, "stable-display-height");
+ serializer.text(Integer.toString(mHeight));
+ serializer.endTag(null, "stable-display-height");
+ }
+ }
+
+ public void dump(final PrintWriter pw, final String prefix) {
+ pw.println(prefix + "StableDisplayWidth=" + mWidth);
+ pw.println(prefix + "StableDisplayHeight=" + mHeight);
+ }
+ }
}
diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java
index b1c165ef048d..0e1252eea88e 100644
--- a/services/core/java/com/android/server/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java
@@ -1338,6 +1338,8 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
set.put("rejectCrypto", (cryptoStats != null) ? cryptoStats.reject : 0);
set.put("acquireCrypto", (cryptoStats != null) ? cryptoStats.acquire : 0);
set.put("lockoutCrypto", (cryptoStats != null) ? cryptoStats.lockout : 0);
+ set.put("permanentLockoutCrypto",
+ (cryptoStats != null) ? cryptoStats.permanentLockout : 0);
sets.put(set);
}
@@ -1367,7 +1369,7 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
proto.write(FingerprintActionStatsProto.REJECT, normal.reject);
proto.write(FingerprintActionStatsProto.ACQUIRE, normal.acquire);
proto.write(FingerprintActionStatsProto.LOCKOUT, normal.lockout);
- proto.write(FingerprintActionStatsProto.LOCKOUT_PERMANENT, normal.lockout);
+ proto.write(FingerprintActionStatsProto.LOCKOUT_PERMANENT, normal.permanentLockout);
proto.end(countsToken);
}
@@ -1380,7 +1382,7 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
proto.write(FingerprintActionStatsProto.REJECT, crypto.reject);
proto.write(FingerprintActionStatsProto.ACQUIRE, crypto.acquire);
proto.write(FingerprintActionStatsProto.LOCKOUT, crypto.lockout);
- proto.write(FingerprintActionStatsProto.LOCKOUT_PERMANENT, crypto.lockout);
+ proto.write(FingerprintActionStatsProto.LOCKOUT_PERMANENT, crypto.permanentLockout);
proto.end(countsToken);
}
diff --git a/services/core/java/com/android/server/job/JobSchedulerInternal.java b/services/core/java/com/android/server/job/JobSchedulerInternal.java
index d52b3b760c11..095526dc52fc 100644
--- a/services/core/java/com/android/server/job/JobSchedulerInternal.java
+++ b/services/core/java/com/android/server/job/JobSchedulerInternal.java
@@ -38,8 +38,44 @@ public interface JobSchedulerInternal {
void removeBackingUpUid(int uid);
void clearAllBackingUpUids();
+ JobStorePersistStats getPersistStats();
+
/**
- * @return the total number of jobs across all UIDs.
+ * Stats about the first load after boot and the most recent save.
+ * STOPSHIP Remove it and the relevant code once b/64536115 is fixed.
*/
- int countJobs();
+ public class JobStorePersistStats {
+ public int countAllJobsLoaded = -1;
+ public int countSystemServerJobsLoaded = -1;
+ public int countSystemSyncManagerJobsLoaded = -1;
+
+ public int countAllJobsSaved = -1;
+ public int countSystemServerJobsSaved = -1;
+ public int countSystemSyncManagerJobsSaved = -1;
+
+ public JobStorePersistStats() {
+ }
+
+ public JobStorePersistStats(JobStorePersistStats source) {
+ countAllJobsLoaded = source.countAllJobsLoaded;
+ countSystemServerJobsLoaded = source.countSystemServerJobsLoaded;
+ countSystemSyncManagerJobsLoaded = source.countSystemSyncManagerJobsLoaded;
+
+ countAllJobsSaved = source.countAllJobsSaved;
+ countSystemServerJobsSaved = source.countSystemServerJobsSaved;
+ countSystemSyncManagerJobsSaved = source.countSystemSyncManagerJobsSaved;
+ }
+
+ @Override
+ public String toString() {
+ return "FirstLoad: "
+ + countAllJobsLoaded + "/"
+ + countSystemServerJobsLoaded + "/"
+ + countSystemSyncManagerJobsLoaded
+ + " LastSave: "
+ + countAllJobsSaved + "/"
+ + countSystemServerJobsSaved + "/"
+ + countSystemSyncManagerJobsSaved;
+ }
+ }
}
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java
index 260f05f809cf..ac8079417426 100644
--- a/services/core/java/com/android/server/job/JobSchedulerService.java
+++ b/services/core/java/com/android/server/job/JobSchedulerService.java
@@ -228,7 +228,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
private static final String KEY_MAX_WORK_RESCHEDULE_COUNT = "max_work_reschedule_count";
private static final String KEY_MIN_LINEAR_BACKOFF_TIME = "min_linear_backoff_time";
private static final String KEY_MIN_EXP_BACKOFF_TIME = "min_exp_backoff_time";
- private static final String KEY_BG_JOBS_RESTRICTED = "bg_jobs_restricted";
private static final int DEFAULT_MIN_IDLE_COUNT = 1;
private static final int DEFAULT_MIN_CHARGING_COUNT = 1;
@@ -244,7 +243,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
private static final int DEFAULT_BG_MODERATE_JOB_COUNT = 4;
private static final int DEFAULT_BG_LOW_JOB_COUNT = 1;
private static final int DEFAULT_BG_CRITICAL_JOB_COUNT = 1;
- private static final boolean DEFAULT_BG_JOBS_RESTRICTED = false;
private static final int DEFAULT_MAX_STANDARD_RESCHEDULE_COUNT = Integer.MAX_VALUE;
private static final int DEFAULT_MAX_WORK_RESCHEDULE_COUNT = Integer.MAX_VALUE;
private static final long DEFAULT_MIN_LINEAR_BACKOFF_TIME = JobInfo.MIN_BACKOFF_MILLIS;
@@ -338,11 +336,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
*/
long MIN_EXP_BACKOFF_TIME = DEFAULT_MIN_EXP_BACKOFF_TIME;
- /**
- * Runtime switch for throttling background jobs
- */
- boolean BACKGROUND_JOBS_RESTRICTED = DEFAULT_BG_JOBS_RESTRICTED;
-
private ContentResolver mResolver;
private final KeyValueListParser mParser = new KeyValueListParser(',');
@@ -421,12 +414,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
DEFAULT_MIN_LINEAR_BACKOFF_TIME);
MIN_EXP_BACKOFF_TIME = mParser.getLong(KEY_MIN_EXP_BACKOFF_TIME,
DEFAULT_MIN_EXP_BACKOFF_TIME);
- final boolean bgJobsRestricted = mParser.getBoolean(KEY_BG_JOBS_RESTRICTED,
- DEFAULT_BG_JOBS_RESTRICTED);
- if (bgJobsRestricted != BACKGROUND_JOBS_RESTRICTED) {
- mBackgroundJobsController.enableRestrictionsLocked(
- BACKGROUND_JOBS_RESTRICTED = bgJobsRestricted);
- }
}
}
@@ -486,9 +473,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
pw.print(" "); pw.print(KEY_MIN_EXP_BACKOFF_TIME); pw.print("=");
pw.print(MIN_EXP_BACKOFF_TIME); pw.println();
-
- pw.print(" "); pw.print(KEY_BG_JOBS_RESTRICTED); pw.print("=");
- pw.print(BACKGROUND_JOBS_RESTRICTED); pw.println();
}
}
@@ -520,11 +504,12 @@ public final class JobSchedulerService extends com.android.server.SystemService
if (DEBUG) {
Slog.d(TAG, "Receieved: " + action);
}
+ final String pkgName = getPackageName(intent);
+ final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
+
if (Intent.ACTION_PACKAGE_CHANGED.equals(action)) {
// Purge the app's jobs if the whole package was just disabled. When this is
// the case the component name will be a bare package name.
- final String pkgName = getPackageName(intent);
- final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
if (pkgName != null && pkgUid != -1) {
final String[] changedComponents = intent.getStringArrayExtra(
Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST);
@@ -544,7 +529,8 @@ public final class JobSchedulerService extends com.android.server.SystemService
Slog.d(TAG, "Removing jobs for package " + pkgName
+ " in user " + userId);
}
- cancelJobsForUid(pkgUid, "app package state changed");
+ cancelJobsForPackageAndUid(pkgName, pkgUid,
+ "app disabled");
}
} catch (RemoteException|IllegalArgumentException e) {
/*
@@ -573,7 +559,7 @@ public final class JobSchedulerService extends com.android.server.SystemService
if (DEBUG) {
Slog.d(TAG, "Removing jobs for uid: " + uidRemoved);
}
- cancelJobsForUid(uidRemoved, "app uninstalled");
+ cancelJobsForPackageAndUid(pkgName, uidRemoved, "app uninstalled");
}
} else if (Intent.ACTION_USER_REMOVED.equals(action)) {
final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
@@ -584,8 +570,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
} else if (Intent.ACTION_QUERY_PACKAGE_RESTART.equals(action)) {
// Has this package scheduled any jobs, such that we will take action
// if it were to be force-stopped?
- final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
- final String pkgName = intent.getData().getSchemeSpecificPart();
if (pkgUid != -1) {
List<JobStatus> jobsForUid;
synchronized (mLock) {
@@ -604,13 +588,11 @@ public final class JobSchedulerService extends com.android.server.SystemService
}
} else if (Intent.ACTION_PACKAGE_RESTARTED.equals(action)) {
// possible force-stop
- final int pkgUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
- final String pkgName = intent.getData().getSchemeSpecificPart();
if (pkgUid != -1) {
if (DEBUG) {
Slog.d(TAG, "Removing jobs for pkg " + pkgName + " at uid " + pkgUid);
}
- cancelJobsForPackageAndUid(pkgName, pkgUid);
+ cancelJobsForPackageAndUid(pkgName, pkgUid, "app force stopped");
}
}
}
@@ -790,13 +772,17 @@ public final class JobSchedulerService extends com.android.server.SystemService
}
}
- void cancelJobsForPackageAndUid(String pkgName, int uid) {
+ void cancelJobsForPackageAndUid(String pkgName, int uid, String reason) {
+ if ("android".equals(pkgName)) {
+ Slog.wtfStack(TAG, "Can't cancel all jobs for system package");
+ return;
+ }
synchronized (mLock) {
final List<JobStatus> jobsForUid = mJobs.getJobsByUid(uid);
for (int i = jobsForUid.size() - 1; i >= 0; i--) {
final JobStatus job = jobsForUid.get(i);
if (job.getSourcePackageName().equals(pkgName)) {
- cancelJobImplLocked(job, null, "app force stopped");
+ cancelJobImplLocked(job, null, reason);
}
}
}
@@ -810,6 +796,10 @@ public final class JobSchedulerService extends com.android.server.SystemService
*
*/
public void cancelJobsForUid(int uid, String reason) {
+ if (uid == Process.SYSTEM_UID) {
+ Slog.wtfStack(TAG, "Can't cancel all jobs for system uid");
+ return;
+ }
synchronized (mLock) {
final List<JobStatus> jobsForUid = mJobs.getJobsByUid(uid);
for (int i=0; i<jobsForUid.size(); i++) {
@@ -1867,9 +1857,9 @@ public final class JobSchedulerService extends com.android.server.SystemService
}
@Override
- public int countJobs() {
+ public JobStorePersistStats getPersistStats() {
synchronized (mLock) {
- return mJobs.size();
+ return new JobStorePersistStats(mJobs.getPersistStats());
}
}
}
@@ -2052,13 +2042,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
@Override
public void cancelAll() throws RemoteException {
final int uid = Binder.getCallingUid();
- switch (uid) {
- case Process.SYSTEM_UID:
- // This really shouldn't happen.
- Slog.wtf(TAG, "JobScheduler.cancelAll() called for uid=" + uid);
- return;
- }
-
long ident = Binder.clearCallingIdentity();
try {
JobSchedulerService.this.cancelJobsForUid(uid, "cancelAll() called by app");
@@ -2500,6 +2483,9 @@ public final class JobSchedulerService extends com.android.server.SystemService
pw.print("mReportedActive="); pw.println(mReportedActive);
pw.print("mMaxActiveJobs="); pw.println(mMaxActiveJobs);
}
+ pw.println();
+ pw.print("PersistStats: ");
+ pw.println(mJobs.getPersistStats());
}
pw.println();
}
diff --git a/services/core/java/com/android/server/job/JobServiceContext.java b/services/core/java/com/android/server/job/JobServiceContext.java
index 031bdd0ee39c..d3fd3a992a31 100644
--- a/services/core/java/com/android/server/job/JobServiceContext.java
+++ b/services/core/java/com/android/server/job/JobServiceContext.java
@@ -261,6 +261,13 @@ public final class JobServiceContext implements ServiceConnection {
return mRunningJob;
}
+ /**
+ * Used only for debugging. Will return <code>"&lt;null&gt;"</code> if there is no job running.
+ */
+ private String getRunningJobNameLocked() {
+ return mRunningJob != null ? mRunningJob.toShortString() : "<null>";
+ }
+
/** Called externally when a job that was scheduled for execution should be cancelled. */
void cancelExecutingJobLocked(int reason, String debugReason) {
doCancelLocked(reason, debugReason);
@@ -522,7 +529,7 @@ public final class JobServiceContext implements ServiceConnection {
/** Start the job on the service. */
private void handleServiceBoundLocked() {
if (DEBUG) {
- Slog.d(TAG, "handleServiceBound for " + mRunningJob.toShortString());
+ Slog.d(TAG, "handleServiceBound for " + getRunningJobNameLocked());
}
if (mVerb != VERB_BINDING) {
Slog.e(TAG, "Sending onStartJob for a job that isn't pending. "
@@ -639,36 +646,34 @@ public final class JobServiceContext implements ServiceConnection {
private void handleOpTimeoutLocked() {
switch (mVerb) {
case VERB_BINDING:
- Slog.w(TAG, "Time-out while trying to bind " + mRunningJob.toShortString() +
- ", dropping.");
+ Slog.w(TAG, "Time-out while trying to bind " + getRunningJobNameLocked()
+ + ", dropping.");
closeAndCleanupJobLocked(false /* needsReschedule */, "timed out while binding");
break;
case VERB_STARTING:
// Client unresponsive - wedged or failed to respond in time. We don't really
// know what happened so let's log it and notify the JobScheduler
// FINISHED/NO-RETRY.
- Slog.w(TAG, "No response from client for onStartJob " +
- mRunningJob != null ? mRunningJob.toShortString() : "<null>");
+ Slog.w(TAG, "No response from client for onStartJob "
+ + getRunningJobNameLocked());
closeAndCleanupJobLocked(false /* needsReschedule */, "timed out while starting");
break;
case VERB_STOPPING:
// At least we got somewhere, so fail but ask the JobScheduler to reschedule.
- Slog.w(TAG, "No response from client for onStopJob " +
- mRunningJob != null ? mRunningJob.toShortString() : "<null>");
+ Slog.w(TAG, "No response from client for onStopJob "
+ + getRunningJobNameLocked());
closeAndCleanupJobLocked(true /* needsReschedule */, "timed out while stopping");
break;
case VERB_EXECUTING:
// Not an error - client ran out of time.
Slog.i(TAG, "Client timed out while executing (no jobFinished received), " +
- "sending onStop: " +
- mRunningJob != null ? mRunningJob.toShortString() : "<null>");
+ "sending onStop: " + getRunningJobNameLocked());
mParams.setStopReason(JobParameters.REASON_TIMEOUT);
sendStopMessageLocked("timeout while executing");
break;
default:
- Slog.e(TAG, "Handling timeout for an invalid job state: " +
- mRunningJob != null ? mRunningJob.toShortString() : "<null>"
- + ", dropping.");
+ Slog.e(TAG, "Handling timeout for an invalid job state: "
+ + getRunningJobNameLocked() + ", dropping.");
closeAndCleanupJobLocked(false /* needsReschedule */, "invalid timeout");
}
}
diff --git a/services/core/java/com/android/server/job/JobStore.java b/services/core/java/com/android/server/job/JobStore.java
index 5317616ad13a..aa9f77c839e5 100644
--- a/services/core/java/com/android/server/job/JobStore.java
+++ b/services/core/java/com/android/server/job/JobStore.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.os.Environment;
import android.os.Handler;
import android.os.PersistableBundle;
+import android.os.Process;
import android.os.SystemClock;
import android.os.UserHandle;
import android.text.format.DateUtils;
@@ -38,6 +39,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastXmlSerializer;
import com.android.server.IoThread;
+import com.android.server.job.JobSchedulerInternal.JobStorePersistStats;
import com.android.server.job.controllers.JobStatus;
import java.io.ByteArrayOutputStream;
@@ -89,6 +91,8 @@ public final class JobStore {
private final Handler mIoHandler = IoThread.getHandler();
private static JobStore sSingleton;
+ private JobStorePersistStats mPersistInfo = new JobStorePersistStats();
+
/** Used by the {@link JobSchedulerService} to instantiate the JobStore. */
static JobStore initAndGet(JobSchedulerService jobManagerService) {
synchronized (sSingletonLock) {
@@ -199,6 +203,10 @@ public final class JobStore {
return mJobSet.size();
}
+ public JobStorePersistStats getPersistStats() {
+ return mPersistInfo;
+ }
+
public int countJobsForUid(int uid) {
return mJobSet.countJobsForUid(uid);
}
@@ -336,6 +344,9 @@ public final class JobStore {
}
private void writeJobsMapImpl(List<JobStatus> jobList) {
+ int numJobs = 0;
+ int numSystemJobs = 0;
+ int numSyncJobs = 0;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmlSerializer out = new FastXmlSerializer();
@@ -356,6 +367,14 @@ public final class JobStore {
writeExecutionCriteriaToXml(out, jobStatus);
writeBundleToXml(jobStatus.getJob().getExtras(), out);
out.endTag(null, "job");
+
+ numJobs++;
+ if (jobStatus.getUid() == Process.SYSTEM_UID) {
+ numSystemJobs++;
+ if (isSyncJob(jobStatus)) {
+ numSyncJobs++;
+ }
+ }
}
out.endTag(null, "job-info");
out.endDocument();
@@ -373,6 +392,10 @@ public final class JobStore {
if (DEBUG) {
Slog.d(TAG, "Error persisting bundle.", e);
}
+ } finally {
+ mPersistInfo.countAllJobsSaved = numJobs;
+ mPersistInfo.countSystemServerJobsSaved = numSystemJobs;
+ mPersistInfo.countSystemSyncManagerJobsSaved = numSyncJobs;
}
}
@@ -525,6 +548,11 @@ public final class JobStore {
return Pair.create(earliest, latest);
}
+ private static boolean isSyncJob(JobStatus status) {
+ return com.android.server.content.SyncJobService.class.getName()
+ .equals(status.getServiceComponent().getClassName());
+ }
+
/**
* Runnable that reads list of persisted job from xml. This is run once at start up, so doesn't
* need to go through {@link JobStore#add(com.android.server.job.controllers.JobStatus)}.
@@ -545,6 +573,8 @@ public final class JobStore {
@Override
public void run() {
int numJobs = 0;
+ int numSystemJobs = 0;
+ int numSyncJobs = 0;
try {
List<JobStatus> jobs;
FileInputStream fis = mJobsFile.openRead();
@@ -558,7 +588,14 @@ public final class JobStore {
js.prepareLocked(am);
js.enqueueTime = now;
this.jobSet.add(js);
+
numJobs++;
+ if (js.getUid() == Process.SYSTEM_UID) {
+ numSystemJobs++;
+ if (isSyncJob(js)) {
+ numSyncJobs++;
+ }
+ }
}
}
}
@@ -569,6 +606,12 @@ public final class JobStore {
}
} catch (XmlPullParserException | IOException e) {
Slog.wtf(TAG, "Error jobstore xml.", e);
+ } finally {
+ if (mPersistInfo.countAllJobsLoaded < 0) { // Only set them once.
+ mPersistInfo.countAllJobsLoaded = numJobs;
+ mPersistInfo.countSystemServerJobsLoaded = numSystemJobs;
+ mPersistInfo.countSystemSyncManagerJobsLoaded = numSyncJobs;
+ }
}
Slog.i(TAG, "Read " + numJobs + " jobs");
}
diff --git a/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java b/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java
index ec50d6dba841..0539c022809c 100644
--- a/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java
+++ b/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java
@@ -48,14 +48,12 @@ public final class BackgroundJobsController extends StateController {
private static final Object sCreationLock = new Object();
private static volatile BackgroundJobsController sController;
- /* Runtime switch to keep feature under wraps */
- private boolean mEnableSwitch;
private final JobSchedulerService mJobSchedulerService;
private final IAppOpsService mAppOpsService;
private final IDeviceIdleController mDeviceIdleController;
private final SparseBooleanArray mForegroundUids;
- private int[] mPowerWhitelistedAppIds;
+ private int[] mPowerWhitelistedUserAppIds;
private int[] mTempWhitelistedAppIds;
/**
* Only tracks jobs for which source package app op RUN_ANY_IN_BACKGROUND is not ALLOWED.
@@ -81,7 +79,8 @@ public final class BackgroundJobsController extends StateController {
try {
switch (intent.getAction()) {
case PowerManager.ACTION_POWER_SAVE_WHITELIST_CHANGED:
- mPowerWhitelistedAppIds = mDeviceIdleController.getAppIdWhitelist();
+ mPowerWhitelistedUserAppIds =
+ mDeviceIdleController.getAppIdUserWhitelist();
break;
case PowerManager.ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED:
mTempWhitelistedAppIds = mDeviceIdleController.getAppIdTempWhitelist();
@@ -110,7 +109,7 @@ public final class BackgroundJobsController extends StateController {
try {
mAppOpsService.startWatchingMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, null,
new AppOpsWatcher());
- mPowerWhitelistedAppIds = mDeviceIdleController.getAppIdWhitelist();
+ mPowerWhitelistedUserAppIds = mDeviceIdleController.getAppIdUserWhitelist();
mTempWhitelistedAppIds = mDeviceIdleController.getAppIdTempWhitelist();
} catch (RemoteException rexc) {
// Shouldn't happen as they are in the same process.
@@ -121,8 +120,6 @@ public final class BackgroundJobsController extends StateController {
powerWhitelistFilter.addAction(PowerManager.ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED);
context.registerReceiverAsUser(mDozeWhitelistReceiver, UserHandle.ALL, powerWhitelistFilter,
null, null);
-
- mEnableSwitch = false;
}
@Override
@@ -170,7 +167,6 @@ public final class BackgroundJobsController extends StateController {
@Override
public void dumpControllerStateLocked(final PrintWriter pw, final int filterUid) {
- pw.println("Background restrictions: global switch = " + mEnableSwitch);
pw.print("Foreground uids: [");
for (int i = 0; i < mForegroundUids.size(); i++) {
if (mForegroundUids.valueAt(i)) pw.print(mForegroundUids.keyAt(i) + " ");
@@ -206,14 +202,6 @@ public final class BackgroundJobsController extends StateController {
});
}
- public void enableRestrictionsLocked(boolean enable) {
- mEnableSwitch = enable;
- Slog.d(LOG_TAG, "Background jobs restrictions switch changed to " + mEnableSwitch);
- if (checkAllTrackedJobsLocked()) {
- mStateChangedListener.onControllerStateChanged();
- }
- }
-
void startTrackingJobLocked(JobStatus jobStatus) {
final int uid = jobStatus.getSourceUid();
ArraySet<JobStatus> jobsForUid = mTrackedJobs.get(uid);
@@ -255,11 +243,11 @@ public final class BackgroundJobsController extends StateController {
boolean isWhitelistedLocked(int uid) {
return ArrayUtils.contains(mTempWhitelistedAppIds, UserHandle.getAppId(uid))
- || ArrayUtils.contains(mPowerWhitelistedAppIds, UserHandle.getAppId(uid));
+ || ArrayUtils.contains(mPowerWhitelistedUserAppIds, UserHandle.getAppId(uid));
}
boolean canRunJobLocked(int uid) {
- return !mEnableSwitch || mForegroundUids.get(uid) || isWhitelistedLocked(uid);
+ return mForegroundUids.get(uid) || isWhitelistedLocked(uid);
}
private final class AppOpsWatcher extends IAppOpsCallback.Stub {
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index f549a86583c0..0aa6a90e3efb 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -539,7 +539,10 @@ public class GnssLocationProvider implements LocationProviderInterface {
synchronized (mLock) {
if (configManager != null) {
PersistableBundle b = configManager.getConfig();
- isKeepLppProfile = b.getBoolean(CarrierConfigManager.KEY_PERSIST_LPP_MODE_BOOL);
+ if (b != null) {
+ isKeepLppProfile =
+ b.getBoolean(CarrierConfigManager.KEY_PERSIST_LPP_MODE_BOOL);
+ }
}
if (isKeepLppProfile) {
// load current properties for the carrier
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index 5927b2f050fc..14d9afb14cf9 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -74,6 +74,7 @@ import android.security.KeyStore;
import android.security.keystore.AndroidKeyStoreProvider;
import android.security.keystore.KeyProperties;
import android.security.keystore.KeyProtection;
+import android.security.keystore.UserNotAuthenticatedException;
import android.service.gatekeeper.GateKeeperResponse;
import android.service.gatekeeper.IGateKeeperService;
import android.text.TextUtils;
@@ -153,7 +154,8 @@ public class LockSettingsService extends ILockSettings.Stub {
private final Injector mInjector;
private final Context mContext;
- private final Handler mHandler;
+ @VisibleForTesting
+ protected final Handler mHandler;
@VisibleForTesting
protected final LockSettingsStorage mStorage;
private final LockSettingsStrongAuth mStrongAuth;
@@ -503,12 +505,34 @@ public class LockSettingsService extends ILockSettings.Stub {
maybeShowEncryptionNotificationForUser(userId);
}
+ /**
+ * Check if profile got unlocked but the keystore is still locked. This happens on full disk
+ * encryption devices since the profile may not yet be running when we consider unlocking it
+ * during the normal flow. In this case unlock the keystore for the profile.
+ */
+ private void ensureProfileKeystoreUnlocked(int userId) {
+ final KeyStore ks = KeyStore.getInstance();
+ if (ks.state(userId) == KeyStore.State.LOCKED
+ && tiedManagedProfileReadyToUnlock(mUserManager.getUserInfo(userId))) {
+ Slog.i(TAG, "Managed profile got unlocked, will unlock its keystore");
+ try {
+ // If boot took too long and the password in vold got expired, parent keystore will
+ // be still locked, we ignore this case since the user will be prompted to unlock
+ // the device after boot.
+ unlockChildProfile(userId, true /* ignoreUserNotAuthenticated */);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Failed to unlock child profile");
+ }
+ }
+ }
+
public void onUnlockUser(final int userId) {
// Perform tasks which require locks in LSS on a handler, as we are callbacks from
// ActivityManager.unlockUser()
mHandler.post(new Runnable() {
@Override
public void run() {
+ ensureProfileKeystoreUnlocked(userId);
// Hide notification first, as tie managed profile lock takes time
hideEncryptionNotification(new UserHandle(userId));
@@ -1027,7 +1051,8 @@ public class LockSettingsService extends ILockSettings.Stub {
return new String(decryptionResult, StandardCharsets.UTF_8);
}
- private void unlockChildProfile(int profileHandle) throws RemoteException {
+ private void unlockChildProfile(int profileHandle, boolean ignoreUserNotAuthenticated)
+ throws RemoteException {
try {
doVerifyCredential(getDecryptedPasswordForTiedProfile(profileHandle),
LockPatternUtils.CREDENTIAL_TYPE_PASSWORD,
@@ -1038,6 +1063,8 @@ public class LockSettingsService extends ILockSettings.Stub {
| BadPaddingException | CertificateException | IOException e) {
if (e instanceof FileNotFoundException) {
Slog.i(TAG, "Child profile key not found");
+ } else if (ignoreUserNotAuthenticated && e instanceof UserNotAuthenticatedException) {
+ Slog.i(TAG, "Parent keystore seems locked, ignoring");
} else {
Slog.e(TAG, "Failed to decrypt child profile key", e);
}
@@ -1081,11 +1108,8 @@ public class LockSettingsService extends ILockSettings.Stub {
final List<UserInfo> profiles = mUserManager.getProfiles(userId);
for (UserInfo pi : profiles) {
// Unlock managed profile with unified lock
- if (pi.isManagedProfile()
- && !mLockPatternUtils.isSeparateProfileChallengeEnabled(pi.id)
- && mStorage.hasChildProfileLock(pi.id)
- && mUserManager.isUserRunning(pi.id)) {
- unlockChildProfile(pi.id);
+ if (tiedManagedProfileReadyToUnlock(pi)) {
+ unlockChildProfile(pi.id, false /* ignoreUserNotAuthenticated */);
}
}
}
@@ -1094,6 +1118,13 @@ public class LockSettingsService extends ILockSettings.Stub {
}
}
+ private boolean tiedManagedProfileReadyToUnlock(UserInfo userInfo) {
+ return userInfo.isManagedProfile()
+ && !mLockPatternUtils.isSeparateProfileChallengeEnabled(userInfo.id)
+ && mStorage.hasChildProfileLock(userInfo.id)
+ && mUserManager.isUserRunning(userInfo.id);
+ }
+
private Map<Integer, String> getDecryptedPasswordsForAllTiedProfiles(int userId) {
if (mUserManager.getUserInfo(userId).isManagedProfile()) {
return null;
@@ -1111,12 +1142,13 @@ public class LockSettingsService extends ILockSettings.Stub {
continue;
}
try {
- result.put(userId, getDecryptedPasswordForTiedProfile(userId));
+ result.put(managedUserId, getDecryptedPasswordForTiedProfile(managedUserId));
} catch (KeyStoreException | UnrecoverableKeyException | NoSuchAlgorithmException
| NoSuchPaddingException | InvalidKeyException
| InvalidAlgorithmParameterException | IllegalBlockSizeException
| BadPaddingException | CertificateException | IOException e) {
- // ignore
+ Slog.e(TAG, "getDecryptedPasswordsForAllTiedProfiles failed for user " +
+ managedUserId, e);
}
}
return result;
@@ -1706,6 +1738,10 @@ public class LockSettingsService extends ILockSettings.Stub {
return response;
}
+ /**
+ * Call this method to notify DPMS regarding the latest password metric. This should be called
+ * when the user is authenticating or when a new password is being set.
+ */
private void notifyActivePasswordMetricsAvailable(String password, @UserIdInt int userId) {
final PasswordMetrics metrics;
if (password == null) {
@@ -2167,6 +2203,8 @@ public class LockSettingsService extends ILockSettings.Stub {
}
setLong(SYNTHETIC_PASSWORD_HANDLE_KEY, newHandle, userId);
synchronizeUnifiedWorkChallengeForProfiles(userId, profilePasswords);
+
+ notifyActivePasswordMetricsAvailable(credential, userId);
return newHandle;
}
@@ -2216,13 +2254,13 @@ public class LockSettingsService extends ILockSettings.Stub {
userId);
synchronizeUnifiedWorkChallengeForProfiles(userId, null);
mSpManager.destroyPasswordBasedSyntheticPassword(handle, userId);
+
+ notifyActivePasswordMetricsAvailable(credential, userId);
} else /* response == null || responseCode == VerifyCredentialResponse.RESPONSE_RETRY */ {
Slog.w(TAG, "spBasedSetLockCredentialInternalLocked: " +
(response != null ? "rate limit exceeded" : "failed"));
return;
}
- notifyActivePasswordMetricsAvailable(credential, userId);
-
}
@Override
@@ -2328,6 +2366,17 @@ public class LockSettingsService extends ILockSettings.Stub {
Slog.w(TAG, "Invalid escrow token supplied");
return false;
}
+ if (result.gkResponse.getResponseCode() != VerifyCredentialResponse.RESPONSE_OK) {
+ // Most likely, an untrusted credential reset happened in the past which
+ // changed the synthetic password
+ Slog.e(TAG, "Obsolete token: synthetic password derived but it fails GK "
+ + "verification.");
+ return false;
+ }
+ // Update PASSWORD_TYPE_KEY since it's needed by notifyActivePasswordMetricsAvailable()
+ // called by setLockCredentialWithAuthTokenLocked().
+ // TODO: refactor usage of PASSWORD_TYPE_KEY b/65239740
+ setLong(LockPatternUtils.PASSWORD_TYPE_KEY, requestedQuality, userId);
long oldHandle = getSyntheticPasswordHandleLocked(userId);
setLockCredentialWithAuthTokenLocked(credential, type, result.authToken,
requestedQuality, userId);
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java
index b4c10ec27a65..70d607227e23 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java
@@ -713,12 +713,15 @@ class LockSettingsStorage {
private static final String DATABASE_NAME = "locksettings.db";
private static final int DATABASE_VERSION = 2;
+ private static final int IDLE_CONNECTION_TIMEOUT_MS = 30000;
private Callback mCallback;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
setWriteAheadLoggingEnabled(true);
+ // Memory optimization - close idle connections after 30s of inactivity
+ setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS);
}
public void setCallback(Callback callback) {
diff --git a/services/core/java/com/android/server/media/AudioPlaybackMonitor.java b/services/core/java/com/android/server/media/AudioPlaybackMonitor.java
index f6f767653c83..791ee821b357 100644
--- a/services/core/java/com/android/server/media/AudioPlaybackMonitor.java
+++ b/services/core/java/com/android/server/media/AudioPlaybackMonitor.java
@@ -100,7 +100,11 @@ class AudioPlaybackMonitor extends IPlaybackConfigDispatcher.Stub {
* @param configs List of the current audio playback configuration
*/
@Override
- public void dispatchPlaybackConfigChange(List<AudioPlaybackConfiguration> configs) {
+ public void dispatchPlaybackConfigChange(List<AudioPlaybackConfiguration> configs,
+ boolean flush) {
+ if (flush) {
+ Binder.flushPendingCommands();
+ }
final long token = Binder.clearCallingIdentity();
try {
List<Integer> newActiveAudioPlaybackClientUids = new ArrayList<>();
diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java
index 922df1e3dba8..3795b7f3091c 100644
--- a/services/core/java/com/android/server/media/MediaRouterService.java
+++ b/services/core/java/com/android/server/media/MediaRouterService.java
@@ -18,9 +18,7 @@ package com.android.server.media;
import com.android.internal.util.DumpUtils;
import com.android.server.Watchdog;
-import com.android.server.media.AudioPlaybackMonitor.OnAudioPlayerActiveStateChangedListener;
-import android.Manifest;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -96,9 +94,10 @@ public final class MediaRouterService extends IMediaRouterService.Stub
private final ArrayMap<IBinder, ClientRecord> mAllClientRecords =
new ArrayMap<IBinder, ClientRecord>();
private int mCurrentUserId = -1;
- private boolean mHasBluetoothRoute = false;
+ private boolean mGlobalBluetoothA2dpOn = false;
private final IAudioService mAudioService;
private final AudioPlaybackMonitor mAudioPlaybackMonitor;
+ private final AudioRoutesInfo mCurAudioRoutesInfo = new AudioRoutesInfo();
public MediaRouterService(Context context) {
mContext = context;
@@ -137,13 +136,39 @@ public final class MediaRouterService extends IMediaRouterService.Stub
audioRoutes = mAudioService.startWatchingRoutes(new IAudioRoutesObserver.Stub() {
@Override
public void dispatchAudioRoutesChanged(final AudioRoutesInfo newRoutes) {
- mHasBluetoothRoute = newRoutes.bluetoothName != null;
+ synchronized (mLock) {
+ if (newRoutes.mainType != mCurAudioRoutesInfo.mainType) {
+ if ((newRoutes.mainType & (AudioRoutesInfo.MAIN_HEADSET
+ | AudioRoutesInfo.MAIN_HEADPHONES
+ | AudioRoutesInfo.MAIN_USB)) == 0) {
+ // headset was plugged out.
+ mGlobalBluetoothA2dpOn = newRoutes.bluetoothName != null;
+ } else {
+ // headset was plugged in.
+ mGlobalBluetoothA2dpOn = false;
+ }
+ mCurAudioRoutesInfo.mainType = newRoutes.mainType;
+ }
+ if (!TextUtils.equals(
+ newRoutes.bluetoothName, mCurAudioRoutesInfo.bluetoothName)) {
+ if (newRoutes.bluetoothName == null) {
+ // BT was disconnected.
+ mGlobalBluetoothA2dpOn = false;
+ } else {
+ // BT was connected or changed.
+ mGlobalBluetoothA2dpOn = true;
+ }
+ mCurAudioRoutesInfo.bluetoothName = newRoutes.bluetoothName;
+ }
+ }
}
});
} catch (RemoteException e) {
Slog.w(TAG, "RemoteException in the audio service.");
}
- mHasBluetoothRoute = (audioRoutes != null && audioRoutes.bluetoothName != null);
+ synchronized (mLock) {
+ mGlobalBluetoothA2dpOn = (audioRoutes != null && audioRoutes.bluetoothName != null);
+ }
}
public void systemRunning() {
@@ -246,6 +271,14 @@ public final class MediaRouterService extends IMediaRouterService.Stub
// Binder call
@Override
+ public boolean isGlobalBluetoothA2doOn() {
+ synchronized (mLock) {
+ return mGlobalBluetoothA2dpOn;
+ }
+ }
+
+ // Binder call
+ @Override
public void setDiscoveryRequest(IMediaRouterClient client,
int routeTypes, boolean activeScan) {
if (client == null) {
@@ -346,7 +379,12 @@ public final class MediaRouterService extends IMediaRouterService.Stub
void restoreBluetoothA2dp() {
try {
- mAudioService.setBluetoothA2dpOn(mHasBluetoothRoute);
+ boolean a2dpOn = false;
+ synchronized (mLock) {
+ a2dpOn = mGlobalBluetoothA2dpOn;
+ }
+ Slog.v(TAG, "restoreBluetoothA2dp( " + a2dpOn + ")");
+ mAudioService.setBluetoothA2dpOn(a2dpOn);
} catch (RemoteException e) {
Slog.w(TAG, "RemoteException while calling setBluetoothA2dpOn.");
}
@@ -354,12 +392,14 @@ public final class MediaRouterService extends IMediaRouterService.Stub
void restoreRoute(int uid) {
ClientRecord clientRecord = null;
- UserRecord userRecord = mUserRecords.get(UserHandle.getUserId(uid));
- if (userRecord != null && userRecord.mClientRecords != null) {
- for (ClientRecord cr : userRecord.mClientRecords) {
- if (validatePackageName(uid, cr.mPackageName)) {
- clientRecord = cr;
- break;
+ synchronized (mLock) {
+ UserRecord userRecord = mUserRecords.get(UserHandle.getUserId(uid));
+ if (userRecord != null && userRecord.mClientRecords != null) {
+ for (ClientRecord cr : userRecord.mClientRecords) {
+ if (validatePackageName(uid, cr.mPackageName)) {
+ clientRecord = cr;
+ break;
+ }
}
}
}
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index 89e10503fcf3..0b11479a162a 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -462,18 +462,25 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
mHandler.post(new Runnable() {
@Override
public void run() {
- if (useSuggested) {
- if (AudioSystem.isStreamActive(stream, 0)) {
- mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, direction,
- flags, packageName, uid);
+ try {
+ if (useSuggested) {
+ if (AudioSystem.isStreamActive(stream, 0)) {
+ mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream,
+ direction, flags, packageName, uid);
+ } else {
+ mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(
+ AudioManager.USE_DEFAULT_STREAM_TYPE, direction,
+ flags | previousFlagPlaySound, packageName, uid);
+ }
} else {
- mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(
- AudioManager.USE_DEFAULT_STREAM_TYPE, direction,
- flags | previousFlagPlaySound, packageName, uid);
+ mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags,
+ packageName, uid);
}
- } else {
- mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags,
- packageName, uid);
+ } catch (IllegalArgumentException e) {
+ Log.e(TAG, "Cannot adjust volume: direction=" + direction + ", stream="
+ + stream + ", flags=" + flags + ", packageName=" + packageName
+ + ", uid=" + uid + ", useSuggested=" + useSuggested
+ + ", previousFlagPlaySound=" + previousFlagPlaySound, e);
}
}
});
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index b77ed913cd12..b9a2d184aade 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -1363,6 +1363,10 @@ public class MediaSessionService extends SystemService implements Monitor {
flags, packageName, TAG);
} catch (RemoteException e) {
Log.e(TAG, "Error adjusting default volume.", e);
+ } catch (IllegalArgumentException e) {
+ Log.e(TAG, "Cannot adjust volume: direction=" + direction
+ + ", suggestedStream=" + suggestedStream + ", flags=" + flags,
+ e);
}
}
});
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 93458c8daf9c..90dab2c38725 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -33,6 +33,7 @@ import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLE
import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED;
import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED;
import static android.net.ConnectivityManager.TYPE_MOBILE;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.SNOOZE_NEVER;
import static android.net.NetworkPolicy.WARNING_DISABLED;
@@ -112,16 +113,20 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
import android.net.IConnectivityManager;
import android.net.INetworkManagementEventObserver;
import android.net.INetworkPolicyListener;
import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService;
import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
import android.net.NetworkIdentity;
import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
import android.net.NetworkQuotaInfo;
+import android.net.NetworkRequest;
import android.net.NetworkState;
import android.net.NetworkTemplate;
import android.net.TrafficStats;
@@ -191,8 +196,6 @@ import com.android.server.power.BatterySaverPolicy.ServiceType;
import libcore.io.IoUtils;
-import com.google.android.collect.Lists;
-
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
@@ -372,13 +375,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
private final boolean mSuppressDefaultPolicy;
/** Defined network policies. */
+ @GuardedBy("mNetworkPoliciesSecondLock")
final ArrayMap<NetworkTemplate, NetworkPolicy> mNetworkPolicy = new ArrayMap<>();
- /** Currently active network rules for ifaces. */
- final ArrayMap<NetworkPolicy, String[]> mNetworkRules = new ArrayMap<>();
/** Map from subId to subscription plans. */
+ @GuardedBy("mNetworkPoliciesSecondLock")
final SparseArray<SubscriptionPlan[]> mSubscriptionPlans = new SparseArray<>();
/** Map from subId to package name that owns subscription plans. */
+ @GuardedBy("mNetworkPoliciesSecondLock")
final SparseArray<String> mSubscriptionPlansOwner = new SparseArray<>();
/** Defined UID policies. */
@@ -446,6 +450,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
@GuardedBy("mUidRulesFirstLock")
final SparseIntArray mUidState = new SparseIntArray();
+ /** Map from network ID to last observed meteredness state */
+ @GuardedBy("mNetworkPoliciesSecondLock")
+ private final SparseBooleanArray mNetworkMetered = new SparseBooleanArray();
+
private final RemoteCallbackList<INetworkPolicyListener>
mListeners = new RemoteCallbackList<>();
@@ -748,6 +756,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
ACTION_CARRIER_CONFIG_CHANGED);
mContext.registerReceiver(mCarrierConfigReceiver, carrierConfigFilter, null, mHandler);
+ // listen for meteredness changes
+ mContext.getSystemService(ConnectivityManager.class).registerNetworkCallback(
+ new NetworkRequest.Builder().build(), mNetworkCallback);
+
mUsageStats.addAppIdleStateChangeListener(new AppIdleStateChangeListener());
// tell systemReady() that the service has been initialized
initCompleteSignal.countDown();
@@ -927,7 +939,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
/**
* Receiver that watches for {@link WifiConfiguration} to be loaded so that
- * we can perform upgrade logic.
+ * we can perform upgrade logic. After initial upgrade logic, it updates
+ * {@link #mMeteredIfaces} based on configuration changes.
*/
final private BroadcastReceiver mWifiReceiver = new BroadcastReceiver() {
@Override
@@ -942,6 +955,25 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
};
+ private final NetworkCallback mNetworkCallback = new NetworkCallback() {
+ @Override
+ public void onCapabilitiesChanged(Network network,
+ NetworkCapabilities networkCapabilities) {
+ if (network == null || networkCapabilities == null) return;
+
+ synchronized (mNetworkPoliciesSecondLock) {
+ final boolean oldMetered = mNetworkMetered.get(network.netId, false);
+ final boolean newMetered = !networkCapabilities
+ .hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
+
+ if ((oldMetered != newMetered) || mNetworkMetered.indexOfKey(network.netId) < 0) {
+ mNetworkMetered.put(network.netId, newMetered);
+ updateNetworkRulesNL();
+ }
+ }
+ }
+ };
+
/**
* Observer that watches for {@link INetworkManagementService} alerts.
*/
@@ -1445,6 +1477,22 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
/**
+ * Collect all ifaces from a {@link NetworkState} into the given set.
+ */
+ private static void collectIfaces(ArraySet<String> ifaces, NetworkState state) {
+ final String baseIface = state.linkProperties.getInterfaceName();
+ if (baseIface != null) {
+ ifaces.add(baseIface);
+ }
+ for (LinkProperties stackedLink : state.linkProperties.getStackedLinks()) {
+ final String stackedIface = stackedLink.getInterfaceName();
+ if (stackedIface != null) {
+ ifaces.add(stackedIface);
+ }
+ }
+ }
+
+ /**
* Examine all connected {@link NetworkState}, looking for
* {@link NetworkPolicy} that need to be enforced. When matches found, set
* remaining quota based on usage cycle and historical stats.
@@ -1462,60 +1510,33 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
// First, generate identities of all connected networks so we can
// quickly compare them against all defined policies below.
- final ArrayList<Pair<String, NetworkIdentity>> connIdents = new ArrayList<>(states.length);
- final ArraySet<String> connIfaces = new ArraySet<String>(states.length);
+ final ArrayMap<NetworkState, NetworkIdentity> identified = new ArrayMap<>();
for (NetworkState state : states) {
if (state.networkInfo != null && state.networkInfo.isConnected()) {
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state);
-
- final String baseIface = state.linkProperties.getInterfaceName();
- if (baseIface != null) {
- connIdents.add(Pair.create(baseIface, ident));
- }
-
- // Stacked interfaces are considered to have same identity as
- // their parent network.
- final List<LinkProperties> stackedLinks = state.linkProperties.getStackedLinks();
- for (LinkProperties stackedLink : stackedLinks) {
- final String stackedIface = stackedLink.getInterfaceName();
- if (stackedIface != null) {
- connIdents.add(Pair.create(stackedIface, ident));
- }
- }
+ identified.put(state, ident);
}
}
- // Apply policies against all connected interfaces found above
- mNetworkRules.clear();
- final ArrayList<String> ifaceList = Lists.newArrayList();
+ final ArraySet<String> newMeteredIfaces = new ArraySet<>();
+ long lowestRule = Long.MAX_VALUE;
+
+ // For every well-defined policy, compute remaining data based on
+ // current cycle and historical stats, and push to kernel.
+ final ArraySet<String> matchingIfaces = new ArraySet<>();
for (int i = mNetworkPolicy.size() - 1; i >= 0; i--) {
- final NetworkPolicy policy = mNetworkPolicy.valueAt(i);
+ final NetworkPolicy policy = mNetworkPolicy.valueAt(i);
- ifaceList.clear();
- for (int j = connIdents.size() - 1; j >= 0; j--) {
- final Pair<String, NetworkIdentity> ident = connIdents.get(j);
- if (policy.template.matches(ident.second)) {
- ifaceList.add(ident.first);
+ // Collect all ifaces that match this policy
+ matchingIfaces.clear();
+ for (int j = identified.size() - 1; j >= 0; j--) {
+ if (policy.template.matches(identified.valueAt(j))) {
+ collectIfaces(matchingIfaces, identified.keyAt(j));
}
}
- if (ifaceList.size() > 0) {
- final String[] ifaces = ifaceList.toArray(new String[ifaceList.size()]);
- mNetworkRules.put(policy, ifaces);
- }
- }
-
- long lowestRule = Long.MAX_VALUE;
- final ArraySet<String> newMeteredIfaces = new ArraySet<String>(states.length);
-
- // apply each policy that we found ifaces for; compute remaining data
- // based on current cycle and historical stats, and push to kernel.
- for (int i = mNetworkRules.size()-1; i >= 0; i--) {
- final NetworkPolicy policy = mNetworkRules.keyAt(i);
- final String[] ifaces = mNetworkRules.valueAt(i);
-
if (LOGD) {
- Slog.d(TAG, "applying policy " + policy + " to ifaces " + Arrays.toString(ifaces));
+ Slog.d(TAG, "Applying " + policy + " to ifaces " + matchingIfaces);
}
final boolean hasWarning = policy.warningBytes != LIMIT_DISABLED;
@@ -1545,16 +1566,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
quotaBytes = Long.MAX_VALUE;
}
- if (ifaces.length > 1) {
+ if (matchingIfaces.size() > 1) {
// TODO: switch to shared quota once NMS supports
Slog.w(TAG, "shared quota unsupported; generating rule for each iface");
}
- for (String iface : ifaces) {
- // long quotaBytes split up into two ints to fit in message
- mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA,
- (int) (quotaBytes >> 32), (int) (quotaBytes & 0xFFFFFFFF), iface)
- .sendToTarget();
+ for (int j = matchingIfaces.size() - 1; j >= 0; j--) {
+ final String iface = matchingIfaces.valueAt(j);
+ setInterfaceQuotaAsync(iface, quotaBytes);
newMeteredIfaces.add(iface);
}
}
@@ -1568,29 +1587,36 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
- for (int i = connIfaces.size()-1; i >= 0; i--) {
- String iface = connIfaces.valueAt(i);
- // long quotaBytes split up into two ints to fit in message
- mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA,
- (int) (Long.MAX_VALUE >> 32), (int) (Long.MAX_VALUE & 0xFFFFFFFF), iface)
- .sendToTarget();
- newMeteredIfaces.add(iface);
+ // One final pass to catch any metered ifaces that don't have explicitly
+ // defined policies; typically Wi-Fi networks.
+ for (NetworkState state : states) {
+ if (state.networkInfo != null && state.networkInfo.isConnected()
+ && !state.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) {
+ matchingIfaces.clear();
+ collectIfaces(matchingIfaces, state);
+ for (int j = matchingIfaces.size() - 1; j >= 0; j--) {
+ final String iface = matchingIfaces.valueAt(j);
+ if (!newMeteredIfaces.contains(iface)) {
+ setInterfaceQuotaAsync(iface, Long.MAX_VALUE);
+ newMeteredIfaces.add(iface);
+ }
+ }
+ }
}
- mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget();
-
- // remove quota on any trailing interfaces
+ // Remove quota from any interfaces that are no longer metered.
for (int i = mMeteredIfaces.size() - 1; i >= 0; i--) {
final String iface = mMeteredIfaces.valueAt(i);
if (!newMeteredIfaces.contains(iface)) {
- mHandler.obtainMessage(MSG_REMOVE_INTERFACE_QUOTA, iface)
- .sendToTarget();
+ removeInterfaceQuotaAsync(iface);
}
}
mMeteredIfaces = newMeteredIfaces;
final String[] meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]);
mHandler.obtainMessage(MSG_METERED_IFACES_CHANGED, meteredIfaces).sendToTarget();
+
+ mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget();
}
/**
@@ -2730,20 +2756,18 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
return plans.toArray(new SubscriptionPlan[plans.size()]);
}
- synchronized (mUidRulesFirstLock) {
- synchronized (mNetworkPoliciesSecondLock) {
- // Only give out plan details to the package that defined them,
- // so that we don't risk leaking plans between apps. We always
- // let in core system components (like the Settings app).
- final String ownerPackage = mSubscriptionPlansOwner.get(subId);
- if (Objects.equals(ownerPackage, callingPackage)
- || (UserHandle.getCallingAppId() == android.os.Process.SYSTEM_UID)) {
- return mSubscriptionPlans.get(subId);
- } else {
- Log.w(TAG, "Not returning plans because caller " + callingPackage
- + " doesn't match owner " + ownerPackage);
- return null;
- }
+ synchronized (mNetworkPoliciesSecondLock) {
+ // Only give out plan details to the package that defined them,
+ // so that we don't risk leaking plans between apps. We always
+ // let in core system components (like the Settings app).
+ final String ownerPackage = mSubscriptionPlansOwner.get(subId);
+ if (Objects.equals(ownerPackage, callingPackage)
+ || (UserHandle.getCallingAppId() == android.os.Process.SYSTEM_UID)) {
+ return mSubscriptionPlans.get(subId);
+ } else {
+ Log.w(TAG, "Not returning plans because caller " + callingPackage
+ + " doesn't match owner " + ownerPackage);
+ return null;
}
}
}
@@ -3973,6 +3997,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
+ private void setInterfaceQuotaAsync(String iface, long quotaBytes) {
+ // long quotaBytes split up into two ints to fit in message
+ mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, (int) (quotaBytes >> 32),
+ (int) (quotaBytes & 0xFFFFFFFF), iface).sendToTarget();
+ }
+
private void setInterfaceQuota(String iface, long quotaBytes) {
try {
mNetworkManager.setInterfaceQuota(iface, quotaBytes);
@@ -3983,6 +4013,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
}
}
+ private void removeInterfaceQuotaAsync(String iface) {
+ mHandler.obtainMessage(MSG_REMOVE_INTERFACE_QUOTA, iface).sendToTarget();
+ }
+
private void removeInterfaceQuota(String iface) {
try {
mNetworkManager.removeInterfaceQuota(iface);
diff --git a/services/core/java/com/android/server/net/NetworkStatsCollection.java b/services/core/java/com/android/server/net/NetworkStatsCollection.java
index 03543007c80e..4ceb592af055 100644
--- a/services/core/java/com/android/server/net/NetworkStatsCollection.java
+++ b/services/core/java/com/android/server/net/NetworkStatsCollection.java
@@ -28,6 +28,8 @@ import static android.net.NetworkStats.UID_ALL;
import static android.net.TrafficStats.UID_REMOVED;
import static android.text.format.DateUtils.WEEK_IN_MILLIS;
+import static com.android.server.net.NetworkStatsService.TAG;
+
import android.net.NetworkIdentity;
import android.net.NetworkStats;
import android.net.NetworkStatsHistory;
@@ -37,20 +39,24 @@ import android.os.Binder;
import android.service.NetworkStatsCollectionKeyProto;
import android.service.NetworkStatsCollectionProto;
import android.service.NetworkStatsCollectionStatsProto;
+import android.telephony.SubscriptionPlan;
import android.util.ArrayMap;
import android.util.AtomicFile;
import android.util.IntArray;
+import android.util.Pair;
+import android.util.Slog;
import android.util.proto.ProtoOutputStream;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FileRotator;
import com.android.internal.util.IndentingPrintWriter;
+import libcore.io.IoUtils;
+
import com.google.android.collect.Lists;
import com.google.android.collect.Maps;
-import libcore.io.IoUtils;
-
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -60,9 +66,11 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ProtocolException;
+import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Objects;
/**
@@ -140,6 +148,63 @@ public class NetworkStatsCollection implements FileRotator.Reader {
return mStartMillis == Long.MAX_VALUE && mEndMillis == Long.MIN_VALUE;
}
+ @VisibleForTesting
+ public long roundUp(long time) {
+ if (time == Long.MIN_VALUE || time == Long.MAX_VALUE
+ || time == SubscriptionPlan.TIME_UNKNOWN) {
+ return time;
+ } else {
+ final long mod = time % mBucketDuration;
+ if (mod > 0) {
+ time -= mod;
+ time += mBucketDuration;
+ }
+ return time;
+ }
+ }
+
+ @VisibleForTesting
+ public long roundDown(long time) {
+ if (time == Long.MIN_VALUE || time == Long.MAX_VALUE
+ || time == SubscriptionPlan.TIME_UNKNOWN) {
+ return time;
+ } else {
+ final long mod = time % mBucketDuration;
+ if (mod > 0) {
+ time -= mod;
+ }
+ return time;
+ }
+ }
+
+ /**
+ * Safely multiple a value by a rational.
+ * <p>
+ * Internally it uses integer-based math whenever possible, but switches
+ * over to double-based math if values would overflow.
+ */
+ @VisibleForTesting
+ public static long multiplySafe(long value, long num, long den) {
+ long x = value;
+ long y = num;
+
+ // Logic shamelessly borrowed from Math.multiplyExact()
+ long r = x * y;
+ long ax = Math.abs(x);
+ long ay = Math.abs(y);
+ if (((ax | ay) >>> 31 != 0)) {
+ // Some bits greater than 2^31 that might cause overflow
+ // Check the result using the divide operator
+ // and check for the special case of Long.MIN_VALUE * -1
+ if (((y != 0) && (r / y != x)) ||
+ (x == Long.MIN_VALUE && y == -1)) {
+ // Use double math to avoid overflowing
+ return (long) (((double) num / den) * value);
+ }
+ }
+ return r / den;
+ }
+
public int[] getRelevantUids(@NetworkStatsAccess.Level int accessLevel) {
return getRelevantUids(accessLevel, Binder.getCallingUid());
}
@@ -165,60 +230,110 @@ public class NetworkStatsCollection implements FileRotator.Reader {
* Combine all {@link NetworkStatsHistory} in this collection which match
* the requested parameters.
*/
- public NetworkStatsHistory getHistory(
- NetworkTemplate template, int uid, int set, int tag, int fields,
- @NetworkStatsAccess.Level int accessLevel) {
- return getHistory(template, uid, set, tag, fields, Long.MIN_VALUE, Long.MAX_VALUE,
- accessLevel);
- }
-
- /**
- * Combine all {@link NetworkStatsHistory} in this collection which match
- * the requested parameters.
- */
- public NetworkStatsHistory getHistory(
- NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end,
- @NetworkStatsAccess.Level int accessLevel) {
- return getHistory(template, uid, set, tag, fields, start, end, accessLevel,
- Binder.getCallingUid());
- }
-
- /**
- * Combine all {@link NetworkStatsHistory} in this collection which match
- * the requested parameters.
- */
- public NetworkStatsHistory getHistory(
- NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end,
+ public NetworkStatsHistory getHistory(NetworkTemplate template, SubscriptionPlan augmentPlan,
+ int uid, int set, int tag, int fields, long start, long end,
@NetworkStatsAccess.Level int accessLevel, int callerUid) {
if (!NetworkStatsAccess.isAccessibleToUser(uid, callerUid, accessLevel)) {
throw new SecurityException("Network stats history of uid " + uid
+ " is forbidden for caller " + callerUid);
}
+ final int bucketEstimate = (int) ((end - start) / mBucketDuration);
final NetworkStatsHistory combined = new NetworkStatsHistory(
- mBucketDuration, start == end ? 1 : estimateBuckets(), fields);
+ mBucketDuration, bucketEstimate, fields);
// shortcut when we know stats will be empty
if (start == end) return combined;
+ // Figure out the window of time that we should be augmenting (if any)
+ long augmentStart = SubscriptionPlan.TIME_UNKNOWN;
+ long augmentEnd = (augmentPlan != null) ? augmentPlan.getDataUsageTime()
+ : SubscriptionPlan.TIME_UNKNOWN;
+ // And if augmenting, we might need to collect more data to adjust with
+ long collectStart = start;
+ long collectEnd = end;
+
+ if (augmentEnd != SubscriptionPlan.TIME_UNKNOWN) {
+ final Iterator<Pair<ZonedDateTime, ZonedDateTime>> it = augmentPlan.cycleIterator();
+ while (it.hasNext()) {
+ final Pair<ZonedDateTime, ZonedDateTime> cycle = it.next();
+ final long cycleStart = cycle.first.toInstant().toEpochMilli();
+ final long cycleEnd = cycle.second.toInstant().toEpochMilli();
+ if (cycleStart <= augmentEnd && augmentEnd < cycleEnd) {
+ augmentStart = cycleStart;
+ collectStart = Long.min(collectStart, augmentStart);
+ collectEnd = Long.max(collectEnd, augmentEnd);
+ break;
+ }
+ }
+ }
+
+ if (augmentStart != SubscriptionPlan.TIME_UNKNOWN) {
+ // Shrink augmentation window so we don't risk undercounting.
+ augmentStart = roundUp(augmentStart);
+ augmentEnd = roundDown(augmentEnd);
+ // Grow collection window so we get all the stats needed.
+ collectStart = roundDown(collectStart);
+ collectEnd = roundUp(collectEnd);
+ }
+
for (int i = 0; i < mStats.size(); i++) {
final Key key = mStats.keyAt(i);
if (key.uid == uid && NetworkStats.setMatches(set, key.set) && key.tag == tag
&& templateMatches(template, key.ident)) {
final NetworkStatsHistory value = mStats.valueAt(i);
- combined.recordHistory(value, start, end);
+ combined.recordHistory(value, collectStart, collectEnd);
}
}
- return combined;
- }
- /**
- * Summarize all {@link NetworkStatsHistory} in this collection which match
- * the requested parameters.
- */
- public NetworkStats getSummary(NetworkTemplate template, long start, long end,
- @NetworkStatsAccess.Level int accessLevel) {
- return getSummary(template, start, end, accessLevel, Binder.getCallingUid());
+ if (augmentStart != SubscriptionPlan.TIME_UNKNOWN) {
+ final NetworkStatsHistory.Entry entry = combined.getValues(
+ augmentStart, augmentEnd, null);
+
+ // If we don't have any recorded data for this time period, give
+ // ourselves something to scale with.
+ if (entry.rxBytes == 0 || entry.txBytes == 0) {
+ combined.recordData(augmentStart, augmentEnd,
+ new NetworkStats.Entry(1, 0, 1, 0, 0));
+ combined.getValues(augmentStart, augmentEnd, entry);
+ }
+
+ final long rawBytes = entry.rxBytes + entry.txBytes;
+ final long rawRxBytes = entry.rxBytes;
+ final long rawTxBytes = entry.txBytes;
+ final long targetBytes = augmentPlan.getDataUsageBytes();
+ final long targetRxBytes = multiplySafe(targetBytes, rawRxBytes, rawBytes);
+ final long targetTxBytes = multiplySafe(targetBytes, rawTxBytes, rawBytes);
+
+ // Scale all matching buckets to reach anchor target
+ final long beforeTotal = combined.getTotalBytes();
+ for (int i = 0; i < combined.size(); i++) {
+ combined.getValues(i, entry);
+ if (entry.bucketStart >= augmentStart
+ && entry.bucketStart + entry.bucketDuration <= augmentEnd) {
+ entry.rxBytes = multiplySafe(targetRxBytes, entry.rxBytes, rawRxBytes);
+ entry.txBytes = multiplySafe(targetTxBytes, entry.txBytes, rawTxBytes);
+ // We purposefully clear out packet counters to indicate
+ // that this data has been augmented.
+ entry.rxPackets = 0;
+ entry.txPackets = 0;
+ combined.setValues(i, entry);
+ }
+ }
+
+ final long deltaTotal = combined.getTotalBytes() - beforeTotal;
+ if (deltaTotal != 0) {
+ Slog.d(TAG, "Augmented network usage by " + deltaTotal + " bytes");
+ }
+
+ // Finally we can slice data as originally requested
+ final NetworkStatsHistory sliced = new NetworkStatsHistory(
+ mBucketDuration, bucketEstimate, fields);
+ sliced.recordHistory(combined, start, end);
+ return sliced;
+ } else {
+ return combined;
+ }
}
/**
@@ -230,6 +345,7 @@ public class NetworkStatsCollection implements FileRotator.Reader {
final long now = System.currentTimeMillis();
final NetworkStats stats = new NetworkStats(end - start, 24);
+
// shortcut when we know stats will be empty
if (start == end) return stats;
diff --git a/services/core/java/com/android/server/net/NetworkStatsObservers.java b/services/core/java/com/android/server/net/NetworkStatsObservers.java
index a256cbcf9030..741c2062bd57 100644
--- a/services/core/java/com/android/server/net/NetworkStatsObservers.java
+++ b/services/core/java/com/android/server/net/NetworkStatsObservers.java
@@ -17,28 +17,26 @@
package com.android.server.net;
import static android.net.TrafficStats.MB_IN_BYTES;
+
import static com.android.internal.util.Preconditions.checkArgument;
import android.app.usage.NetworkStatsManager;
import android.net.DataUsageRequest;
import android.net.NetworkStats;
-import android.net.NetworkStats.NonMonotonicObserver;
import android.net.NetworkStatsHistory;
import android.net.NetworkTemplate;
-import android.os.Binder;
import android.os.Bundle;
-import android.os.Looper;
-import android.os.Message;
-import android.os.Messenger;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
+import android.os.Looper;
+import android.os.Message;
+import android.os.Messenger;
import android.os.Process;
import android.os.RemoteException;
import android.util.ArrayMap;
-import android.util.IntArray;
-import android.util.SparseArray;
import android.util.Slog;
+import android.util.SparseArray;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.net.VpnInfo;
@@ -410,7 +408,7 @@ class NetworkStatsObservers {
*/
private long getTotalBytesForNetworkUid(NetworkTemplate template, int uid) {
try {
- NetworkStatsHistory history = mCollection.getHistory(template, uid,
+ NetworkStatsHistory history = mCollection.getHistory(template, null, uid,
NetworkStats.SET_ALL, NetworkStats.TAG_NONE,
NetworkStatsHistory.FIELD_ALL,
Long.MIN_VALUE /* start */, Long.MAX_VALUE /* end */,
diff --git a/services/core/java/com/android/server/net/NetworkStatsRecorder.java b/services/core/java/com/android/server/net/NetworkStatsRecorder.java
index 80309e19eb42..4bee55ef8b22 100644
--- a/services/core/java/com/android/server/net/NetworkStatsRecorder.java
+++ b/services/core/java/com/android/server/net/NetworkStatsRecorder.java
@@ -20,6 +20,7 @@ import static android.net.NetworkStats.TAG_NONE;
import static android.net.TrafficStats.KB_IN_BYTES;
import static android.net.TrafficStats.MB_IN_BYTES;
import static android.text.format.DateUtils.YEAR_IN_MILLIS;
+
import static com.android.internal.util.Preconditions.checkNotNull;
import android.annotation.Nullable;
@@ -28,6 +29,7 @@ import android.net.NetworkStats.NonMonotonicObserver;
import android.net.NetworkStatsHistory;
import android.net.NetworkTemplate;
import android.net.TrafficStats;
+import android.os.Binder;
import android.os.DropBoxManager;
import android.service.NetworkStatsRecorderProto;
import android.util.Log;
@@ -38,6 +40,9 @@ import android.util.proto.ProtoOutputStream;
import com.android.internal.net.VpnInfo;
import com.android.internal.util.FileRotator;
import com.android.internal.util.IndentingPrintWriter;
+
+import libcore.io.IoUtils;
+
import com.google.android.collect.Sets;
import java.io.ByteArrayOutputStream;
@@ -52,8 +57,6 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.Map;
-import libcore.io.IoUtils;
-
/**
* Logic to record deltas between periodic {@link NetworkStats} snapshots into
* {@link NetworkStatsHistory} that belong to {@link NetworkStatsCollection}.
@@ -150,7 +153,7 @@ public class NetworkStatsRecorder {
public NetworkStats.Entry getTotalSinceBootLocked(NetworkTemplate template) {
return mSinceBoot.getSummary(template, Long.MIN_VALUE, Long.MAX_VALUE,
- NetworkStatsAccess.Level.DEVICE).getTotal(null);
+ NetworkStatsAccess.Level.DEVICE, Binder.getCallingUid()).getTotal(null);
}
public NetworkStatsCollection getSinceBoot() {
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index b14aa13bfb28..3af5265e6fa9 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -26,6 +26,8 @@ import static android.content.Intent.EXTRA_UID;
import static android.net.ConnectivityManager.ACTION_TETHER_STATE_CHANGED;
import static android.net.ConnectivityManager.isNetworkTypeMobile;
import static android.net.NetworkStats.IFACE_ALL;
+import static android.net.NetworkStats.METERED_ALL;
+import static android.net.NetworkStats.ROAMING_ALL;
import static android.net.NetworkStats.SET_ALL;
import static android.net.NetworkStats.SET_DEFAULT;
import static android.net.NetworkStats.SET_FOREGROUND;
@@ -33,10 +35,12 @@ import static android.net.NetworkStats.STATS_PER_IFACE;
import static android.net.NetworkStats.STATS_PER_UID;
import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStats.UID_ALL;
+import static android.net.NetworkStatsHistory.FIELD_ALL;
import static android.net.NetworkTemplate.buildTemplateMobileWildcard;
import static android.net.NetworkTemplate.buildTemplateWifiWildcard;
import static android.net.TrafficStats.KB_IN_BYTES;
import static android.net.TrafficStats.MB_IN_BYTES;
+import static android.provider.Settings.Global.NETSTATS_AUGMENT_ENABLED;
import static android.provider.Settings.Global.NETSTATS_DEV_BUCKET_DURATION;
import static android.provider.Settings.Global.NETSTATS_DEV_DELETE_AGE;
import static android.provider.Settings.Global.NETSTATS_DEV_PERSIST_BYTES;
@@ -65,6 +69,7 @@ import static com.android.server.NetworkManagementSocketTagger.setKernelCounterS
import android.app.AlarmManager;
import android.app.PendingIntent;
+import android.app.usage.NetworkStatsManager;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
@@ -104,6 +109,8 @@ import android.provider.Settings;
import android.provider.Settings.Global;
import android.service.NetworkInterfaceProto;
import android.service.NetworkStatsServiceDumpProto;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionPlan;
import android.telephony.TelephonyManager;
import android.text.format.DateUtils;
import android.util.ArrayMap;
@@ -117,6 +124,7 @@ import android.util.SparseIntArray;
import android.util.TrustedTime;
import android.util.proto.ProtoOutputStream;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.net.VpnInfo;
import com.android.internal.util.ArrayUtils;
@@ -139,8 +147,8 @@ import java.util.List;
* other system services.
*/
public class NetworkStatsService extends INetworkStatsService.Stub {
- private static final String TAG = "NetworkStats";
- private static final boolean LOGV = false;
+ static final String TAG = "NetworkStats";
+ static final boolean LOGV = false;
private static final int MSG_PERFORM_POLL = 1;
private static final int MSG_UPDATE_IFACES = 2;
@@ -194,6 +202,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
public long getPollInterval();
public long getTimeCacheMaxAge();
public boolean getSampleEnabled();
+ public boolean getAugmentEnabled();
public static class Config {
public final long bucketDuration;
@@ -233,12 +242,17 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
private final DropBoxNonMonotonicObserver mNonMonotonicObserver =
new DropBoxNonMonotonicObserver();
+ @GuardedBy("mStatsLock")
private NetworkStatsRecorder mDevRecorder;
+ @GuardedBy("mStatsLock")
private NetworkStatsRecorder mXtRecorder;
+ @GuardedBy("mStatsLock")
private NetworkStatsRecorder mUidRecorder;
+ @GuardedBy("mStatsLock")
private NetworkStatsRecorder mUidTagRecorder;
/** Cached {@link #mXtRecorder} stats. */
+ @GuardedBy("mStatsLock")
private NetworkStatsCollection mXtStatsCached;
/** Current counter sets for each UID. */
@@ -320,15 +334,15 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
return;
}
- // create data recorders along with historical rotators
- mDevRecorder = buildRecorder(PREFIX_DEV, mSettings.getDevConfig(), false);
- mXtRecorder = buildRecorder(PREFIX_XT, mSettings.getXtConfig(), false);
- mUidRecorder = buildRecorder(PREFIX_UID, mSettings.getUidConfig(), false);
- mUidTagRecorder = buildRecorder(PREFIX_UID_TAG, mSettings.getUidTagConfig(), true);
+ synchronized (mStatsLock) {
+ // create data recorders along with historical rotators
+ mDevRecorder = buildRecorder(PREFIX_DEV, mSettings.getDevConfig(), false);
+ mXtRecorder = buildRecorder(PREFIX_XT, mSettings.getXtConfig(), false);
+ mUidRecorder = buildRecorder(PREFIX_UID, mSettings.getUidConfig(), false);
+ mUidTagRecorder = buildRecorder(PREFIX_UID_TAG, mSettings.getUidTagConfig(), true);
- updatePersistThresholds();
+ updatePersistThresholdsLocked();
- synchronized (mStatsLock) {
// upgrade any legacy stats, migrating them to rotated files
maybeUpgradeLegacyStatsLocked();
@@ -466,18 +480,20 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
@Override
public INetworkStatsSession openSession() {
- return createSession(null, /* poll on create */ false);
+ // NOTE: if callers want to get non-augmented data, they should go
+ // through the public API
+ return openSessionInternal(NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN, null);
}
@Override
- public INetworkStatsSession openSessionForUsageStats(final String callingPackage) {
- return createSession(callingPackage, /* poll on create */ true);
+ public INetworkStatsSession openSessionForUsageStats(int flags, String callingPackage) {
+ return openSessionInternal(flags, callingPackage);
}
- private INetworkStatsSession createSession(final String callingPackage, boolean pollOnCreate) {
+ private INetworkStatsSession openSessionInternal(final int flags, final String callingPackage) {
assertBandwidthControlEnabled();
- if (pollOnCreate) {
+ if ((flags & NetworkStatsManager.FLAG_POLL_ON_OPEN) != 0) {
final long ident = Binder.clearCallingIdentity();
try {
performPoll(FLAG_PERSIST_ALL);
@@ -490,9 +506,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
// for its lifetime; when caller closes only weak references remain.
return new INetworkStatsSession.Stub() {
+ private final int mCallingUid = Binder.getCallingUid();
+ private final String mCallingPackage = callingPackage;
+ private final @NetworkStatsAccess.Level int mAccessLevel = checkAccessLevel(
+ callingPackage);
+
private NetworkStatsCollection mUidComplete;
private NetworkStatsCollection mUidTagComplete;
- private String mCallingPackage = callingPackage;
private NetworkStatsCollection getUidComplete() {
synchronized (mStatsLock) {
@@ -514,55 +534,38 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
@Override
public int[] getRelevantUids() {
- return getUidComplete().getRelevantUids(checkAccessLevel(mCallingPackage));
+ return getUidComplete().getRelevantUids(mAccessLevel);
}
@Override
- public NetworkStats getDeviceSummaryForNetwork(NetworkTemplate template, long start,
- long end) {
- @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage);
- if (accessLevel < NetworkStatsAccess.Level.DEVICESUMMARY) {
- throw new SecurityException("Calling package " + mCallingPackage
- + " cannot access device summary network stats");
- }
- NetworkStats result = new NetworkStats(end - start, 1);
- final long ident = Binder.clearCallingIdentity();
- try {
- // Using access level higher than the one we checked for above.
- // Reason is that we are combining usage data in a way that is not PII
- // anymore.
- result.combineAllValues(
- internalGetSummaryForNetwork(template, start, end,
- NetworkStatsAccess.Level.DEVICE));
- } finally {
- Binder.restoreCallingIdentity(ident);
- }
- return result;
+ public NetworkStats getDeviceSummaryForNetwork(
+ NetworkTemplate template, long start, long end) {
+ return internalGetSummaryForNetwork(template, flags, start, end, mAccessLevel,
+ mCallingUid);
}
@Override
public NetworkStats getSummaryForNetwork(
NetworkTemplate template, long start, long end) {
- @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage);
- return internalGetSummaryForNetwork(template, start, end, accessLevel);
+ return internalGetSummaryForNetwork(template, flags, start, end, mAccessLevel,
+ mCallingUid);
}
@Override
public NetworkStatsHistory getHistoryForNetwork(NetworkTemplate template, int fields) {
- @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage);
- return internalGetHistoryForNetwork(template, fields, accessLevel);
+ return internalGetHistoryForNetwork(template, flags, fields, mAccessLevel,
+ mCallingUid);
}
@Override
public NetworkStats getSummaryForAllUid(
NetworkTemplate template, long start, long end, boolean includeTags) {
try {
- @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage);
- final NetworkStats stats =
- getUidComplete().getSummary(template, start, end, accessLevel);
+ final NetworkStats stats = getUidComplete()
+ .getSummary(template, start, end, mAccessLevel, mCallingUid);
if (includeTags) {
final NetworkStats tagStats = getUidTagComplete()
- .getSummary(template, start, end, accessLevel);
+ .getSummary(template, start, end, mAccessLevel, mCallingUid);
stats.combineAllValues(tagStats);
}
return stats;
@@ -576,13 +579,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
@Override
public NetworkStatsHistory getHistoryForUid(
NetworkTemplate template, int uid, int set, int tag, int fields) {
- @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage);
+ // NOTE: We don't augment UID-level statistics
if (tag == TAG_NONE) {
- return getUidComplete().getHistory(template, uid, set, tag, fields,
- accessLevel);
+ return getUidComplete().getHistory(template, null, uid, set, tag, fields,
+ Long.MIN_VALUE, Long.MAX_VALUE, mAccessLevel, mCallingUid);
} else {
- return getUidTagComplete().getHistory(template, uid, set, tag, fields,
- accessLevel);
+ return getUidTagComplete().getHistory(template, null, uid, set, tag, fields,
+ Long.MIN_VALUE, Long.MAX_VALUE, mAccessLevel, mCallingUid);
}
}
@@ -590,13 +593,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
public NetworkStatsHistory getHistoryIntervalForUid(
NetworkTemplate template, int uid, int set, int tag, int fields,
long start, long end) {
- @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage);
+ // NOTE: We don't augment UID-level statistics
if (tag == TAG_NONE) {
- return getUidComplete().getHistory(template, uid, set, tag, fields, start, end,
- accessLevel);
+ return getUidComplete().getHistory(template, null, uid, set, tag, fields,
+ start, end, mAccessLevel, mCallingUid);
} else if (uid == Binder.getCallingUid()) {
- return getUidTagComplete().getHistory(template, uid, set, tag, fields,
- start, end, accessLevel);
+ return getUidTagComplete().getHistory(template, null, uid, set, tag, fields,
+ start, end, mAccessLevel, mCallingUid);
} else {
throw new SecurityException("Calling package " + mCallingPackage
+ " cannot access tag information from a different uid");
@@ -617,36 +620,87 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
}
/**
+ * Find the most relevant {@link SubscriptionPlan} for the given
+ * {@link NetworkTemplate} and flags. This is typically used to augment
+ * local measurement results to match a known anchor from the carrier.
+ */
+ private SubscriptionPlan resolveSubscriptionPlan(NetworkTemplate template, int flags) {
+ SubscriptionPlan plan = null;
+ if ((flags & NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN) != 0
+ && (template.getMatchRule() == NetworkTemplate.MATCH_MOBILE_ALL)
+ && mSettings.getAugmentEnabled()) {
+ Slog.d(TAG, "Resolving plan for " + template);
+ final long token = Binder.clearCallingIdentity();
+ try {
+ final SubscriptionManager sm = mContext.getSystemService(SubscriptionManager.class);
+ final TelephonyManager tm = mContext.getSystemService(TelephonyManager.class);
+ for (int subId : sm.getActiveSubscriptionIdList()) {
+ if (template.matchesSubscriberId(tm.getSubscriberId(subId))) {
+ Slog.d(TAG, "Found active matching subId " + subId);
+ final List<SubscriptionPlan> plans = sm.getSubscriptionPlans(subId);
+ if (!plans.isEmpty()) {
+ plan = plans.get(0);
+ }
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ Slog.d(TAG, "Resolved to plan " + plan);
+ }
+ return plan;
+ }
+
+ /**
* Return network summary, splicing between DEV and XT stats when
* appropriate.
*/
- private NetworkStats internalGetSummaryForNetwork(
- NetworkTemplate template, long start, long end,
- @NetworkStatsAccess.Level int accessLevel) {
+ private NetworkStats internalGetSummaryForNetwork(NetworkTemplate template, int flags,
+ long start, long end, @NetworkStatsAccess.Level int accessLevel, int callingUid) {
// We've been using pure XT stats long enough that we no longer need to
// splice DEV and XT together.
- return mXtStatsCached.getSummary(template, start, end, accessLevel);
+ final NetworkStatsHistory history = internalGetHistoryForNetwork(template, flags, FIELD_ALL,
+ accessLevel, callingUid);
+
+ final long now = System.currentTimeMillis();
+ final NetworkStatsHistory.Entry entry = history.getValues(start, end, now, null);
+
+ final NetworkStats stats = new NetworkStats(end - start, 1);
+ stats.addValues(new NetworkStats.Entry(IFACE_ALL, UID_ALL, SET_ALL, TAG_NONE, METERED_ALL,
+ ROAMING_ALL, entry.rxBytes, entry.rxPackets, entry.txBytes, entry.txPackets,
+ entry.operations));
+ return stats;
}
/**
* Return network history, splicing between DEV and XT stats when
* appropriate.
*/
- private NetworkStatsHistory internalGetHistoryForNetwork(NetworkTemplate template, int fields,
- @NetworkStatsAccess.Level int accessLevel) {
+ private NetworkStatsHistory internalGetHistoryForNetwork(NetworkTemplate template,
+ int flags, int fields, @NetworkStatsAccess.Level int accessLevel, int callingUid) {
// We've been using pure XT stats long enough that we no longer need to
// splice DEV and XT together.
- return mXtStatsCached.getHistory(template, UID_ALL, SET_ALL, TAG_NONE, fields, accessLevel);
+ final SubscriptionPlan augmentPlan = resolveSubscriptionPlan(template, flags);
+ synchronized (mStatsLock) {
+ return mXtStatsCached.getHistory(template, augmentPlan,
+ UID_ALL, SET_ALL, TAG_NONE, fields, Long.MIN_VALUE, Long.MAX_VALUE,
+ accessLevel, callingUid);
+ }
}
@Override
public long getNetworkTotalBytes(NetworkTemplate template, long start, long end) {
- // Special case - since this is for internal use only, don't worry about a full access level
- // check and just require the signature/privileged permission.
+ // Special case - since this is for internal use only, don't worry about
+ // a full access level check and just require the signature/privileged
+ // permission.
mContext.enforceCallingOrSelfPermission(READ_NETWORK_USAGE_HISTORY, TAG);
assertBandwidthControlEnabled();
- return internalGetSummaryForNetwork(template, start, end, NetworkStatsAccess.Level.DEVICE)
- .getTotalBytes();
+
+ // NOTE: if callers want to get non-augmented data, they should go
+ // through the public API
+ return internalGetSummaryForNetwork(template,
+ NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN, start, end,
+ NetworkStatsAccess.Level.DEVICE, Binder.getCallingUid()).getTotalBytes();
}
@Override
@@ -768,7 +822,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
synchronized (mStatsLock) {
if (!mSystemReady) return;
- updatePersistThresholds();
+ updatePersistThresholdsLocked();
mDevRecorder.maybePersistLocked(currentTime);
mXtRecorder.maybePersistLocked(currentTime);
@@ -824,7 +878,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
* reflect current {@link #mPersistThreshold} value. Always defers to
* {@link Global} values when defined.
*/
- private void updatePersistThresholds() {
+ private void updatePersistThresholdsLocked() {
mDevRecorder.setPersistThreshold(mSettings.getDevPersistBytes(mPersistThreshold));
mXtRecorder.setPersistThreshold(mSettings.getXtPersistBytes(mPersistThreshold));
mUidRecorder.setPersistThreshold(mSettings.getUidPersistBytes(mPersistThreshold));
@@ -1266,7 +1320,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
synchronized (mStatsLock) {
if (args.length > 0 && "--proto".equals(args[0])) {
// In this case ignore all other arguments.
- dumpProto(fd);
+ dumpProtoLocked(fd);
return;
}
@@ -1342,7 +1396,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
}
}
- private void dumpProto(FileDescriptor fd) {
+ private void dumpProtoLocked(FileDescriptor fd) {
final ProtoOutputStream proto = new ProtoOutputStream(fd);
// TODO Right now it writes all history. Should it limit to the "since-boot" log?
@@ -1530,6 +1584,10 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
return getGlobalBoolean(NETSTATS_SAMPLE_ENABLED, true);
}
@Override
+ public boolean getAugmentEnabled() {
+ return getGlobalBoolean(NETSTATS_AUGMENT_ENABLED, true);
+ }
+ @Override
public Config getDevConfig() {
return new Config(getGlobalLong(NETSTATS_DEV_BUCKET_DURATION, HOUR_IN_MILLIS),
getGlobalLong(NETSTATS_DEV_ROTATE_AGE, 15 * DAY_IN_MILLIS),
diff --git a/services/core/java/com/android/server/notification/ConditionProviders.java b/services/core/java/com/android/server/notification/ConditionProviders.java
index 3444ef3ec2fa..c0fbfbb20b95 100644
--- a/services/core/java/com/android/server/notification/ConditionProviders.java
+++ b/services/core/java/com/android/server/notification/ConditionProviders.java
@@ -186,6 +186,11 @@ public class ConditionProviders extends ManagedServices {
super.onPackagesChanged(removingPackage, pkgList, uid);
}
+ @Override
+ protected boolean isValidEntry(String packageOrComponent, int userId) {
+ return true;
+ }
+
public ManagedServiceInfo checkServiceToken(IConditionProvider provider) {
synchronized(mMutex) {
return checkServiceTokenLocked(provider);
diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java
index d5d0250f82af..c1d7059d0e3d 100644
--- a/services/core/java/com/android/server/notification/ManagedServices.java
+++ b/services/core/java/com/android/server/notification/ManagedServices.java
@@ -45,12 +45,16 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
+import android.service.notification.ManagedServiceInfoProto;
+import android.service.notification.ManagedServicesProto;
+import android.service.notification.ManagedServicesProto.ServiceProto;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.proto.ProtoOutputStream;
import com.android.internal.util.XmlUtils;
import com.android.server.notification.NotificationManagerService.DumpFilter;
@@ -99,6 +103,7 @@ abstract public class ManagedServices {
protected final Object mMutex;
private final UserProfiles mUserProfiles;
private final IPackageManager mPm;
+ private final UserManager mUm;
private final Config mConfig;
// contains connections to all connected services, including app services
@@ -138,6 +143,7 @@ abstract public class ManagedServices {
mPm = pm;
mConfig = getConfig();
mApprovalLevel = APPROVAL_BY_COMPONENT;
+ mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
}
abstract protected Config getConfig();
@@ -212,6 +218,53 @@ abstract public class ManagedServices {
}
}
+ public void dump(ProtoOutputStream proto, DumpFilter filter) {
+ proto.write(ManagedServicesProto.CAPTION, getCaption());
+ final int N = mApproved.size();
+ for (int i = 0 ; i < N; i++) {
+ final int userId = mApproved.keyAt(i);
+ final ArrayMap<Boolean, ArraySet<String>> approvedByType = mApproved.valueAt(i);
+ if (approvedByType != null) {
+ final int M = approvedByType.size();
+ for (int j = 0; j < M; j++) {
+ final boolean isPrimary = approvedByType.keyAt(j);
+ final ArraySet<String> approved = approvedByType.valueAt(j);
+ if (approvedByType != null && approvedByType.size() > 0) {
+ final long sToken = proto.start(ManagedServicesProto.APPROVED);
+ for (String s : approved) {
+ proto.write(ServiceProto.NAME, s);
+ }
+ proto.write(ServiceProto.USER_ID, userId);
+ proto.write(ServiceProto.IS_PRIMARY, isPrimary);
+ proto.end(sToken);
+ }
+ }
+ }
+ }
+
+ for (ComponentName cmpt : mEnabledServicesForCurrentProfiles) {
+ if (filter != null && !filter.matches(cmpt)) continue;
+
+ final long cToken = proto.start(ManagedServicesProto.ENABLED);
+ cmpt.toProto(proto);
+ proto.end(cToken);
+ }
+
+ for (ManagedServiceInfo info : mServices) {
+ if (filter != null && !filter.matches(info.component)) continue;
+
+ final long lToken = proto.start(ManagedServicesProto.LIVE_SERVICES);
+ info.toProto(proto, this);
+ proto.end(lToken);
+ }
+
+ for (ComponentName name : mSnoozingForCurrentProfiles) {
+ final long cToken = proto.start(ManagedServicesProto.SNOOZED);
+ name.toProto(proto);
+ proto.end(cToken);
+ }
+ }
+
protected void onSettingRestored(String element, String value, int backupSdkInt, int userId) {
if (!mUseXml) {
Slog.d(TAG, "Restored managed service setting: " + element);
@@ -292,11 +345,14 @@ abstract public class ManagedServices {
}
if (type == XmlPullParser.START_TAG) {
if (TAG_MANAGED_SERVICES.equals(tag)) {
+ Slog.i(TAG, "Read " + mConfig.caption + " permissions from xml");
final String approved = XmlUtils.readStringAttribute(parser, ATT_APPROVED_LIST);
final int userId = XmlUtils.readIntAttribute(parser, ATT_USER_ID, 0);
final boolean isPrimary =
XmlUtils.readBooleanAttribute(parser, ATT_IS_PRIMARY, true);
- addApprovedList(approved, userId, isPrimary);
+ if (mUm.getUserInfo(userId) != null) {
+ addApprovedList(approved, userId, isPrimary);
+ }
mUseXml = true;
}
}
@@ -349,6 +405,8 @@ abstract public class ManagedServices {
protected void setPackageOrComponentEnabled(String pkgOrComponent, int userId,
boolean isPrimary, boolean enabled) {
+ Slog.i(TAG,
+ (enabled ? " Allowing " : "Disallowing ") + mConfig.caption + " " + pkgOrComponent);
ArrayMap<Boolean, ArraySet<String>> allowedByType = mApproved.get(userId);
if (allowedByType == null) {
allowedByType = new ArrayMap<>();
@@ -455,6 +513,12 @@ abstract public class ManagedServices {
}
}
+ public void onUserRemoved(int user) {
+ Slog.i(TAG, "Removing approved services for removed user " + user);
+ mApproved.remove(user);
+ rebindServices(true);
+ }
+
public void onUserSwitched(int user) {
if (DEBUG) Slog.d(TAG, "onUserSwitched u=" + user);
if (Arrays.equals(mLastSeenProfileIds, mUserProfiles.getCurrentProfileIds())) {
@@ -489,7 +553,7 @@ abstract public class ManagedServices {
return info;
}
throw new SecurityException("Disallowed call from unknown " + getCaption() + ": "
- + service);
+ + service + " " + service.getClass());
}
public void unregisterService(IInterface service, int userid) {
@@ -534,10 +598,8 @@ abstract public class ManagedServices {
}
// State changed
- if (DEBUG) {
- Slog.d(TAG, ((enabled) ? "Enabling " : "Disabling ") + "component " +
- component.flattenToShortString());
- }
+ Slog.d(TAG, ((enabled) ? "Enabling " : "Disabling ") + "component " +
+ component.flattenToShortString());
synchronized (mMutex) {
final int[] userIds = mUserProfiles.getCurrentProfileIds();
@@ -619,12 +681,10 @@ abstract public class ManagedServices {
int P = approved.size();
for (int k = P - 1; k >= 0; k--) {
final String approvedPackageOrComponent = approved.valueAt(k);
- if (!hasMatchingServices(approvedPackageOrComponent, userId)){
+ if (!isValidEntry(approvedPackageOrComponent, userId)){
approved.removeAt(k);
- if (DEBUG) {
- Slog.v(TAG, "Removing " + approvedPackageOrComponent
- + " from approved list; no matching services found");
- }
+ Slog.v(TAG, "Removing " + approvedPackageOrComponent
+ + " from approved list; no matching services found");
} else {
if (DEBUG) {
Slog.v(TAG, "Keeping " + approvedPackageOrComponent
@@ -669,6 +729,10 @@ abstract public class ManagedServices {
}
}
+ protected boolean isValidEntry(String packageOrComponent, int userId) {
+ return hasMatchingServices(packageOrComponent, userId);
+ }
+
private boolean hasMatchingServices(String packageOrComponent, int userId) {
if (!TextUtils.isEmpty(packageOrComponent)) {
final String packageName = getPackageName(packageOrComponent);
@@ -821,8 +885,7 @@ abstract public class ManagedServices {
if (name.equals(info.component)
&& info.userid == userid) {
// cut old connections
- if (DEBUG) Slog.v(TAG, " disconnecting old " + getCaption() + ": "
- + info.service);
+ Slog.v(TAG, " disconnecting old " + getCaption() + ": " + info.service);
removeServiceLocked(i);
if (info.connection != null) {
mContext.unbindService(info.connection);
@@ -850,7 +913,7 @@ abstract public class ManagedServices {
appInfo != null ? appInfo.targetSdkVersion : Build.VERSION_CODES.BASE;
try {
- if (DEBUG) Slog.v(TAG, "binding: " + intent);
+ Slog.v(TAG, "binding: " + intent);
ServiceConnection serviceConnection = new ServiceConnection() {
IInterface mService;
@@ -908,8 +971,7 @@ abstract public class ManagedServices {
final int N = mServices.size();
for (int i = N - 1; i >= 0; i--) {
final ManagedServiceInfo info = mServices.get(i);
- if (name.equals(info.component)
- && info.userid == userid) {
+ if (name.equals(info.component) && info.userid == userid) {
removeServiceLocked(i);
if (info.connection != null) {
try {
@@ -936,9 +998,8 @@ abstract public class ManagedServices {
final int N = mServices.size();
for (int i = N - 1; i >= 0; i--) {
final ManagedServiceInfo info = mServices.get(i);
- if (info.service.asBinder() == service.asBinder()
- && info.userid == userid) {
- if (DEBUG) Slog.d(TAG, "Removing active service " + info.component);
+ if (info.service.asBinder() == service.asBinder() && info.userid == userid) {
+ Slog.d(TAG, "Removing active service " + info.component);
serviceInfo = removeServiceLocked(i);
}
}
@@ -1026,6 +1087,16 @@ abstract public class ManagedServices {
.append(']').toString();
}
+ public void toProto(ProtoOutputStream proto, ManagedServices host) {
+ final long cToken = proto.start(ManagedServiceInfoProto.COMPONENT);
+ component.toProto(proto);
+ proto.end(cToken);
+ proto.write(ManagedServiceInfoProto.USER_ID, userid);
+ proto.write(ManagedServiceInfoProto.SERVICE, service.getClass().getName());
+ proto.write(ManagedServiceInfoProto.IS_SYSTEM, isSystem);
+ proto.write(ManagedServiceInfoProto.IS_GUEST, isGuest(host));
+ }
+
public boolean enabledAndUserMatches(int nid) {
if (!isEnabledForCurrentProfiles()) {
return false;
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index a693e9747db2..aa6b3a3ac22c 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -16,8 +16,10 @@
package com.android.server.notification;
+import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_MIN;
import static android.app.NotificationManager.IMPORTANCE_NONE;
+import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
import static android.content.pm.PackageManager.FEATURE_LEANBACK;
import static android.content.pm.PackageManager.FEATURE_TELEVISION;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
@@ -125,6 +127,7 @@ import android.service.notification.Condition;
import android.service.notification.IConditionProvider;
import android.service.notification.INotificationListener;
import android.service.notification.IStatusBarNotificationHolder;
+import android.service.notification.ListenersDisablingEffectsProto;
import android.service.notification.NotificationAssistantService;
import android.service.notification.NotificationListenerService;
import android.service.notification.NotificationRankingUpdate;
@@ -157,6 +160,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.internal.os.BackgroundThread;
import com.android.internal.statusbar.NotificationVisibility;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DumpUtils;
@@ -754,9 +758,12 @@ public class NotificationManagerService extends SystemService {
if (r != null) {
r.stats.onExpansionChanged(userAction, expanded);
final long now = System.currentTimeMillis();
- MetricsLogger.action(r.getLogMaker(now)
- .setCategory(MetricsEvent.NOTIFICATION_ITEM)
- .setType(MetricsEvent.TYPE_DETAIL));
+ if (userAction) {
+ MetricsLogger.action(r.getLogMaker(now)
+ .setCategory(MetricsEvent.NOTIFICATION_ITEM)
+ .setType(expanded ? MetricsEvent.TYPE_DETAIL
+ : MetricsEvent.TYPE_COLLAPSE));
+ }
EventLogTags.writeNotificationExpansion(key,
userAction ? 1 : 0, expanded ? 1 : 0,
r.getLifespanMs(now), r.getFreshnessMs(now), r.getExposureMs(now));
@@ -984,12 +991,17 @@ public class NotificationManagerService extends SystemService {
final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
if (userId != USER_NULL) {
mUserProfiles.updateCache(context);
- readDefaultApprovedServices(userId);
+ if (!mUserProfiles.isManagedProfile(userId)) {
+ readDefaultApprovedServices(userId);
+ }
}
} else if (action.equals(Intent.ACTION_USER_REMOVED)) {
final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
mZenModeHelper.onUserRemoved(user);
mRankingHelper.onUserRemoved(user);
+ mListeners.onUserRemoved(user);
+ mConditionProviders.onUserRemoved(user);
+ mAssistants.onUserRemoved(user);
savePolicyFile();
} else if (action.equals(Intent.ACTION_USER_UNLOCKED)) {
final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL);
@@ -1133,6 +1145,12 @@ public class NotificationManagerService extends SystemService {
}
@VisibleForTesting
+ NotificationRecord getNotificationRecord(String key) {
+ return mNotificationsByKey.get(key);
+ }
+
+
+ @VisibleForTesting
void setSystemReady(boolean systemReady) {
mSystemReady = systemReady;
}
@@ -1207,7 +1225,7 @@ public class NotificationManagerService extends SystemService {
mUsageStats = usageStats;
mRankingHandler = new RankingHandlerWorker(mRankingThread.getLooper());
mRankingHelper = new RankingHelper(getContext(),
- getContext().getPackageManager(),
+ mPackageManagerClient,
mRankingHandler,
mUsageStats,
extractorNames);
@@ -1454,10 +1472,20 @@ public class NotificationManagerService extends SystemService {
if (channel.getImportance() == NotificationManager.IMPORTANCE_NONE) {
// cancel
cancelAllNotificationsInt(MY_UID, MY_PID, pkg, channel.getId(), 0, 0, true,
- UserHandle.getUserId(Binder.getCallingUid()), REASON_CHANNEL_BANNED,
+ UserHandle.getUserId(uid), REASON_CHANNEL_BANNED,
null);
+ if (isUidSystemOrPhone(uid)) {
+ int[] profileIds = mUserProfiles.getCurrentProfileIds();
+ int N = profileIds.length;
+ for (int i = 0; i < N; i++) {
+ int profileId = profileIds[i];
+ cancelAllNotificationsInt(MY_UID, MY_PID, pkg, channel.getId(), 0, 0, true,
+ profileId, REASON_CHANNEL_BANNED,
+ null);
+ }
+ }
}
- mRankingHelper.updateNotificationChannel(pkg, uid, channel);
+ mRankingHelper.updateNotificationChannel(pkg, uid, channel, true);
if (!fromListener) {
final NotificationChannel modifiedChannel =
@@ -1470,6 +1498,19 @@ public class NotificationManagerService extends SystemService {
savePolicyFile();
}
+ private void createNotificationChannelGroup(String pkg, int uid, NotificationChannelGroup group,
+ boolean fromApp, boolean fromListener) {
+ Preconditions.checkNotNull(group);
+ Preconditions.checkNotNull(pkg);
+ mRankingHelper.createNotificationChannelGroup(pkg, uid, group,
+ fromApp);
+ if (!fromListener) {
+ mListeners.notifyNotificationChannelGroupChanged(pkg,
+ UserHandle.of(UserHandle.getCallingUserId()), group,
+ NOTIFICATION_CHANNEL_OR_GROUP_ADDED);
+ }
+ }
+
private ArrayList<ComponentName> getSuppressors() {
ArrayList<ComponentName> names = new ArrayList<ComponentName>();
for (int i = mListenersDisablingEffects.size() - 1; i >= 0; --i) {
@@ -1757,6 +1798,14 @@ public class NotificationManagerService extends SystemService {
}
@Override
+ public void updateNotificationChannelGroupForPackage(String pkg, int uid,
+ NotificationChannelGroup group) throws RemoteException {
+ enforceSystemOrSystemUI("Caller not system or systemui");
+ createNotificationChannelGroup(pkg, uid, group, false, false);
+ savePolicyFile();
+ }
+
+ @Override
public void createNotificationChannelGroups(String pkg,
ParceledListSlice channelGroupList) throws RemoteException {
checkCallerIsSystemOrSameApp(pkg);
@@ -1764,12 +1813,7 @@ public class NotificationManagerService extends SystemService {
final int groupSize = groups.size();
for (int i = 0; i < groupSize; i++) {
final NotificationChannelGroup group = groups.get(i);
- Preconditions.checkNotNull(group, "group in list is null");
- mRankingHelper.createNotificationChannelGroup(pkg, Binder.getCallingUid(), group,
- true /* fromTargetApp */);
- mListeners.notifyNotificationChannelGroupChanged(pkg,
- UserHandle.of(UserHandle.getCallingUserId()), group,
- NOTIFICATION_CHANNEL_OR_GROUP_ADDED);
+ createNotificationChannelGroup(pkg, Binder.getCallingUid(), group, true, false);
}
savePolicyFile();
}
@@ -1915,6 +1959,14 @@ public class NotificationManagerService extends SystemService {
}
@Override
+ public NotificationChannelGroup getPopulatedNotificationChannelGroupForPackage(
+ String pkg, int uid, String groupId, boolean includeDeleted) {
+ enforceSystemOrSystemUI("getPopulatedNotificationChannelGroupForPackage");
+ return mRankingHelper.getNotificationChannelGroupWithChannels(
+ pkg, uid, groupId, includeDeleted);
+ }
+
+ @Override
public NotificationChannelGroup getNotificationChannelGroupForPackage(
String groupId, String pkg, int uid) {
enforceSystemOrSystemUI("getNotificationChannelGroupForPackage");
@@ -2730,17 +2782,22 @@ public class NotificationManagerService extends SystemService {
public void setNotificationPolicyAccessGranted(String pkg, boolean granted)
throws RemoteException {
checkCallerIsSystemOrShell();
- if (!mActivityManager.isLowRamDevice()) {
- mConditionProviders.setPackageOrComponentEnabled(
- pkg, getCallingUserHandle().getIdentifier(), true, granted);
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ if (!mActivityManager.isLowRamDevice()) {
+ mConditionProviders.setPackageOrComponentEnabled(
+ pkg, getCallingUserHandle().getIdentifier(), true, granted);
- getContext().sendBroadcastAsUser(new Intent(
- NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED)
- .setPackage(pkg)
- .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY),
- getCallingUserHandle(), null);
+ getContext().sendBroadcastAsUser(new Intent(
+ NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED)
+ .setPackage(pkg)
+ .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY),
+ getCallingUserHandle(), null);
- savePolicyFile();
+ savePolicyFile();
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
}
}
@@ -2822,19 +2879,25 @@ public class NotificationManagerService extends SystemService {
boolean granted) throws RemoteException {
Preconditions.checkNotNull(listener);
checkCallerIsSystemOrShell();
- if (!mActivityManager.isLowRamDevice()) {
- mConditionProviders.setPackageOrComponentEnabled(listener.flattenToString(),
- userId, false, granted);
- mListeners.setPackageOrComponentEnabled(listener.flattenToString(),
- userId, true, granted);
-
- getContext().sendBroadcastAsUser(new Intent(
- NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED)
- .setPackage(listener.getPackageName())
- .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY),
- getCallingUserHandle(), null);
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ if (!mActivityManager.isLowRamDevice()) {
+ mConditionProviders.setPackageOrComponentEnabled(listener.flattenToString(),
+ userId, false, granted);
+ mListeners.setPackageOrComponentEnabled(listener.flattenToString(),
+ userId, true, granted);
- savePolicyFile();
+ getContext().sendBroadcastAsUser(new Intent(
+ NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED)
+
+ .setPackage(listener.getPackageName())
+ .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY),
+ getCallingUserHandle(), null);
+
+ savePolicyFile();
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
}
}
@@ -2843,19 +2906,24 @@ public class NotificationManagerService extends SystemService {
int userId, boolean granted) throws RemoteException {
Preconditions.checkNotNull(assistant);
checkCallerIsSystemOrShell();
- if (!mActivityManager.isLowRamDevice()) {
- mConditionProviders.setPackageOrComponentEnabled(assistant.flattenToString(),
- userId, false, granted);
- mAssistants.setPackageOrComponentEnabled(assistant.flattenToString(),
- userId, true, granted);
-
- getContext().sendBroadcastAsUser(new Intent(
- NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED)
- .setPackage(assistant.getPackageName())
- .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY),
- getCallingUserHandle(), null);
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ if (!mActivityManager.isLowRamDevice()) {
+ mConditionProviders.setPackageOrComponentEnabled(assistant.flattenToString(),
+ userId, false, granted);
+ mAssistants.setPackageOrComponentEnabled(assistant.flattenToString(),
+ userId, true, granted);
+
+ getContext().sendBroadcastAsUser(new Intent(
+ NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED)
+ .setPackage(assistant.getPackageName())
+ .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY),
+ getCallingUserHandle(), null);
- savePolicyFile();
+ savePolicyFile();
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
}
}
@@ -2917,6 +2985,17 @@ public class NotificationManagerService extends SystemService {
}
@Override
+ public void updateNotificationChannelGroupFromPrivilegedListener(
+ INotificationListener token, String pkg, UserHandle user,
+ NotificationChannelGroup group) throws RemoteException {
+ Preconditions.checkNotNull(user);
+ verifyPrivilegedListener(token, user);
+ createNotificationChannelGroup(
+ pkg, getUidForPackageAndUser(pkg, user), group, false, true);
+ savePolicyFile();
+ }
+
+ @Override
public void updateNotificationChannelFromPrivilegedListener(INotificationListener token,
String pkg, UserHandle user, NotificationChannel channel) throws RemoteException {
Preconditions.checkNotNull(channel);
@@ -3169,14 +3248,47 @@ public class NotificationManagerService extends SystemService {
}
}
proto.end(records);
- }
- long zenLog = proto.start(NotificationServiceDumpProto.ZEN);
- mZenModeHelper.dump(proto);
- for (ComponentName suppressor : mEffectsSuppressors) {
- proto.write(ZenModeProto.SUPPRESSORS, suppressor.toString());
+ long zenLog = proto.start(NotificationServiceDumpProto.ZEN);
+ mZenModeHelper.dump(proto);
+ for (ComponentName suppressor : mEffectsSuppressors) {
+ proto.write(ZenModeProto.SUPPRESSORS, suppressor.toString());
+ }
+ proto.end(zenLog);
+
+ long listenersToken = proto.start(NotificationServiceDumpProto.NOTIFICATION_LISTENERS);
+ mListeners.dump(proto, filter);
+ proto.end(listenersToken);
+
+ proto.write(NotificationServiceDumpProto.LISTENER_HINTS, mListenerHints);
+
+ for (int i = 0; i < mListenersDisablingEffects.size(); ++i) {
+ long effectsToken = proto.start(
+ NotificationServiceDumpProto.LISTENERS_DISABLING_EFFECTS);
+
+ proto.write(
+ ListenersDisablingEffectsProto.HINT, mListenersDisablingEffects.keyAt(i));
+ final ArraySet<ManagedServiceInfo> listeners =
+ mListenersDisablingEffects.valueAt(i);
+ for (int j = 0; j < listeners.size(); j++) {
+ final ManagedServiceInfo listener = listeners.valueAt(i);
+ listenersToken = proto.start(ListenersDisablingEffectsProto.LISTENERS);
+ listener.toProto(proto, null);
+ proto.end(listenersToken);
+ }
+
+ proto.end(effectsToken);
+ }
+
+ long assistantsToken = proto.start(
+ NotificationServiceDumpProto.NOTIFICATION_ASSISTANTS);
+ mAssistants.dump(proto, filter);
+ proto.end(assistantsToken);
+
+ long conditionsToken = proto.start(NotificationServiceDumpProto.CONDITION_PROVIDERS);
+ mConditionProviders.dump(proto, filter);
+ proto.end(conditionsToken);
}
- proto.end(zenLog);
proto.flush();
}
@@ -3449,6 +3561,21 @@ public class NotificationManagerService extends SystemService {
user, null, System.currentTimeMillis());
final NotificationRecord r = new NotificationRecord(getContext(), n, channel);
+ if ((notification.flags & Notification.FLAG_FOREGROUND_SERVICE) != 0
+ && (channel.getUserLockedFields() & NotificationChannel.USER_LOCKED_IMPORTANCE) == 0
+ && (r.getImportance() == IMPORTANCE_MIN || r.getImportance() == IMPORTANCE_NONE)) {
+ // Increase the importance of foreground service notifications unless the user had an
+ // opinion otherwise
+ if (TextUtils.isEmpty(channelId)
+ || NotificationChannel.DEFAULT_CHANNEL_ID.equals(channelId)) {
+ r.setImportance(IMPORTANCE_LOW, "Bumped for foreground service");
+ } else {
+ channel.setImportance(IMPORTANCE_LOW);
+ mRankingHelper.updateNotificationChannel(pkg, notificationUid, channel, false);
+ r.updateNotificationChannel(channel);
+ }
+ }
+
if (!checkDisqualifyingFeatures(userId, notificationUid, id, tag, r,
r.sbn.getOverrideGroupKey() != null)) {
return;
@@ -3612,9 +3739,10 @@ public class NotificationManagerService extends SystemService {
usageStats.registerSuspendedByAdmin(r);
return isPackageSuspended;
}
-
final boolean isBlocked =
- mRankingHelper.getImportance(pkg, callingUid) == NotificationManager.IMPORTANCE_NONE
+ mRankingHelper.isGroupBlocked(pkg, callingUid, r.getChannel().getGroup())
+ || mRankingHelper.getImportance(pkg, callingUid)
+ == NotificationManager.IMPORTANCE_NONE
|| r.getChannel().getImportance() == NotificationManager.IMPORTANCE_NONE;
if (isBlocked) {
Slog.e(TAG, "Suppressing notification from package by user request.");
@@ -5567,13 +5695,10 @@ public class NotificationManagerService extends SystemService {
continue;
}
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- if (hasCompanionDevice(serviceInfo)) {
- notifyNotificationChannelChanged(
- serviceInfo, pkg, user, channel, modificationType);
- }
+ BackgroundThread.getHandler().post(() -> {
+ if (hasCompanionDevice(serviceInfo)) {
+ notifyNotificationChannelChanged(
+ serviceInfo, pkg, user, channel, modificationType);
}
});
}
@@ -5590,13 +5715,10 @@ public class NotificationManagerService extends SystemService {
continue;
}
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- if (hasCompanionDevice(serviceInfo)) {
- notifyNotificationChannelGroupChanged(
- serviceInfo, pkg, user, group, modificationType);
- }
+ BackgroundThread.getHandler().post(() -> {
+ if (hasCompanionDevice(serviceInfo)) {
+ notifyNotificationChannelGroupChanged(
+ serviceInfo, pkg, user, group, modificationType);
}
});
}
diff --git a/services/core/java/com/android/server/notification/NotificationUsageStats.java b/services/core/java/com/android/server/notification/NotificationUsageStats.java
index c8f4d31c3726..e40dad6e83f1 100644
--- a/services/core/java/com/android/server/notification/NotificationUsageStats.java
+++ b/services/core/java/com/android/server/notification/NotificationUsageStats.java
@@ -1059,6 +1059,9 @@ public class NotificationUsageStats {
private static final int EVENT_TYPE_CLICK = 2;
private static final int EVENT_TYPE_REMOVE = 3;
private static final int EVENT_TYPE_DISMISS = 4;
+
+ private static final int IDLE_CONNECTION_TIMEOUT_MS = 30000;
+
private static long sLastPruneMs;
private static long sNumWrites;
@@ -1141,6 +1144,12 @@ public class NotificationUsageStats {
}
@Override
+ public void onConfigure(SQLiteDatabase db) {
+ // Memory optimization - close idle connections after 30s of inactivity
+ setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS);
+ }
+
+ @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion != newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TAB_LOG);
diff --git a/services/core/java/com/android/server/notification/RankingConfig.java b/services/core/java/com/android/server/notification/RankingConfig.java
index 36da04dfc3c6..b9c0d90741f3 100644
--- a/services/core/java/com/android/server/notification/RankingConfig.java
+++ b/services/core/java/com/android/server/notification/RankingConfig.java
@@ -29,6 +29,7 @@ public interface RankingConfig {
void setShowBadge(String packageName, int uid, boolean showBadge);
boolean canShowBadge(String packageName, int uid);
boolean badgingEnabled(UserHandle userHandle);
+ boolean isGroupBlocked(String packageName, int uid, String groupId);
Collection<NotificationChannelGroup> getNotificationChannelGroups(String pkg,
int uid);
@@ -38,7 +39,7 @@ public interface RankingConfig {
int uid, boolean includeDeleted);
void createNotificationChannel(String pkg, int uid, NotificationChannel channel,
boolean fromTargetApp);
- void updateNotificationChannel(String pkg, int uid, NotificationChannel channel);
+ void updateNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromUser);
NotificationChannel getNotificationChannel(String pkg, int uid, String channelId, boolean includeDeleted);
void deleteNotificationChannel(String pkg, int uid, String channelId);
void permanentlyDeleteNotificationChannel(String pkg, int uid, String channelId);
diff --git a/services/core/java/com/android/server/notification/RankingHelper.java b/services/core/java/com/android/server/notification/RankingHelper.java
index 3386fe832e0f..fea2464ba5b8 100644
--- a/services/core/java/com/android/server/notification/RankingHelper.java
+++ b/services/core/java/com/android/server/notification/RankingHelper.java
@@ -215,6 +215,7 @@ public class RankingHelper implements RankingConfig {
if (!TextUtils.isEmpty(id)) {
NotificationChannelGroup group
= new NotificationChannelGroup(id, groupName);
+ group.populateFromXml(parser);
r.groups.put(id, group);
}
}
@@ -493,6 +494,19 @@ public class RankingHelper implements RankingConfig {
updateConfig();
}
+ @Override
+ public boolean isGroupBlocked(String packageName, int uid, String groupId) {
+ if (groupId == null) {
+ return false;
+ }
+ Record r = getOrCreateRecord(packageName, uid);
+ NotificationChannelGroup group = r.groups.get(groupId);
+ if (group == null) {
+ return false;
+ }
+ return group.isBlocked();
+ }
+
int getPackagePriority(String pkg, int uid) {
return getOrCreateRecord(pkg, uid).priority;
}
@@ -514,9 +528,16 @@ public class RankingHelper implements RankingConfig {
}
final NotificationChannelGroup oldGroup = r.groups.get(group.getId());
if (!group.equals(oldGroup)) {
- // will log for new entries as well as name changes
+ // will log for new entries as well as name/description changes
MetricsLogger.action(getChannelGroupLog(group.getId(), pkg));
}
+ if (oldGroup != null) {
+ group.setChannels(oldGroup.getChannels());
+
+ if (fromTargetApp) {
+ group.setBlocked(oldGroup.isBlocked());
+ }
+ }
r.groups.put(group.getId(), group);
}
@@ -552,6 +573,9 @@ public class RankingHelper implements RankingConfig {
existing.setName(channel.getName().toString());
existing.setDescription(channel.getDescription());
existing.setBlockableSystem(channel.isBlockableSystem());
+ if (existing.getGroup() == null) {
+ existing.setGroup(channel.getGroup());
+ }
// Apps are allowed to downgrade channel importance if the user has not changed any
// fields on this channel yet.
@@ -589,7 +613,8 @@ public class RankingHelper implements RankingConfig {
}
@Override
- public void updateNotificationChannel(String pkg, int uid, NotificationChannel updatedChannel) {
+ public void updateNotificationChannel(String pkg, int uid, NotificationChannel updatedChannel,
+ boolean fromUser) {
Preconditions.checkNotNull(updatedChannel);
Preconditions.checkNotNull(updatedChannel.getId());
Record r = getOrCreateRecord(pkg, uid);
@@ -603,7 +628,11 @@ public class RankingHelper implements RankingConfig {
if (updatedChannel.getLockscreenVisibility() == Notification.VISIBILITY_PUBLIC) {
updatedChannel.setLockscreenVisibility(Ranking.VISIBILITY_NO_OVERRIDE);
}
- lockFieldsForUpdate(channel, updatedChannel);
+ updatedChannel.unlockFields(updatedChannel.getUserLockedFields());
+ updatedChannel.lockFields(channel.getUserLockedFields());
+ if (fromUser) {
+ lockFieldsForUpdate(channel, updatedChannel);
+ }
r.channels.put(updatedChannel.getId(), updatedChannel);
if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(updatedChannel.getId())) {
@@ -684,6 +713,27 @@ public class RankingHelper implements RankingConfig {
}
}
+ public NotificationChannelGroup getNotificationChannelGroupWithChannels(String pkg,
+ int uid, String groupId, boolean includeDeleted) {
+ Preconditions.checkNotNull(pkg);
+ Record r = getRecord(pkg, uid);
+ if (r == null || groupId == null || !r.groups.containsKey(groupId)) {
+ return null;
+ }
+ NotificationChannelGroup group = r.groups.get(groupId).clone();
+ group.setChannels(new ArrayList<>());
+ int N = r.channels.size();
+ for (int i = 0; i < N; i++) {
+ final NotificationChannel nc = r.channels.valueAt(i);
+ if (includeDeleted || !nc.isDeleted()) {
+ if (groupId.equals(nc.getGroup())) {
+ group.addChannel(nc);
+ }
+ }
+ }
+ return group;
+ }
+
public NotificationChannelGroup getNotificationChannelGroup(String groupId, String pkg,
int uid) {
Preconditions.checkNotNull(pkg);
@@ -710,6 +760,7 @@ public class RankingHelper implements RankingConfig {
NotificationChannelGroup ncg = groups.get(nc.getGroup());
if (ncg == null) {
ncg = r.groups.get(nc.getGroup()).clone();
+ ncg.setChannels(new ArrayList<>());
groups.put(nc.getGroup(), ncg);
}
@@ -828,8 +879,6 @@ public class RankingHelper implements RankingConfig {
@VisibleForTesting
void lockFieldsForUpdate(NotificationChannel original, NotificationChannel update) {
- update.unlockFields(update.getUserLockedFields());
- update.lockFields(original.getUserLockedFields());
if (original.canBypassDnd() != update.canBypassDnd()) {
update.lockFields(NotificationChannel.USER_LOCKED_PRIORITY);
}
@@ -1174,7 +1223,7 @@ public class RankingHelper implements RankingConfig {
changed |= oldValue != newValue;
}
if (changed) {
- mRankingHandler.requestSort();
+ updateConfig();
}
}
diff --git a/services/core/java/com/android/server/notification/ScheduleCalendar.java b/services/core/java/com/android/server/notification/ScheduleCalendar.java
index 9e8b2e34520b..40230bd2ba82 100644
--- a/services/core/java/com/android/server/notification/ScheduleCalendar.java
+++ b/services/core/java/com/android/server/notification/ScheduleCalendar.java
@@ -42,7 +42,8 @@ public class ScheduleCalendar {
public void maybeSetNextAlarm(long now, long nextAlarm) {
if (mSchedule != null) {
- if (mSchedule.exitAtAlarm && now > mSchedule.nextAlarm) {
+ if (mSchedule.exitAtAlarm
+ && (now > mSchedule.nextAlarm || nextAlarm < mSchedule.nextAlarm)) {
mSchedule.nextAlarm = nextAlarm;
}
}
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 1a0b878613f4..ffdafc562673 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -465,6 +465,8 @@ public class ZenModeHelper {
+ "from " + currRule.getName() + " to " + defaultRule.name);
// update default rule (if locale changed, name of rule will change)
AutomaticZenRule defaultAutoRule = createAutomaticZenRule(defaultRule);
+ // ensure enabled state is carried over from current rule
+ defaultAutoRule.setEnabled(currRule.isEnabled());
updateAutomaticZenRule(ruleId, defaultAutoRule,
"locale changed");
}
@@ -735,6 +737,9 @@ public class ZenModeHelper {
mConfig = config;
mHandler.postApplyConfig(config, reason, setRingerMode);
return true;
+ } catch (SecurityException e) {
+ Log.wtf(TAG, "Invalid rule in config", e);
+ return false;
} finally {
Binder.restoreCallingIdentity(identity);
}
diff --git a/services/core/java/com/android/server/oemlock/OemLockService.java b/services/core/java/com/android/server/oemlock/OemLockService.java
index 5e19b134c4aa..40c663942e1d 100644
--- a/services/core/java/com/android/server/oemlock/OemLockService.java
+++ b/services/core/java/com/android/server/oemlock/OemLockService.java
@@ -149,8 +149,12 @@ public class OemLockService extends SystemService {
final long token = Binder.clearCallingIdentity();
try {
- if (!canUserAllowOemUnlock()) {
- throw new SecurityException("User cannot allow OEM unlock");
+ if (!isOemUnlockAllowedByAdmin()) {
+ throw new SecurityException("Admin does not allow OEM unlock");
+ }
+
+ if (!mOemLock.isOemUnlockAllowedByCarrier()) {
+ throw new SecurityException("Carrier does not allow OEM unlock");
}
mOemLock.setOemUnlockAllowedByDevice(allowedByUser);
@@ -172,18 +176,6 @@ public class OemLockService extends SystemService {
}
@Override
- public boolean canUserAllowOemUnlock() {
- enforceOemUnlockReadPermission();
-
- final long token = Binder.clearCallingIdentity();
- try {
- return isOemUnlockAllowedByAdmin() && mOemLock.isOemUnlockAllowedByCarrier();
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @Override
public boolean isOemUnlockAllowed() {
enforceOemUnlockReadPermission();
diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java
index 04d91f882d04..807c343d0d10 100644
--- a/services/core/java/com/android/server/om/IdmapManager.java
+++ b/services/core/java/com/android/server/om/IdmapManager.java
@@ -92,26 +92,10 @@ class IdmapManager {
return new File(getIdmapPath(overlayPackage.applicationInfo.getBaseCodePath())).isFile();
}
- boolean isDangerous(@NonNull final PackageInfo overlayPackage, final int userId) {
- // unused userId: see comment in OverlayManagerServiceImpl.removeIdmapIfPossible
- return isDangerous(getIdmapPath(overlayPackage.applicationInfo.getBaseCodePath()));
- }
-
private String getIdmapPath(@NonNull final String baseCodePath) {
final StringBuilder sb = new StringBuilder("/data/resource-cache/");
sb.append(baseCodePath.substring(1).replace('/', '@'));
sb.append("@idmap");
return sb.toString();
}
-
- private boolean isDangerous(@NonNull final String idmapPath) {
- try (DataInputStream dis = new DataInputStream(new FileInputStream(idmapPath))) {
- final int magic = dis.readInt();
- final int version = dis.readInt();
- final int dangerous = dis.readInt();
- return dangerous != 0;
- } catch (IOException e) {
- return true;
- }
- }
}
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index 415c9a9cba10..6d8cac0c661b 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -342,8 +342,7 @@ public class BackgroundDexOptService extends JobService {
DexoptOptions.DEXOPT_BOOT_COMPLETE |
(downgrade ? DexoptOptions.DEXOPT_DOWNGRADE : 0);
if (is_for_primary_dex) {
- int result = pm.performDexOptWithStatus(new DexoptOptions(pkg,
- PackageManagerService.REASON_BACKGROUND_DEXOPT,
+ int result = pm.performDexOptWithStatus(new DexoptOptions(pkg, reason,
dexoptFlags));
success = result != PackageDexOptimizer.DEX_OPT_FAILED;
if (result == PackageDexOptimizer.DEX_OPT_PERFORMED) {
@@ -351,8 +350,7 @@ public class BackgroundDexOptService extends JobService {
}
} else {
success = pm.performDexOpt(new DexoptOptions(pkg,
- PackageManagerService.REASON_BACKGROUND_DEXOPT,
- dexoptFlags | DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX));
+ reason, dexoptFlags | DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX));
}
if (success) {
// Dexopt succeeded, remove package from the list of failing ones.
diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
index b217677479cd..a3811baf2657 100644
--- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
@@ -18,6 +18,7 @@ package com.android.server.pm;
import android.Manifest;
import android.annotation.NonNull;
+import android.app.ActivityManager;
import android.app.DownloadManager;
import android.app.admin.DevicePolicyManager;
import android.companion.CompanionDeviceManager;
@@ -582,6 +583,21 @@ final class DefaultPermissionGrantPolicy {
}
}
+ if (ActivityManager.isLowRamDeviceStatic()) {
+ // Allow voice search on low-ram devices
+ Intent globalSearchIntent = new Intent("android.search.action.GLOBAL_SEARCH");
+ PackageParser.Package globalSearchPickerPackage =
+ getDefaultSystemHandlerActivityPackageLPr(globalSearchIntent, userId);
+
+ if (globalSearchPickerPackage != null
+ && doesPackageSupportRuntimePermissions(globalSearchPickerPackage)) {
+ grantRuntimePermissionsLPw(globalSearchPickerPackage,
+ MICROPHONE_PERMISSIONS, true, userId);
+ grantRuntimePermissionsLPw(globalSearchPickerPackage,
+ LOCATION_PERMISSIONS, true, userId);
+ }
+ }
+
// Voice recognition
Intent voiceRecoIntent = new Intent("android.speech.RecognitionService");
voiceRecoIntent.addCategory(Intent.CATEGORY_DEFAULT);
@@ -624,14 +640,25 @@ final class DefaultPermissionGrantPolicy {
grantRuntimePermissionsLPw(musicPackage, STORAGE_PERMISSIONS, userId);
}
+ // Home
+ Intent homeIntent = new Intent(Intent.ACTION_MAIN);
+ homeIntent.addCategory(Intent.CATEGORY_HOME);
+ homeIntent.addCategory(Intent.CATEGORY_LAUNCHER_APP);
+ PackageParser.Package homePackage = getDefaultSystemHandlerActivityPackageLPr(
+ homeIntent, userId);
+ if (homePackage != null
+ && doesPackageSupportRuntimePermissions(homePackage)) {
+ grantRuntimePermissionsLPw(homePackage, LOCATION_PERMISSIONS, false, userId);
+ }
+
// Watches
if (mService.hasSystemFeature(PackageManager.FEATURE_WATCH, 0)) {
// Home application on watches
- Intent homeIntent = new Intent(Intent.ACTION_MAIN);
- homeIntent.addCategory(Intent.CATEGORY_HOME_MAIN);
+ Intent wearHomeIntent = new Intent(Intent.ACTION_MAIN);
+ wearHomeIntent.addCategory(Intent.CATEGORY_HOME_MAIN);
PackageParser.Package wearHomePackage = getDefaultSystemHandlerActivityPackageLPr(
- homeIntent, userId);
+ wearHomeIntent, userId);
if (wearHomePackage != null
&& doesPackageSupportRuntimePermissions(wearHomePackage)) {
diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java
index da6e26e17122..6253857d1aa4 100644
--- a/services/core/java/com/android/server/pm/OtaDexoptService.java
+++ b/services/core/java/com/android/server/pm/OtaDexoptService.java
@@ -53,7 +53,8 @@ public class OtaDexoptService extends IOtaDexopt.Stub {
private final static boolean DEBUG_DEXOPT = true;
// The synthetic library dependencies denoting "no checks."
- private final static String[] NO_LIBRARIES = new String[] { "&" };
+ private final static String[] NO_LIBRARIES =
+ new String[] { PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK };
// The amount of "available" (free - low threshold) space necessary at the start of an OTA to
// not bulk-delete unused apps' odex files.
@@ -322,11 +323,6 @@ public class OtaDexoptService extends IOtaDexopt.Stub {
new DexoptOptions(pkg.packageName, compilationReason,
DexoptOptions.DEXOPT_BOOT_COMPLETE));
- mPackageManagerService.getDexManager().dexoptSecondaryDex(
- new DexoptOptions(pkg.packageName, compilationReason,
- DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX |
- DexoptOptions.DEXOPT_BOOT_COMPLETE));
-
return commands;
}
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
index 698d3871e3c5..4fafe34b3063 100644
--- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java
+++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
@@ -147,8 +147,13 @@ public class PackageDexOptimizer {
// Get the class loader context dependencies.
// For each code path in the package, this array contains the class loader context that
// needs to be passed to dexopt in order to ensure correct optimizations.
+ boolean[] pathsWithCode = new boolean[paths.size()];
+ pathsWithCode[0] = (pkg.applicationInfo.flags & ApplicationInfo.FLAG_HAS_CODE) != 0;
+ for (int i = 1; i < paths.size(); i++) {
+ pathsWithCode[i] = (pkg.splitFlags[i - 1] & ApplicationInfo.FLAG_HAS_CODE) != 0;
+ }
String[] classLoaderContexts = DexoptUtils.getClassLoaderContexts(
- pkg.applicationInfo, sharedLibraries);
+ pkg.applicationInfo, sharedLibraries, pathsWithCode);
// Sanity check that we do not call dexopt with inconsistent data.
if (paths.size() != classLoaderContexts.length) {
@@ -164,10 +169,15 @@ public class PackageDexOptimizer {
int result = DEX_OPT_SKIPPED;
for (int i = 0; i < paths.size(); i++) {
// Skip paths that have no code.
- if ((i == 0 && (pkg.applicationInfo.flags & ApplicationInfo.FLAG_HAS_CODE) == 0) ||
- (i != 0 && (pkg.splitFlags[i - 1] & ApplicationInfo.FLAG_HAS_CODE) == 0)) {
+ if (!pathsWithCode[i]) {
continue;
}
+ if (classLoaderContexts[i] == null) {
+ throw new IllegalStateException("Inconsistent information in the "
+ + "package structure. A split is marked to contain code "
+ + "but has no dependency listed. Index=" + i + " path=" + paths.get(i));
+ }
+
// Append shared libraries with split dependencies for this split.
String path = paths.get(i);
if (options.getSplitName() != null) {
@@ -428,16 +438,7 @@ public class PackageDexOptimizer {
PackageDexUsage.DexUseInfo dexUseInfo = e.getValue();
pw.println(dex);
pw.increaseIndent();
- for (String isa : dexUseInfo.getLoaderIsas()) {
- String status = null;
- try {
- status = DexFile.getDexFileStatus(path, isa);
- } catch (IOException ioe) {
- status = "[Exception]: " + ioe.getMessage();
- }
- pw.println(isa + ": " + status);
- }
-
+ // TODO(calin): get the status of the oat file (needs installd call)
pw.println("class loader context: " + dexUseInfo.getClassLoaderContext());
if (dexUseInfo.isUsedByOtherApps()) {
pw.println("used be other apps: " + dexUseInfo.getLoadingPackages());
@@ -464,8 +465,9 @@ public class PackageDexOptimizer {
}
if (isProfileGuidedCompilerFilter(targetCompilerFilter) && isUsedByOtherApps) {
- // If the dex files is used by other apps, we cannot use profile-guided compilation.
- return getNonProfileGuidedCompilerFilter(targetCompilerFilter);
+ // If the dex files is used by other apps, apply the shared filter.
+ return PackageManagerServiceCompilerMapping.getCompilerFilterForReason(
+ PackageManagerService.REASON_SHARED);
}
return targetCompilerFilter;
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index c3b93b428cb5..1fa37b91b8e8 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -319,9 +319,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
if (type == START_TAG) {
final String tag = in.getName();
if (PackageInstallerSession.TAG_SESSION.equals(tag)) {
- final PackageInstallerSession session = PackageInstallerSession.
- readFromXml(in, mInternalCallback, mContext, mPm,
- mInstallThread.getLooper(), mSessionsDir);
+ final PackageInstallerSession session;
+ try {
+ session = PackageInstallerSession.readFromXml(in, mInternalCallback,
+ mContext, mPm, mInstallThread.getLooper(), mSessionsDir);
+ } catch (Exception e) {
+ Slog.e(TAG, "Could not read session", e);
+ continue;
+ }
+
final long age = System.currentTimeMillis() - session.createdMillis;
final boolean valid;
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 69db49b57bc6..ff6e5b3bab0c 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -88,6 +88,7 @@ import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.content.NativeLibraryHelper;
import com.android.internal.content.PackageHelper;
+import com.android.internal.os.SomeArgs;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
@@ -118,6 +119,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
private static final String REMOVE_SPLIT_MARKER_EXTENSION = ".removed";
private static final int MSG_COMMIT = 0;
+ private static final int MSG_ON_PACKAGE_INSTALLED = 1;
/** XML constants used for persisting a session */
static final String TAG_SESSION = "session";
@@ -274,15 +276,36 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
private final Handler.Callback mHandlerCallback = new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
- synchronized (mLock) {
- try {
- commitLocked();
- } catch (PackageManagerException e) {
- final String completeMsg = ExceptionUtils.getCompleteMessage(e);
- Slog.e(TAG, "Commit of session " + sessionId + " failed: " + completeMsg);
- destroyInternal();
- dispatchSessionFinished(e.error, completeMsg, null);
- }
+ switch (msg.what) {
+ case MSG_COMMIT:
+ synchronized (mLock) {
+ try {
+ commitLocked();
+ } catch (PackageManagerException e) {
+ final String completeMsg = ExceptionUtils.getCompleteMessage(e);
+ Slog.e(TAG,
+ "Commit of session " + sessionId + " failed: " + completeMsg);
+ destroyInternal();
+ dispatchSessionFinished(e.error, completeMsg, null);
+ }
+ }
+
+ break;
+ case MSG_ON_PACKAGE_INSTALLED:
+ final SomeArgs args = (SomeArgs) msg.obj;
+ final String packageName = (String) args.arg1;
+ final String message = (String) args.arg2;
+ final Bundle extras = (Bundle) args.arg3;
+ final IPackageInstallObserver2 observer = (IPackageInstallObserver2) args.arg4;
+ final int returnCode = args.argi1;
+ args.recycle();
+
+ try {
+ observer.onPackageInstalled(packageName, returnCode, message, extras);
+ } catch (RemoteException ignored) {
+ }
+
+ break;
}
return true;
@@ -357,7 +380,17 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
mPrepared = prepared;
- mSealed = sealed;
+
+ if (sealed) {
+ synchronized (mLock) {
+ try {
+ sealAndValidateLocked();
+ } catch (PackageManagerException | IOException e) {
+ destroyInternal();
+ throw new IllegalArgumentException(e);
+ }
+ }
+ }
final long identity = Binder.clearCallingIdentity();
try {
@@ -673,11 +706,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
public void commit(@NonNull IntentSender statusReceiver, boolean forTransfer) {
Preconditions.checkNotNull(statusReceiver);
- // Cache package manager data without the lock held
- final PackageInfo installedPkgInfo = mPm.getPackageInfo(
- params.appPackageName, PackageManager.GET_SIGNATURES
- | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId);
-
final boolean wasSealed;
synchronized (mLock) {
assertCallerIsOwnerOrRootLocked();
@@ -702,7 +730,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
wasSealed = mSealed;
if (!mSealed) {
try {
- sealAndValidateLocked(installedPkgInfo);
+ sealAndValidateLocked();
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
} catch (PackageManagerException e) {
// Do now throw an exception here to stay compatible with O and older
destroyInternal();
@@ -736,18 +766,33 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
*
* <p>The session will be sealed after calling this method even if it failed.
*
- * @param pkgInfo The package info for {@link #params}.packagename
+ * @throws PackageManagerException if the session was sealed but something went wrong. If the
+ * session was sealed this is the only possible exception.
*/
- private void sealAndValidateLocked(@Nullable PackageInfo pkgInfo)
- throws PackageManagerException {
+ private void sealAndValidateLocked() throws PackageManagerException, IOException {
assertNoWriteFileTransfersOpenLocked();
+ assertPreparedAndNotDestroyedLocked("sealing of session");
+
+ final PackageInfo pkgInfo = mPm.getPackageInfo(
+ params.appPackageName, PackageManager.GET_SIGNATURES
+ | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId);
+
+ resolveStageDirLocked();
mSealed = true;
// Verify that stage looks sane with respect to existing application.
// This currently only ensures packageName, versionCode, and certificate
// consistency.
- validateInstallLocked(pkgInfo);
+ try {
+ validateInstallLocked(pkgInfo);
+ } catch (PackageManagerException e) {
+ throw e;
+ } catch (Throwable e) {
+ // Convert all exceptions into package manager exceptions as only those are handled
+ // in the code above
+ throw new PackageManagerException(e);
+ }
// Read transfers from the original owner stay open, but as the session's data
// cannot be modified anymore, there is no leak of information.
@@ -768,11 +813,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
+ "the " + Manifest.permission.INSTALL_PACKAGES + " permission");
}
- // Cache package manager data without the lock held
- final PackageInfo installedPkgInfo = mPm.getPackageInfo(
- params.appPackageName, PackageManager.GET_SIGNATURES
- | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId);
-
// Only install flags that can be verified by the app the session is transferred to are
// allowed. The parameters can be read via PackageInstaller.SessionInfo.
if (!params.areHiddenOptionsSet()) {
@@ -784,8 +824,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
assertPreparedAndNotSealedLocked("transfer");
try {
- sealAndValidateLocked(installedPkgInfo);
+ sealAndValidateLocked();
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
} catch (PackageManagerException e) {
+ // Session is sealed but could not be verified, we need to destroy it
+ destroyInternal();
+ dispatchSessionFinished(e.error, ExceptionUtils.getCompleteMessage(e), null);
+
throw new IllegalArgumentException("Package is not valid", e);
}
@@ -813,13 +859,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR, "Session not sealed");
}
- try {
- resolveStageDirLocked();
- } catch (IOException e) {
- throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR,
- "Failed to resolve stage location", e);
- }
-
Preconditions.checkNotNull(mPackageName);
Preconditions.checkNotNull(mSignatures);
Preconditions.checkNotNull(mResolvedBaseFile);
@@ -940,6 +979,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
mResolvedStagedFiles.clear();
mResolvedInheritedFiles.clear();
+ try {
+ resolveStageDirLocked();
+ } catch (IOException e) {
+ throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR,
+ "Failed to resolve stage location", e);
+ }
+
final File[] removedFiles = mResolvedStageDir.listFiles(sRemovedFilter);
final List<String> removeSplitList = new ArrayList<>();
if (!ArrayUtils.isEmpty(removedFiles)) {
@@ -1445,10 +1491,17 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
if (observer != null) {
- try {
- observer.onPackageInstalled(packageName, returnCode, msg, extras);
- } catch (RemoteException ignored) {
- }
+ // Execute observer.onPackageInstalled on different tread as we don't want callers
+ // inside the system server have to worry about catching the callbacks while they are
+ // calling into the session
+ final SomeArgs args = SomeArgs.obtain();
+ args.arg1 = packageName;
+ args.arg2 = msg;
+ args.arg3 = extras;
+ args.arg4 = observer;
+ args.argi1 = returnCode;
+
+ mHandler.obtainMessage(MSG_ON_PACKAGE_INSTALLED, args).sendToTarget();
}
final boolean success = (returnCode == PackageManager.INSTALL_SUCCEEDED);
@@ -1545,6 +1598,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
*/
void write(@NonNull XmlSerializer out, @NonNull File sessionsDir) throws IOException {
synchronized (mLock) {
+ if (mDestroyed) {
+ return;
+ }
+
out.startTag(null, TAG_SESSION);
writeIntAttribute(out, ATTR_SESSION_ID, sessionId);
diff --git a/services/core/java/com/android/server/pm/PackageManagerException.java b/services/core/java/com/android/server/pm/PackageManagerException.java
index 0e3f17360e7b..0793b091265e 100644
--- a/services/core/java/com/android/server/pm/PackageManagerException.java
+++ b/services/core/java/com/android/server/pm/PackageManagerException.java
@@ -40,6 +40,11 @@ public class PackageManagerException extends Exception {
this.error = error;
}
+ public PackageManagerException(Throwable e) {
+ super(e);
+ this.error = PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
+ }
+
public static PackageManagerException from(PackageParserException e)
throws PackageManagerException {
throw new PackageManagerException(e.error, e.getMessage(), e.getCause());
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 87c0c02fa9c5..050d9f00071a 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -82,6 +82,7 @@ import static android.content.pm.PackageManager.MOVE_FAILED_OPERATION_PENDING;
import static android.content.pm.PackageManager.MOVE_FAILED_SYSTEM_PACKAGE;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import static android.content.pm.PackageParser.PARSE_IS_OEM;
import static android.content.pm.PackageParser.PARSE_IS_PRIVILEGED;
import static android.content.pm.PackageParser.isApkFile;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
@@ -577,8 +578,9 @@ public class PackageManagerService extends IPackageManager.Stub
public static final int REASON_BACKGROUND_DEXOPT = 3;
public static final int REASON_AB_OTA = 4;
public static final int REASON_INACTIVE_PACKAGE_DOWNGRADE = 5;
+ public static final int REASON_SHARED = 6;
- public static final int REASON_LAST = REASON_INACTIVE_PACKAGE_DOWNGRADE;
+ public static final int REASON_LAST = REASON_SHARED;
/** All dangerous permission names in the same order as the events in MetricsEvent */
private static final List<String> ALL_DANGEROUS_PERMISSIONS = Arrays.asList(
@@ -2650,7 +2652,8 @@ public class PackageManagerService extends IPackageManager.Stub
final File oemAppDir = new File(Environment.getOemDirectory(), "app");
scanDirTracedLI(oemAppDir, mDefParseFlags
| PackageParser.PARSE_IS_SYSTEM
- | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags, 0);
+ | PackageParser.PARSE_IS_SYSTEM_DIR
+ | PackageParser.PARSE_IS_OEM, scanFlags, 0);
// Prune any system packages that no longer exist.
final List<String> possiblyDeletedUpdatedSystemApps = new ArrayList<>();
@@ -2711,8 +2714,14 @@ public class PackageManagerService extends IPackageManager.Stub
// Actual deletion of code and data will be handled by later
// reconciliation step
} else {
- final PackageSetting disabledPs = mSettings.getDisabledSystemPkgLPr(ps.name);
- if (disabledPs.codePath == null || !disabledPs.codePath.exists()) {
+ // we still have a disabled system package, but, it still might have
+ // been removed. check the code path still exists and check there's
+ // still a package. the latter can happen if an OTA keeps the same
+ // code path, but, changes the package name.
+ final PackageSetting disabledPs =
+ mSettings.getDisabledSystemPkgLPr(ps.name);
+ if (disabledPs.codePath == null || !disabledPs.codePath.exists()
+ || disabledPs.pkg == null) {
possiblyDeletedUpdatedSystemApps.add(ps.name);
}
}
@@ -2814,7 +2823,8 @@ public class PackageManagerService extends IPackageManager.Stub
| PackageParser.PARSE_IS_SYSTEM_DIR;
} else if (FileUtils.contains(oemAppDir, scanFile)) {
reparseFlags = PackageParser.PARSE_IS_SYSTEM
- | PackageParser.PARSE_IS_SYSTEM_DIR;
+ | PackageParser.PARSE_IS_SYSTEM_DIR
+ | PackageParser.PARSE_IS_OEM;
} else {
Slog.e(TAG, "Ignoring unexpected fallback path " + scanFile);
continue;
@@ -8512,7 +8522,7 @@ public class PackageManagerService extends IPackageManager.Stub
continue;
}
if (filterAppAccessLPr(ps, callingUid, userId)) {
- return null;
+ continue;
}
final PackageInfo pi = generatePackageInfo(ps, flags, userId);
if (pi != null) {
@@ -8527,7 +8537,7 @@ public class PackageManagerService extends IPackageManager.Stub
continue;
}
if (filterAppAccessLPr(ps, callingUid, userId)) {
- return null;
+ continue;
}
final PackageInfo pi = generatePackageInfo((PackageSetting)
p.mExtras, flags, userId);
@@ -8639,7 +8649,7 @@ public class PackageManagerService extends IPackageManager.Stub
continue;
}
if (filterAppAccessLPr(ps, callingUid, userId)) {
- return null;
+ continue;
}
ai = PackageParser.generateApplicationInfo(ps.pkg, effectiveFlags,
ps.readUserState(userId), userId);
@@ -8665,7 +8675,7 @@ public class PackageManagerService extends IPackageManager.Stub
continue;
}
if (filterAppAccessLPr(ps, callingUid, userId)) {
- return null;
+ continue;
}
ApplicationInfo ai = PackageParser.generateApplicationInfo(p, flags,
ps.readUserState(userId), userId);
@@ -9339,6 +9349,13 @@ public class PackageManagerService extends IPackageManager.Stub
} else {
updatedPkg.pkgPrivateFlags &= ~ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
}
+ // If new package is not located in "/oem" (e.g. due to an OTA),
+ // it needs to drop FLAG_OEM.
+ if (locationIsOem(scanFile)) {
+ updatedPkg.pkgPrivateFlags |= ApplicationInfo.PRIVATE_FLAG_OEM;
+ } else {
+ updatedPkg.pkgPrivateFlags &= ~ApplicationInfo.PRIVATE_FLAG_OEM;
+ }
if (ps != null && !ps.codePath.equals(scanFile)) {
// The path has changed from what was last scanned... check the
@@ -9433,6 +9450,15 @@ public class PackageManagerService extends IPackageManager.Stub
// throw an exception if we have an update to a system application, but, it's not more
// recent than the package we've already scanned
if (isUpdatedSystemPkg && !isUpdatedPkgBetter) {
+ // Set CPU Abis to application info.
+ if ((scanFlags & SCAN_FIRST_BOOT_OR_UPGRADE) != 0) {
+ final String cpuAbiOverride = deriveAbiOverride(pkg.cpuAbiOverride, updatedPkg);
+ derivePackageAbi(pkg, scanFile, cpuAbiOverride, false, mAppLib32InstallDir);
+ } else {
+ pkg.applicationInfo.primaryCpuAbi = updatedPkg.primaryCpuAbiString;
+ pkg.applicationInfo.secondaryCpuAbi = updatedPkg.secondaryCpuAbiString;
+ }
+
throw new PackageManagerException(Log.WARN, "Package " + ps.name + " at "
+ scanFile + " ignored: updated version " + ps.versionCode
+ " better than this " + pkg.mVersionCode);
@@ -9448,6 +9474,12 @@ public class PackageManagerService extends IPackageManager.Stub
if ((updatedPkg.pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0) {
policyFlags |= PackageParser.PARSE_IS_PRIVILEGED;
}
+
+ // An updated OEM app will not have the PARSE_IS_OEM
+ // flag set initially
+ if ((updatedPkg.pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0) {
+ policyFlags |= PackageParser.PARSE_IS_OEM;
+ }
}
// Verify certificates against what was last scanned
@@ -9788,19 +9820,6 @@ public class PackageManagerService extends IPackageManager.Stub
compilerFilter,
dexoptFlags));
- if (pkg.isSystemApp()) {
- // Only dexopt shared secondary dex files belonging to system apps to not slow down
- // too much boot after an OTA.
- int secondaryDexoptFlags = dexoptFlags |
- DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX |
- DexoptOptions.DEXOPT_ONLY_SHARED_DEX;
- mDexManager.dexoptSecondaryDex(new DexoptOptions(
- pkg.packageName,
- compilerFilter,
- secondaryDexoptFlags));
- }
-
- // TODO(shubhamajmera): Record secondary dexopt stats.
switch (primaryDexOptStaus) {
case PackageDexOptimizer.DEX_OPT_PERFORMED:
numberOfPackagesOptimized++;
@@ -9835,14 +9854,18 @@ public class PackageManagerService extends IPackageManager.Stub
return;
}
}
- final PackageParser.Package p = mPackages.get(packageName);
- if (p == null) {
- return;
- }
- p.mLastPackageUsageTimeInMills[reason] = System.currentTimeMillis();
+ notifyPackageUseLocked(packageName, reason);
}
}
+ private void notifyPackageUseLocked(String packageName, int reason) {
+ final PackageParser.Package p = mPackages.get(packageName);
+ if (p == null) {
+ return;
+ }
+ p.mLastPackageUsageTimeInMills[reason] = System.currentTimeMillis();
+ }
+
@Override
public void notifyDexLoad(String loadingPackageName, List<String> classLoaderNames,
List<String> classPaths, String loaderIsa) {
@@ -11164,6 +11187,10 @@ public class PackageManagerService extends IPackageManager.Stub
pkg.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
}
+ if ((policyFlags&PackageParser.PARSE_IS_OEM) != 0) {
+ pkg.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_OEM;
+ }
+
if (!isSystemApp(pkg)) {
// Only system apps can use these features.
pkg.mOriginalPackages = null;
@@ -11385,6 +11412,10 @@ public class PackageManagerService extends IPackageManager.Stub
+ " but expected at " + known.codePathString
+ "; ignoring.");
}
+ } else {
+ throw new PackageManagerException(INSTALL_FAILED_INVALID_INSTALL_LOCATION,
+ "Application package " + pkg.packageName
+ + " not found; ignoring.");
}
}
}
@@ -13231,6 +13262,8 @@ public class PackageManagerService extends IPackageManager.Stub
private boolean grantSignaturePermission(String perm, PackageParser.Package pkg,
BasePermission bp, PermissionsState origPermissions) {
+ boolean oemPermission = (bp.protectionLevel
+ & PermissionInfo.PROTECTION_FLAG_OEM) != 0;
boolean privilegedPermission = (bp.protectionLevel
& PermissionInfo.PROTECTION_FLAG_PRIVILEGED) != 0;
boolean privappPermissionsDisable =
@@ -13268,9 +13301,9 @@ public class PackageManagerService extends IPackageManager.Stub
== PackageManager.SIGNATURE_MATCH)
|| (compareSignatures(mPlatformPackage.mSignatures, pkg.mSignatures)
== PackageManager.SIGNATURE_MATCH);
- if (!allowed && privilegedPermission) {
+ if (!allowed && (privilegedPermission || oemPermission)) {
if (isSystemApp(pkg)) {
- // For updated system applications, a system permission
+ // For updated system applications, a privileged/oem permission
// is granted only if it had been defined by the original application.
if (pkg.isUpdatedSystemApp()) {
final PackageSetting sysPs = mSettings
@@ -13279,7 +13312,9 @@ public class PackageManagerService extends IPackageManager.Stub
// If the original was granted this permission, we take
// that grant decision as read and propagate it to the
// update.
- if (sysPs.isPrivileged()) {
+ if ((privilegedPermission && sysPs.isPrivileged())
+ || (oemPermission && sysPs.isOem()
+ && canGrantOemPermission(sysPs, perm))) {
allowed = true;
}
} else {
@@ -13289,32 +13324,39 @@ public class PackageManagerService extends IPackageManager.Stub
// before. In this case we do want to allow the app to
// now get the new permission if the ancestral apk is
// privileged to get it.
- if (sysPs != null && sysPs.pkg != null && sysPs.isPrivileged()) {
- // TODO(gboyer): This is the same as isPackageRequestingPermission().
- for (int j = 0; j < sysPs.pkg.requestedPermissions.size(); j++) {
- if (perm.equals(sysPs.pkg.requestedPermissions.get(j))) {
- allowed = true;
- break;
- }
- }
+ if (sysPs != null && sysPs.pkg != null
+ && isPackageRequestingPermission(sysPs.pkg, perm)
+ && ((privilegedPermission && sysPs.isPrivileged())
+ || (oemPermission && sysPs.isOem()
+ && canGrantOemPermission(sysPs, perm)))) {
+ allowed = true;
}
// Also if a privileged parent package on the system image or any of
- // its children requested a privileged permission, the updated child
+ // its children requested a privileged/oem permission, the updated child
// packages can also get the permission.
if (pkg.parentPackage != null) {
final PackageSetting disabledSysParentPs = mSettings
.getDisabledSystemPkgLPr(pkg.parentPackage.packageName);
- if (disabledSysParentPs != null && disabledSysParentPs.pkg != null
- && disabledSysParentPs.isPrivileged()) {
- if (isPackageRequestingPermission(disabledSysParentPs.pkg, perm)) {
+ final PackageParser.Package disabledSysParentPkg =
+ (disabledSysParentPs == null || disabledSysParentPs.pkg == null)
+ ? null : disabledSysParentPs.pkg;
+ if (disabledSysParentPkg != null
+ && ((privilegedPermission && disabledSysParentPs.isPrivileged())
+ || (oemPermission && disabledSysParentPs.isOem()))) {
+ if (isPackageRequestingPermission(disabledSysParentPkg, perm)
+ && canGrantOemPermission(disabledSysParentPs, perm)) {
allowed = true;
- } else if (disabledSysParentPs.pkg.childPackages != null) {
- final int count = disabledSysParentPs.pkg.childPackages.size();
+ } else if (disabledSysParentPkg.childPackages != null) {
+ final int count = disabledSysParentPkg.childPackages.size();
for (int i = 0; i < count; i++) {
- PackageParser.Package disabledSysChildPkg =
- disabledSysParentPs.pkg.childPackages.get(i);
- if (isPackageRequestingPermission(disabledSysChildPkg,
- perm)) {
+ final PackageParser.Package disabledSysChildPkg =
+ disabledSysParentPkg.childPackages.get(i);
+ final PackageSetting disabledSysChildPs =
+ mSettings.getDisabledSystemPkgLPr(
+ disabledSysChildPkg.packageName);
+ if (isPackageRequestingPermission(disabledSysChildPkg, perm)
+ && canGrantOemPermission(
+ disabledSysChildPs, perm)) {
allowed = true;
break;
}
@@ -13324,7 +13366,10 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
} else {
- allowed = isPrivilegedApp(pkg);
+ allowed = (privilegedPermission && isPrivilegedApp(pkg))
+ || (oemPermission && isOemApp(pkg)
+ && canGrantOemPermission(
+ mSettings.getPackageLPr(pkg.packageName), perm));
}
}
}
@@ -13371,6 +13416,20 @@ public class PackageManagerService extends IPackageManager.Stub
return allowed;
}
+ private static boolean canGrantOemPermission(PackageSetting ps, String permission) {
+ if (!ps.isOem()) {
+ return false;
+ }
+ // all oem permissions must explicitly be granted or denied
+ final Boolean granted =
+ SystemConfig.getInstance().getOemPermissions(ps.name).get(permission);
+ if (granted == null) {
+ throw new IllegalStateException("OEM permission" + permission + " requested by package "
+ + ps.name + " must be explicitly declared granted or not");
+ }
+ return Boolean.TRUE == granted;
+ }
+
private boolean isPackageRequestingPermission(PackageParser.Package pkg, String permission) {
final int permCount = pkg.requestedPermissions.size();
for (int j = 0; j < permCount; j++) {
@@ -17764,13 +17823,17 @@ public class PackageManagerService extends IPackageManager.Stub
boolean sysPkg = (isSystemApp(oldPackage));
if (sysPkg) {
- // Set the system/privileged flags as needed
+ // Set the system/privileged/oem flags as needed
final boolean privileged =
(oldPackage.applicationInfo.privateFlags
& ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0;
+ final boolean oem =
+ (oldPackage.applicationInfo.privateFlags
+ & ApplicationInfo.PRIVATE_FLAG_OEM) != 0;
final int systemPolicyFlags = policyFlags
| PackageParser.PARSE_IS_SYSTEM
- | (privileged ? PackageParser.PARSE_IS_PRIVILEGED : 0);
+ | (privileged ? PARSE_IS_PRIVILEGED : 0)
+ | (oem ? PARSE_IS_OEM : 0);
replaceSystemPackageLIF(oldPackage, pkg, systemPolicyFlags, scanFlags,
user, allUsers, installerPackageName, res, installReason);
@@ -18621,6 +18684,7 @@ public class PackageManagerService extends IPackageManager.Stub
+ perm.info.name + "; Removing ephemeral.");
perm.info.protectionLevel &= ~PermissionInfo.PROTECTION_FLAG_INSTANT;
}
+
// Check whether the newly-scanned package wants to define an already-defined perm
if (bp != null) {
// If the defining package is signed with our cert, it's okay. This
@@ -18976,6 +19040,10 @@ public class PackageManagerService extends IPackageManager.Stub
return (pkg.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0;
}
+ private static boolean isOemApp(PackageParser.Package pkg) {
+ return (pkg.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0;
+ }
+
private static boolean hasDomainURLs(PackageParser.Package pkg) {
return (pkg.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS) != 0;
}
@@ -19729,6 +19797,16 @@ public class PackageManagerService extends IPackageManager.Stub
return false;
}
+ static boolean locationIsOem(File path) {
+ try {
+ return path.getCanonicalPath().startsWith(
+ Environment.getOemDirectory().getCanonicalPath());
+ } catch (IOException e) {
+ Slog.e(TAG, "Unable to access code path " + path);
+ }
+ return false;
+ }
+
/*
* Tries to delete system package.
*/
@@ -19846,6 +19924,9 @@ public class PackageManagerService extends IPackageManager.Stub
if (isPrivileged || locationIsPrivileged(codePath)) {
parseFlags |= PackageParser.PARSE_IS_PRIVILEGED;
}
+ if (locationIsOem(codePath)) {
+ parseFlags |= PackageParser.PARSE_IS_OEM;
+ }
final PackageParser.Package newPkg =
scanPackageTracedLI(codePath, parseFlags, 0 /*scanFlags*/, 0 /*currentTime*/, null);
@@ -21836,32 +21917,36 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
}
}
- if (callingUid == Process.SHELL_UID
- && (pkgSetting.pkgFlags & ApplicationInfo.FLAG_TEST_ONLY) == 0) {
- // Shell can only change whole packages between ENABLED and DISABLED_USER states
- // unless it is a test package.
- int oldState = pkgSetting.getEnabled(userId);
- if (className == null
- &&
- (oldState == COMPONENT_ENABLED_STATE_DISABLED_USER
- || oldState == COMPONENT_ENABLED_STATE_DEFAULT
- || oldState == COMPONENT_ENABLED_STATE_ENABLED)
- &&
- (newState == COMPONENT_ENABLED_STATE_DISABLED_USER
- || newState == COMPONENT_ENABLED_STATE_DEFAULT
- || newState == COMPONENT_ENABLED_STATE_ENABLED)) {
- // ok
- } else {
- throw new SecurityException(
- "Shell cannot change component state for " + packageName + "/"
- + className + " to " + newState);
+ synchronized (mPackages) {
+ if (callingUid == Process.SHELL_UID
+ && (pkgSetting.pkgFlags & ApplicationInfo.FLAG_TEST_ONLY) == 0) {
+ // Shell can only change whole packages between ENABLED and DISABLED_USER states
+ // unless it is a test package.
+ int oldState = pkgSetting.getEnabled(userId);
+ if (className == null
+ &&
+ (oldState == COMPONENT_ENABLED_STATE_DISABLED_USER
+ || oldState == COMPONENT_ENABLED_STATE_DEFAULT
+ || oldState == COMPONENT_ENABLED_STATE_ENABLED)
+ &&
+ (newState == COMPONENT_ENABLED_STATE_DISABLED_USER
+ || newState == COMPONENT_ENABLED_STATE_DEFAULT
+ || newState == COMPONENT_ENABLED_STATE_ENABLED)) {
+ // ok
+ } else {
+ throw new SecurityException(
+ "Shell cannot change component state for " + packageName + "/"
+ + className + " to " + newState);
+ }
}
}
if (className == null) {
// We're dealing with an application/package level state change
- if (pkgSetting.getEnabled(userId) == newState) {
- // Nothing to do
- return;
+ synchronized (mPackages) {
+ if (pkgSetting.getEnabled(userId) == newState) {
+ // Nothing to do
+ return;
+ }
}
// If we're enabling a system stub, there's a little more work to do.
// Prior to enabling the package, we need to decompress the APK(s) to the
@@ -21975,41 +22060,45 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
// Don't care about who enables an app.
callingPackage = null;
}
- pkgSetting.setEnabled(newState, userId, callingPackage);
- } else {
- // We're dealing with a component level state change
- // First, verify that this is a valid class name.
- PackageParser.Package pkg = pkgSetting.pkg;
- if (pkg == null || !pkg.hasComponentClassName(className)) {
- if (pkg != null &&
- pkg.applicationInfo.targetSdkVersion >=
- Build.VERSION_CODES.JELLY_BEAN) {
- throw new IllegalArgumentException("Component class " + className
- + " does not exist in " + packageName);
- } else {
- Slog.w(TAG, "Failed setComponentEnabledSetting: component class "
- + className + " does not exist in " + packageName);
- }
+ synchronized (mPackages) {
+ pkgSetting.setEnabled(newState, userId, callingPackage);
}
- switch (newState) {
- case COMPONENT_ENABLED_STATE_ENABLED:
- if (!pkgSetting.enableComponentLPw(className, userId)) {
- return;
- }
- break;
- case COMPONENT_ENABLED_STATE_DISABLED:
- if (!pkgSetting.disableComponentLPw(className, userId)) {
- return;
+ } else {
+ synchronized (mPackages) {
+ // We're dealing with a component level state change
+ // First, verify that this is a valid class name.
+ PackageParser.Package pkg = pkgSetting.pkg;
+ if (pkg == null || !pkg.hasComponentClassName(className)) {
+ if (pkg != null &&
+ pkg.applicationInfo.targetSdkVersion >=
+ Build.VERSION_CODES.JELLY_BEAN) {
+ throw new IllegalArgumentException("Component class " + className
+ + " does not exist in " + packageName);
+ } else {
+ Slog.w(TAG, "Failed setComponentEnabledSetting: component class "
+ + className + " does not exist in " + packageName);
+ }
}
- break;
- case COMPONENT_ENABLED_STATE_DEFAULT:
- if (!pkgSetting.restoreComponentLPw(className, userId)) {
- return;
+ switch (newState) {
+ case COMPONENT_ENABLED_STATE_ENABLED:
+ if (!pkgSetting.enableComponentLPw(className, userId)) {
+ return;
+ }
+ break;
+ case COMPONENT_ENABLED_STATE_DISABLED:
+ if (!pkgSetting.disableComponentLPw(className, userId)) {
+ return;
+ }
+ break;
+ case COMPONENT_ENABLED_STATE_DEFAULT:
+ if (!pkgSetting.restoreComponentLPw(className, userId)) {
+ return;
+ }
+ break;
+ default:
+ Slog.e(TAG, "Invalid new component state: " + newState);
+ return;
}
- break;
- default:
- Slog.e(TAG, "Invalid new component state: " + newState);
- return;
}
}
synchronized (mPackages) {
@@ -22263,13 +22352,21 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
mDefaultPermissionPolicy.grantDefaultPermissions(userId);
}
- // If we did not grant default permissions, we preload from this the
- // default permission exceptions lazily to ensure we don't hit the
- // disk on a new user creation.
if (grantPermissionsUserIds == EMPTY_INT_ARRAY) {
+ // If we did not grant default permissions, we preload from this the
+ // default permission exceptions lazily to ensure we don't hit the
+ // disk on a new user creation.
mDefaultPermissionPolicy.scheduleReadDefaultPermissionExceptions();
}
+ // Now that we've scanned all packages, and granted any default
+ // permissions, ensure permissions are updated. Beware of dragons if you
+ // try optimizing this.
+ synchronized (mPackages) {
+ updatePermissionsLPw(null, null, StorageManager.UUID_PRIVATE_INTERNAL,
+ UPDATE_PERMISSIONS_ALL);
+ }
+
// Kick off any messages waiting for system ready
if (mPostSystemReadyMessages != null) {
for (Message msg : mPostSystemReadyMessages) {
@@ -25136,6 +25233,37 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
}
return results;
}
+
+ // NB: this differentiates between preloads and sideloads
+ @Override
+ public String getInstallerForPackage(String packageName) throws RemoteException {
+ final String installerName = getInstallerPackageName(packageName);
+ if (!TextUtils.isEmpty(installerName)) {
+ return installerName;
+ }
+ // differentiate between preload and sideload
+ int callingUser = UserHandle.getUserId(Binder.getCallingUid());
+ ApplicationInfo appInfo = getApplicationInfo(packageName,
+ /*flags*/ 0,
+ /*userId*/ callingUser);
+ if (appInfo != null && (appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
+ return "preload";
+ }
+ return "";
+ }
+
+ @Override
+ public int getVersionCodeForPackage(String packageName) throws RemoteException {
+ try {
+ int callingUser = UserHandle.getUserId(Binder.getCallingUid());
+ PackageInfo pInfo = getPackageInfo(packageName, 0, callingUser);
+ if (pInfo != null) {
+ return pInfo.versionCode;
+ }
+ } catch (Exception e) {
+ }
+ return 0;
+ }
}
private class PackageManagerInternalImpl extends PackageManagerInternal {
@@ -25499,6 +25627,13 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
return mInstantAppRegistry.hasInstantApplicationMetadataLPr(packageName, userId);
}
}
+
+ @Override
+ public void notifyPackageUse(String packageName, int reason) {
+ synchronized (mPackages) {
+ PackageManagerService.this.notifyPackageUseLocked(packageName, reason);
+ }
+ }
}
@Override
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java b/services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java
index 1a97a72cf2b3..19b0d9bc4b90 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceCompilerMapping.java
@@ -26,14 +26,19 @@ import dalvik.system.DexFile;
public class PackageManagerServiceCompilerMapping {
// Names for compilation reasons.
static final String REASON_STRINGS[] = {
- "first-boot", "boot", "install", "bg-dexopt", "ab-ota", "inactive"
+ "first-boot", "boot", "install", "bg-dexopt", "ab-ota", "inactive", "shared"
};
+ static final int REASON_SHARED_INDEX = 6;
+
// Static block to ensure the strings array is of the right length.
static {
if (PackageManagerService.REASON_LAST + 1 != REASON_STRINGS.length) {
throw new IllegalStateException("REASON_STRINGS not correct");
}
+ if (!"shared".equals(REASON_STRINGS[REASON_SHARED_INDEX])) {
+ throw new IllegalStateException("REASON_STRINGS not correct because of shared index");
+ }
}
private static String getSystemPropertyName(int reason) {
@@ -52,11 +57,18 @@ public class PackageManagerServiceCompilerMapping {
!DexFile.isValidCompilerFilter(sysPropValue)) {
throw new IllegalStateException("Value \"" + sysPropValue +"\" not valid "
+ "(reason " + REASON_STRINGS[reason] + ")");
+ } else if (!isFilterAllowedForReason(reason, sysPropValue)) {
+ throw new IllegalStateException("Value \"" + sysPropValue +"\" not allowed "
+ + "(reason " + REASON_STRINGS[reason] + ")");
}
return sysPropValue;
}
+ private static boolean isFilterAllowedForReason(int reason, String filter) {
+ return reason != REASON_SHARED_INDEX || !DexFile.isProfileGuidedCompilerFilter(filter);
+ }
+
// Check that the properties are set and valid.
// Note: this is done in a separate method so this class can be statically initialized.
static void checkProperties() {
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 909ffabfd2db..1f03e666d072 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -54,6 +54,7 @@ import android.os.ShellCommand;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.text.TextUtils;
+import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.PrintWriterPrinter;
import com.android.internal.content.PackageHelper;
@@ -75,6 +76,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
@@ -150,6 +152,8 @@ class PackageManagerShellCommand extends ShellCommand {
return runGetPrivappPermissions();
case "get-privapp-deny-permissions":
return runGetPrivappDenyPermissions();
+ case "get-oem-permissions":
+ return runGetOemPermissions();
case "get-instantapp-resolver":
return runGetInstantAppResolver();
case "has-feature":
@@ -1308,6 +1312,24 @@ class PackageManagerShellCommand extends ShellCommand {
return 0;
}
+ private int runGetOemPermissions() {
+ final String pkg = getNextArg();
+ if (pkg == null) {
+ System.err.println("Error: no package specified.");
+ return 1;
+ }
+ final Map<String, Boolean> oemPermissions = SystemConfig.getInstance()
+ .getOemPermissions(pkg);
+ if (oemPermissions == null || oemPermissions.isEmpty()) {
+ getOutPrintWriter().println("{}");
+ } else {
+ oemPermissions.forEach((permission, granted) ->
+ getOutPrintWriter().println(permission + " granted:" + granted)
+ );
+ }
+ return 0;
+ }
+
private int runGetInstantAppResolver() {
final PrintWriter pw = getOutPrintWriter();
try {
@@ -1419,7 +1441,7 @@ class PackageManagerShellCommand extends ShellCommand {
out = session.openWrite(splitName, 0, sizeBytes);
int total = 0;
- byte[] buffer = new byte[65536];
+ byte[] buffer = new byte[1024 * 1024];
int c;
while ((c = in.read(buffer)) != -1) {
total += c;
@@ -1730,6 +1752,10 @@ class PackageManagerShellCommand extends ShellCommand {
pw.println(" has-feature FEATURE_NAME [version]");
pw.println(" prints true and returns exit status 0 when system has a FEATURE_NAME,");
pw.println(" otherwise prints false and returns exit status 1");
+ pw.println(" get-privileged-permissions TARGET-PACKAGE");
+ pw.println(" prints all privileged permissions for a package.");
+ pw.println(" get-oem-permissions TARGET-PACKAGE");
+ pw.println(" prints all OEM permissions for a package.");
pw.println();
Intent.printIntentArgsHelp(pw , "");
}
diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java
index b4bba88eaf84..52bf6410825f 100644
--- a/services/core/java/com/android/server/pm/PackageSetting.java
+++ b/services/core/java/com/android/server/pm/PackageSetting.java
@@ -113,6 +113,10 @@ final class PackageSetting extends PackageSettingBase {
return (pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0;
}
+ public boolean isOem() {
+ return (pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0;
+ }
+
public boolean isForwardLocked() {
return (pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0;
}
diff --git a/services/core/java/com/android/server/pm/SettingBase.java b/services/core/java/com/android/server/pm/SettingBase.java
index 71e8d515444b..e17cec024df9 100644
--- a/services/core/java/com/android/server/pm/SettingBase.java
+++ b/services/core/java/com/android/server/pm/SettingBase.java
@@ -58,6 +58,7 @@ abstract class SettingBase {
void setPrivateFlags(int pkgPrivateFlags) {
this.pkgPrivateFlags = pkgPrivateFlags
& (ApplicationInfo.PRIVATE_FLAG_PRIVILEGED
+ | ApplicationInfo.PRIVATE_FLAG_OEM
| ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK
| ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER);
}
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 56835f69a3c7..51d3e1029d70 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -869,6 +869,8 @@ final class Settings {
pkgSetting.pkgFlags |= pkgFlags & ApplicationInfo.FLAG_SYSTEM;
pkgSetting.pkgPrivateFlags |=
pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
+ pkgSetting.pkgPrivateFlags |=
+ pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_OEM;
pkgSetting.primaryCpuAbiString = primaryCpuAbi;
pkgSetting.secondaryCpuAbiString = secondaryCpuAbi;
if (childPkgNames != null) {
@@ -4529,21 +4531,24 @@ final class Settings {
};
private static final Object[] PRIVATE_FLAG_DUMP_SPEC = new Object[] {
- ApplicationInfo.PRIVATE_FLAG_HIDDEN, "HIDDEN",
- ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE, "CANT_SAVE_STATE",
- ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK, "FORWARD_LOCK",
- ApplicationInfo.PRIVATE_FLAG_PRIVILEGED, "PRIVILEGED",
- ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS, "HAS_DOMAIN_URLS",
- ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE, "DEFAULT_TO_DEVICE_PROTECTED_STORAGE",
- ApplicationInfo.PRIVATE_FLAG_DIRECT_BOOT_AWARE, "DIRECT_BOOT_AWARE",
- ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE, "PARTIALLY_DIRECT_BOOT_AWARE",
- ApplicationInfo.PRIVATE_FLAG_INSTANT, "EPHEMERAL",
- ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER, "REQUIRED_FOR_SYSTEM_USER",
- ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE",
- ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE",
- ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION",
- ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND, "BACKUP_IN_FOREGROUND",
- ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY, "STATIC_SHARED_LIBRARY",
+ ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE",
+ ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION",
+ ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE, "PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE",
+ ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND, "BACKUP_IN_FOREGROUND",
+ ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE, "CANT_SAVE_STATE",
+ ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE, "DEFAULT_TO_DEVICE_PROTECTED_STORAGE",
+ ApplicationInfo.PRIVATE_FLAG_DIRECT_BOOT_AWARE, "DIRECT_BOOT_AWARE",
+ ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK, "FORWARD_LOCK",
+ ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS, "HAS_DOMAIN_URLS",
+ ApplicationInfo.PRIVATE_FLAG_HIDDEN, "HIDDEN",
+ ApplicationInfo.PRIVATE_FLAG_INSTANT, "EPHEMERAL",
+ ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING, "ISOLATED_SPLIT_LOADING",
+ ApplicationInfo.PRIVATE_FLAG_OEM, "OEM",
+ ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE, "PARTIALLY_DIRECT_BOOT_AWARE",
+ ApplicationInfo.PRIVATE_FLAG_PRIVILEGED, "PRIVILEGED",
+ ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER, "REQUIRED_FOR_SYSTEM_USER",
+ ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY, "STATIC_SHARED_LIBRARY",
+ ApplicationInfo.PRIVATE_FLAG_VIRTUAL_PRELOAD, "VIRTUAL_PRELOAD",
};
void dumpVersionLPr(IndentingPrintWriter pw) {
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index afa7a24ec4a8..f2d527b29c89 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -128,6 +128,7 @@ import java.util.List;
*
* Method naming convention:
* <ul>
+ * <li> Methods suffixed with "LAr" should be called within the {@link #mAppRestrictionsLock} lock.
* <li> Methods suffixed with "LP" should be called within the {@link #mPackagesLock} lock.
* <li> Methods suffixed with "LR" should be called within the {@link #mRestrictionsLock} lock.
* <li> Methods suffixed with "LU" should be called within the {@link #mUsersLock} lock.
@@ -232,6 +233,8 @@ public class UserManagerService extends IUserManager.Stub {
// Short-term lock for internal state, when interaction/sync with PM is not required
private final Object mUsersLock = LockGuard.installNewLock(LockGuard.INDEX_USER);
private final Object mRestrictionsLock = new Object();
+ // Used for serializing access to app restriction files
+ private final Object mAppRestrictionsLock = new Object();
private final Handler mHandler;
@@ -2328,13 +2331,11 @@ public class UserManagerService extends IUserManager.Stub {
/**
* Removes the app restrictions file for a specific package and user id, if it exists.
*/
- private void cleanAppRestrictionsForPackage(String pkg, int userId) {
- synchronized (mPackagesLock) {
- File dir = Environment.getUserSystemDirectory(userId);
- File resFile = new File(dir, packageToRestrictionsFileName(pkg));
- if (resFile.exists()) {
- resFile.delete();
- }
+ private static void cleanAppRestrictionsForPackageLAr(String pkg, int userId) {
+ File dir = Environment.getUserSystemDirectory(userId);
+ File resFile = new File(dir, packageToRestrictionsFileName(pkg));
+ if (resFile.exists()) {
+ resFile.delete();
}
}
@@ -2847,9 +2848,9 @@ public class UserManagerService extends IUserManager.Stub {
|| !UserHandle.isSameApp(Binder.getCallingUid(), getUidForPackage(packageName))) {
checkSystemOrRoot("get application restrictions for other user/app " + packageName);
}
- synchronized (mPackagesLock) {
+ synchronized (mAppRestrictionsLock) {
// Read the restrictions from XML
- return readApplicationRestrictionsLP(packageName, userId);
+ return readApplicationRestrictionsLAr(packageName, userId);
}
}
@@ -2860,12 +2861,12 @@ public class UserManagerService extends IUserManager.Stub {
if (restrictions != null) {
restrictions.setDefusable(true);
}
- synchronized (mPackagesLock) {
+ synchronized (mAppRestrictionsLock) {
if (restrictions == null || restrictions.isEmpty()) {
- cleanAppRestrictionsForPackage(packageName, userId);
+ cleanAppRestrictionsForPackageLAr(packageName, userId);
} else {
// Write the restrictions to XML
- writeApplicationRestrictionsLP(packageName, restrictions, userId);
+ writeApplicationRestrictionsLAr(packageName, restrictions, userId);
}
}
@@ -2888,15 +2889,17 @@ public class UserManagerService extends IUserManager.Stub {
}
}
- private Bundle readApplicationRestrictionsLP(String packageName, int userId) {
+ @GuardedBy("mAppRestrictionsLock")
+ private static Bundle readApplicationRestrictionsLAr(String packageName, int userId) {
AtomicFile restrictionsFile =
new AtomicFile(new File(Environment.getUserSystemDirectory(userId),
packageToRestrictionsFileName(packageName)));
- return readApplicationRestrictionsLP(restrictionsFile);
+ return readApplicationRestrictionsLAr(restrictionsFile);
}
@VisibleForTesting
- static Bundle readApplicationRestrictionsLP(AtomicFile restrictionsFile) {
+ @GuardedBy("mAppRestrictionsLock")
+ static Bundle readApplicationRestrictionsLAr(AtomicFile restrictionsFile) {
final Bundle restrictions = new Bundle();
final ArrayList<String> values = new ArrayList<>();
if (!restrictionsFile.getBaseFile().exists()) {
@@ -2979,16 +2982,18 @@ public class UserManagerService extends IUserManager.Stub {
return childBundle;
}
- private void writeApplicationRestrictionsLP(String packageName,
+ @GuardedBy("mAppRestrictionsLock")
+ private static void writeApplicationRestrictionsLAr(String packageName,
Bundle restrictions, int userId) {
AtomicFile restrictionsFile = new AtomicFile(
new File(Environment.getUserSystemDirectory(userId),
packageToRestrictionsFileName(packageName)));
- writeApplicationRestrictionsLP(restrictions, restrictionsFile);
+ writeApplicationRestrictionsLAr(restrictions, restrictionsFile);
}
@VisibleForTesting
- static void writeApplicationRestrictionsLP(Bundle restrictions, AtomicFile restrictionsFile) {
+ @GuardedBy("mAppRestrictionsLock")
+ static void writeApplicationRestrictionsLAr(Bundle restrictions, AtomicFile restrictionsFile) {
FileOutputStream fos = null;
try {
fos = restrictionsFile.startWrite();
@@ -3232,7 +3237,7 @@ public class UserManagerService extends IUserManager.Stub {
return -1;
}
- private String packageToRestrictionsFileName(String packageName) {
+ private static String packageToRestrictionsFileName(String packageName) {
return RESTRICTIONS_FILE_PREFIX + packageName + XML_SUFFIX;
}
diff --git a/services/core/java/com/android/server/pm/dex/DexoptUtils.java b/services/core/java/com/android/server/pm/dex/DexoptUtils.java
index 0196212d6bc2..e1310a2f1ab3 100644
--- a/services/core/java/com/android/server/pm/dex/DexoptUtils.java
+++ b/services/core/java/com/android/server/pm/dex/DexoptUtils.java
@@ -21,6 +21,7 @@ import android.util.Slog;
import android.util.SparseArray;
import com.android.internal.os.ClassLoaderFactory;
+import com.android.server.pm.PackageDexOptimizer;
import java.io.File;
import java.util.ArrayList;
@@ -35,7 +36,9 @@ public final class DexoptUtils {
/**
* Creates the class loader context dependencies for each of the application code paths.
* The returned array contains the class loader contexts that needs to be passed to dexopt in
- * order to ensure correct optimizations.
+ * order to ensure correct optimizations. "Code" paths with no actual code, as specified by
+ * {@param pathsWithCode}, are ignored and will have null as their context in the returned array
+ * (configuration splits are an example of paths without code).
*
* A class loader context describes how the class loader chain should be built by dex2oat
* in order to ensure that classes are resolved during compilation as they would be resolved
@@ -60,7 +63,8 @@ public final class DexoptUtils {
* {@link android.app.LoadedApk#makePaths(
* android.app.ActivityThread, boolean, ApplicationInfo, List, List)}.
*/
- public static String[] getClassLoaderContexts(ApplicationInfo info, String[] sharedLibraries) {
+ public static String[] getClassLoaderContexts(ApplicationInfo info,
+ String[] sharedLibraries, boolean[] pathsWithCode) {
// The base class loader context contains only the shared library.
String sharedLibrariesClassPath = encodeClasspath(sharedLibraries);
String baseApkContextClassLoader = encodeClassLoader(
@@ -86,7 +90,7 @@ public final class DexoptUtils {
// Index 0 is the class loaded context for the base apk.
// Index `i` is the class loader context encoding for split `i`.
String[] classLoaderContexts = new String[/*base apk*/ 1 + splitRelativeCodePaths.length];
- classLoaderContexts[0] = baseApkContextClassLoader;
+ classLoaderContexts[0] = pathsWithCode[0] ? baseApkContextClassLoader : null;
if (!info.requestsIsolatedSplitLoading() || info.splitDependencies == null) {
// If the app didn't request for the splits to be loaded in isolation or if it does not
@@ -94,7 +98,15 @@ public final class DexoptUtils {
// apk class loader (in the order of their definition).
String classpath = sharedLibrariesAndBaseClassPath;
for (int i = 1; i < classLoaderContexts.length; i++) {
- classLoaderContexts[i] = encodeClassLoader(classpath, info.classLoaderName);
+ classLoaderContexts[i] = pathsWithCode[i]
+ ? encodeClassLoader(classpath, info.classLoaderName) : null;
+ // Note that the splits with no code are not removed from the classpath computation.
+ // i.e. split_n might get the split_n-1 in its classpath dependency even
+ // if split_n-1 has no code.
+ // The splits with no code do not matter for the runtime which ignores
+ // apks without code when doing the classpath checks. As such we could actually
+ // filter them but we don't do it in order to keep consistency with how the apps
+ // are loaded.
classpath = encodeClasspath(classpath, splitRelativeCodePaths[i - 1]);
}
} else {
@@ -116,9 +128,17 @@ public final class DexoptUtils {
String splitDependencyOnBase = encodeClassLoader(
sharedLibrariesAndBaseClassPath, info.classLoaderName);
SparseArray<int[]> splitDependencies = info.splitDependencies;
+
+ // Note that not all splits have dependencies (e.g. configuration splits)
+ // The splits without dependencies will have classLoaderContexts[config_split_index]
+ // set to null after this step.
for (int i = 1; i < splitDependencies.size(); i++) {
- getParentDependencies(splitDependencies.keyAt(i), splitClassLoaderEncodingCache,
- splitDependencies, classLoaderContexts, splitDependencyOnBase);
+ int splitIndex = splitDependencies.keyAt(i);
+ if (pathsWithCode[splitIndex]) {
+ // Compute the class loader context only for the splits with code.
+ getParentDependencies(splitIndex, splitClassLoaderEncodingCache,
+ splitDependencies, classLoaderContexts, splitDependencyOnBase);
+ }
}
// At this point classLoaderContexts contains only the parent dependencies.
@@ -126,8 +146,17 @@ public final class DexoptUtils {
// come first in the context.
for (int i = 1; i < classLoaderContexts.length; i++) {
String splitClassLoader = encodeClassLoader("", info.splitClassLoaderNames[i - 1]);
- classLoaderContexts[i] = encodeClassLoaderChain(
- splitClassLoader, classLoaderContexts[i]);
+ if (pathsWithCode[i]) {
+ // If classLoaderContexts[i] is null it means that the split does not have
+ // any dependency. In this case its context equals its declared class loader.
+ classLoaderContexts[i] = classLoaderContexts[i] == null
+ ? splitClassLoader
+ : encodeClassLoaderChain(splitClassLoader, classLoaderContexts[i]);
+ } else {
+ // This is a split without code, it has no dependency and it is not compiled.
+ // Its context will be null.
+ classLoaderContexts[i] = null;
+ }
}
}
@@ -210,10 +239,15 @@ public final class DexoptUtils {
/**
* Encodes a single class loader dependency starting from {@param path} and
* {@param classLoaderName}.
+ * When classpath is {@link PackageDexOptimizer#SKIP_SHARED_LIBRARY_CHECK}, the method returns
+ * the same. This special property is used only during OTA.
* NOTE: Keep this in sync with the dexopt expectations! Right now that is either "PCL[path]"
* for a PathClassLoader or "DLC[path]" for a DelegateLastClassLoader.
*/
- private static String encodeClassLoader(String classpath, String classLoaderName) {
+ /*package*/ static String encodeClassLoader(String classpath, String classLoaderName) {
+ if (classpath.equals(PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK)) {
+ return classpath;
+ }
String classLoaderDexoptEncoding = classLoaderName;
if (ClassLoaderFactory.isPathClassLoaderName(classLoaderName)) {
classLoaderDexoptEncoding = "PCL";
@@ -227,10 +261,17 @@ public final class DexoptUtils {
/**
* Links to dependencies together in a format accepted by dexopt.
+ * For the special case when either of cl1 or cl2 equals
+ * {@link PackageDexOptimizer#SKIP_SHARED_LIBRARY_CHECK}, the method returns the same. This
+ * property is used only during OTA.
* NOTE: Keep this in sync with the dexopt expectations! Right now that is a list of split
* dependencies {@see encodeClassLoader} separated by ';'.
*/
- private static String encodeClassLoaderChain(String cl1, String cl2) {
+ /*package*/ static String encodeClassLoaderChain(String cl1, String cl2) {
+ if (cl1.equals(PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK) ||
+ cl2.equals(PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK)) {
+ return PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK;
+ }
if (cl1.isEmpty()) return cl2;
if (cl2.isEmpty()) return cl1;
return cl1 + ";" + cl2;
diff --git a/services/core/java/com/android/server/policy/AccessibilityShortcutController.java b/services/core/java/com/android/server/policy/AccessibilityShortcutController.java
index 0a8635d7210f..55c582ed47b4 100644
--- a/services/core/java/com/android/server/policy/AccessibilityShortcutController.java
+++ b/services/core/java/com/android/server/policy/AccessibilityShortcutController.java
@@ -24,6 +24,7 @@ import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.media.AudioAttributes;
import android.media.Ringtone;
@@ -138,13 +139,18 @@ public class AccessibilityShortcutController {
final int userId = ActivityManager.getCurrentUser();
final int dialogAlreadyShown = Settings.Secure.getIntForUser(
cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 0, userId);
+ // Use USAGE_ASSISTANCE_ACCESSIBILITY for TVs to ensure that TVs play the ringtone as they
+ // have less ways of providing feedback like vibration.
+ final int audioAttributesUsage = hasFeatureLeanback()
+ ? AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY
+ : AudioAttributes.USAGE_NOTIFICATION_EVENT;
// Play a notification tone
final Ringtone tone =
RingtoneManager.getRingtone(mContext, Settings.System.DEFAULT_NOTIFICATION_URI);
if (tone != null) {
tone.setAudioAttributes(new AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_NOTIFICATION_EVENT)
+ .setUsage(audioAttributesUsage)
.build());
tone.play();
}
@@ -254,6 +260,10 @@ public class AccessibilityShortcutController {
AccessibilityServiceInfo.FEEDBACK_ALL_MASK).contains(serviceInfo);
}
+ private boolean hasFeatureLeanback() {
+ return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK);
+ }
+
// Class to allow mocking of static framework calls
public static class FrameworkObjectProvider {
public AccessibilityManager getAccessibilityManagerInstance(Context context) {
diff --git a/services/core/java/com/android/server/policy/LegacyGlobalActions.java b/services/core/java/com/android/server/policy/LegacyGlobalActions.java
index 14fabc593991..8eb6d065bf25 100644
--- a/services/core/java/com/android/server/policy/LegacyGlobalActions.java
+++ b/services/core/java/com/android/server/policy/LegacyGlobalActions.java
@@ -202,11 +202,14 @@ class LegacyGlobalActions implements DialogInterface.OnDismissListener, DialogIn
&& !(mAdapter.getItem(0) instanceof LongPressAction)) {
((SinglePressAction) mAdapter.getItem(0)).onPress();
} else {
- WindowManager.LayoutParams attrs = mDialog.getWindow().getAttributes();
- attrs.setTitle("LegacyGlobalActions");
- mDialog.getWindow().setAttributes(attrs);
- mDialog.show();
- mDialog.getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_DISABLE_EXPAND);
+ if (mDialog != null) {
+ WindowManager.LayoutParams attrs = mDialog.getWindow().getAttributes();
+ attrs.setTitle("LegacyGlobalActions");
+ mDialog.getWindow().setAttributes(attrs);
+ mDialog.show();
+ mDialog.getWindow().getDecorView().setSystemUiVisibility(
+ View.STATUS_BAR_DISABLE_EXPAND);
+ }
}
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index fcfe1d699285..d19bf445ef04 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -198,6 +198,7 @@ import android.util.EventLog;
import android.util.Log;
import android.util.LongSparseArray;
import android.util.MutableBoolean;
+import android.util.PrintWriterPrinter;
import android.util.Slog;
import android.util.SparseArray;
import android.util.proto.ProtoOutputStream;
@@ -296,13 +297,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
static final int LONG_PRESS_POWER_SHUT_OFF = 2;
static final int LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM = 3;
- static final int LONG_PRESS_BACK_NOTHING = 0;
- static final int LONG_PRESS_BACK_GO_TO_VOICE_ASSIST = 1;
-
static final int MULTI_PRESS_POWER_NOTHING = 0;
static final int MULTI_PRESS_POWER_THEATER_MODE = 1;
static final int MULTI_PRESS_POWER_BRIGHTNESS_BOOST = 2;
+ static final int LONG_PRESS_BACK_NOTHING = 0;
+ static final int LONG_PRESS_BACK_GO_TO_VOICE_ASSIST = 1;
+
// Number of presses needed before we induce panic press behavior on the back button
static final int PANIC_PRESS_BACK_COUNT = 4;
static final int PANIC_PRESS_BACK_NOTHING = 0;
@@ -338,6 +339,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
static public final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
static public final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
static public final String SYSTEM_DIALOG_REASON_ASSIST = "assist";
+ static public final String SYSTEM_DIALOG_REASON_SCREENSHOT = "screenshot";
/**
* These are the system UI flags that, when changing, can cause the layout
@@ -564,7 +566,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
int mLongPressOnBackBehavior;
int mPanicPressOnBackBehavior;
int mShortPressOnSleepBehavior;
- int mShortPressWindowBehavior;
+ int mShortPressOnWindowBehavior;
volatile boolean mAwake;
boolean mScreenOnEarly;
boolean mScreenOnFully;
@@ -832,6 +834,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
private static final int MSG_ACCESSIBILITY_TV = 23;
private static final int MSG_DISPATCH_BACK_KEY_TO_AUTOFILL = 24;
private static final int MSG_SYSTEM_KEY_PRESS = 25;
+ private static final int MSG_HANDLE_ALL_APPS = 26;
private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS = 0;
private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION = 1;
@@ -924,6 +927,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case MSG_SYSTEM_KEY_PRESS:
sendSystemKeyToStatusBar(msg.arg1);
break;
+ case MSG_HANDLE_ALL_APPS:
+ launchAllAppsAction();
+ break;
}
}
}
@@ -1804,6 +1810,17 @@ public class PhoneWindowManager implements WindowManagerPolicy {
private void launchAllAppsAction() {
Intent intent = new Intent(Intent.ACTION_ALL_APPS);
+ if (mHasFeatureLeanback) {
+ final PackageManager pm = mContext.getPackageManager();
+ Intent intentLauncher = new Intent(Intent.ACTION_MAIN);
+ intentLauncher.addCategory(Intent.CATEGORY_HOME);
+ ResolveInfo resolveInfo = pm.resolveActivityAsUser(intentLauncher,
+ PackageManager.MATCH_SYSTEM_ONLY,
+ mCurrentUserId);
+ if (resolveInfo != null) {
+ intent.setPackage(resolveInfo.activityInfo.packageName);
+ }
+ }
startActivityAsUser(intent, UserHandle.CURRENT);
}
@@ -2164,9 +2181,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mDoubleTapOnHomeBehavior = LONG_PRESS_HOME_NOTHING;
}
- mShortPressWindowBehavior = SHORT_PRESS_WINDOW_NOTHING;
+ mShortPressOnWindowBehavior = SHORT_PRESS_WINDOW_NOTHING;
if (mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE)) {
- mShortPressWindowBehavior = SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE;
+ mShortPressOnWindowBehavior = SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE;
}
mNavBarOpacityMode = res.getInteger(
@@ -3401,11 +3418,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (!down) {
cancelPreloadRecentApps();
- if (mHasFeatureLeanback) {
- // Clear flags
- mAccessibilityTvKey2Pressed = down;
- }
-
mHomePressed = false;
if (mHomeConsumed) {
mHomeConsumed = false;
@@ -3460,13 +3472,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
preloadRecentApps();
}
} else if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) {
- if (mHasFeatureLeanback) {
- mAccessibilityTvKey2Pressed = down;
- if (interceptAccessibilityGestureTv()) {
- return -1;
- }
- }
-
if (!keyguardOn) {
handleLongPressOnHome(event.getDeviceId());
}
@@ -3623,21 +3628,30 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return -1;
}
- // If the device is in Vr mode, drop the volume keys and don't
- // forward it to the application/dispatch the audio event.
+ // If the device is in VR mode and keys are "internal" (e.g. on the side of the
+ // device), then drop the volume keys and don't forward it to the application/dispatch
+ // the audio event.
if (mPersistentVrModeEnabled) {
- return -1;
+ final InputDevice d = event.getDevice();
+ if (d != null && !d.isExternal()) {
+ return -1;
+ }
}
} else if (keyCode == KeyEvent.KEYCODE_TAB && event.isMetaPressed()) {
// Pass through keyboard navigation keys.
return 0;
} else if (mHasFeatureLeanback && interceptBugreportGestureTv(keyCode, down)) {
return -1;
- } else if (mHasFeatureLeanback && keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
- mAccessibilityTvKey1Pressed = down;
- if (interceptAccessibilityGestureTv()) {
- return -1;
+ } else if (mHasFeatureLeanback && interceptAccessibilityGestureTv(keyCode, down)) {
+ return -1;
+ } else if (keyCode == KeyEvent.KEYCODE_ALL_APPS) {
+ if (!down) {
+ mHandler.removeMessages(MSG_HANDLE_ALL_APPS);
+ Message msg = mHandler.obtainMessage(MSG_HANDLE_ALL_APPS);
+ msg.setAsynchronous(true);
+ msg.sendToTarget();
}
+ return -1;
}
// Toggle Caps Lock on META-ALT.
@@ -3858,20 +3872,28 @@ public class PhoneWindowManager implements WindowManagerPolicy {
/**
* TV only: recognizes a remote control gesture as Accessibility shortcut.
- * Shortcut: Long press (HOME + DPAD_CENTER)
+ * Shortcut: Long press (BACK + DPAD_DOWN)
*/
- private boolean interceptAccessibilityGestureTv() {
+ private boolean interceptAccessibilityGestureTv(int keyCode, boolean down) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ mAccessibilityTvKey1Pressed = down;
+ } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
+ mAccessibilityTvKey2Pressed = down;
+ }
+
if (mAccessibilityTvKey1Pressed && mAccessibilityTvKey2Pressed) {
if (!mAccessibilityTvScheduled) {
mAccessibilityTvScheduled = true;
Message msg = Message.obtain(mHandler, MSG_ACCESSIBILITY_TV);
msg.setAsynchronous(true);
- mHandler.sendMessage(msg);
+ mHandler.sendMessageDelayed(msg,
+ ViewConfiguration.get(mContext).getAccessibilityShortcutKeyTimeout());
}
} else if (mAccessibilityTvScheduled) {
mHandler.removeMessages(MSG_ACCESSIBILITY_TV);
mAccessibilityTvScheduled = false;
}
+
return mAccessibilityTvScheduled;
}
@@ -5555,6 +5577,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
WindowManager.LayoutParams statusBarAttrs = mStatusBar.getAttrs();
boolean statusBarExpanded = statusBarAttrs.height == MATCH_PARENT
&& statusBarAttrs.width == MATCH_PARENT;
+ boolean topAppHidesStatusBar = topAppHidesStatusBar();
if (mForceStatusBar || mForceStatusBarFromKeyguard || mForceStatusBarTransparent
|| statusBarExpanded) {
if (DEBUG_LAYOUT) Slog.v(TAG, "Showing status bar: forced");
@@ -5575,16 +5598,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
}
} else if (mTopFullscreenOpaqueWindowState != null) {
- final int fl = PolicyControl.getWindowFlags(null, lp);
- if (localLOGV) {
- Slog.d(TAG, "frame: " + mTopFullscreenOpaqueWindowState.getFrameLw()
- + " shown position: "
- + mTopFullscreenOpaqueWindowState.getShownPositionLw());
- Slog.d(TAG, "attr: " + mTopFullscreenOpaqueWindowState.getAttrs()
- + " lp.flags=0x" + Integer.toHexString(fl));
- }
- topIsFullscreen = (fl & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0
- || (mLastSystemUiFlags & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0;
+ topIsFullscreen = topAppHidesStatusBar;
// The subtle difference between the window for mTopFullscreenOpaqueWindowState
// and mTopIsFullscreen is that mTopIsFullscreen is set only if the window
// has the FLAG_FULLSCREEN set. Not sure if there is another way that to be the
@@ -5607,8 +5621,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (mStatusBarController.setBarShowingLw(true)) {
changes |= FINISH_LAYOUT_REDO_LAYOUT;
}
+ topAppHidesStatusBar = false;
}
}
+ mStatusBarController.setTopAppHidesStatusBar(topAppHidesStatusBar);
}
if (mTopIsFullscreen != topIsFullscreen) {
@@ -5649,6 +5665,27 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
/**
+ * @return Whether the top app should hide the statusbar based on the top fullscreen opaque
+ * window.
+ */
+ private boolean topAppHidesStatusBar() {
+ if (mTopFullscreenOpaqueWindowState == null) {
+ return false;
+ }
+ final int fl = PolicyControl.getWindowFlags(null,
+ mTopFullscreenOpaqueWindowState.getAttrs());
+ if (localLOGV) {
+ Slog.d(TAG, "frame: " + mTopFullscreenOpaqueWindowState.getFrameLw()
+ + " shown position: "
+ + mTopFullscreenOpaqueWindowState.getShownPositionLw());
+ Slog.d(TAG, "attr: " + mTopFullscreenOpaqueWindowState.getAttrs()
+ + " lp.flags=0x" + Integer.toHexString(fl));
+ }
+ return (fl & LayoutParams.FLAG_FULLSCREEN) != 0
+ || (mLastSystemUiFlags & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0;
+ }
+
+ /**
* Updates the occluded state of the Keyguard.
*
* @return Whether the flags have changed and we have to redo the layout.
@@ -6240,7 +6277,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
break;
}
case KeyEvent.KEYCODE_WINDOW: {
- if (mShortPressWindowBehavior == SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE) {
+ if (mShortPressOnWindowBehavior == SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE) {
if (mPictureInPictureVisible) {
// Consumes the key only if picture-in-picture is visible to show
// picture-in-picture control menu. This gives a chance to the foreground
@@ -7812,13 +7849,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case HapticFeedbackConstants.VIRTUAL_KEY:
return VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
case HapticFeedbackConstants.VIRTUAL_KEY_RELEASE:
- return VibrationEffect.get(VibrationEffect.EFFECT_TICK);
+ return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false);
case HapticFeedbackConstants.KEYBOARD_PRESS: // == HapticFeedbackConstants.KEYBOARD_TAP
return VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
case HapticFeedbackConstants.KEYBOARD_RELEASE:
- return VibrationEffect.get(VibrationEffect.EFFECT_TICK);
+ return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false);
case HapticFeedbackConstants.TEXT_HANDLE_MOVE:
- return VibrationEffect.get(VibrationEffect.EFFECT_TICK);
+ return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false);
default:
return null;
}
@@ -8287,9 +8324,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
pw.print(prefix); pw.print("mSafeMode="); pw.print(mSafeMode);
pw.print(" mSystemReady="); pw.print(mSystemReady);
pw.print(" mSystemBooted="); pw.println(mSystemBooted);
- pw.print(prefix); pw.print("mLidState="); pw.print(mLidState);
- pw.print(" mLidOpenRotation="); pw.print(mLidOpenRotation);
- pw.print(" mCameraLensCoverState="); pw.print(mCameraLensCoverState);
+ pw.print(prefix); pw.print("mLidState=");
+ pw.print(WindowManagerFuncs.lidStateToString(mLidState));
+ pw.print(" mLidOpenRotation=");
+ pw.println(Surface.rotationToString(mLidOpenRotation));
+ pw.print(prefix); pw.print("mCameraLensCoverState=");
+ pw.print(WindowManagerFuncs.cameraLensStateToString(mCameraLensCoverState));
pw.print(" mHdmiPlugged="); pw.println(mHdmiPlugged);
if (mLastSystemUiFlags != 0 || mResettingSystemUiFlags != 0
|| mForceClearedSystemUiFlags != 0) {
@@ -8307,16 +8347,24 @@ public class PhoneWindowManager implements WindowManagerPolicy {
pw.print(prefix); pw.print("mWakeGestureEnabledSetting=");
pw.println(mWakeGestureEnabledSetting);
- pw.print(prefix); pw.print("mSupportAutoRotation="); pw.println(mSupportAutoRotation);
- pw.print(prefix); pw.print("mUiMode="); pw.print(mUiMode);
- pw.print(" mDockMode="); pw.print(mDockMode);
- pw.print(" mEnableCarDockHomeCapture="); pw.print(mEnableCarDockHomeCapture);
- pw.print(" mCarDockRotation="); pw.print(mCarDockRotation);
- pw.print(" mDeskDockRotation="); pw.println(mDeskDockRotation);
- pw.print(prefix); pw.print("mUserRotationMode="); pw.print(mUserRotationMode);
- pw.print(" mUserRotation="); pw.print(mUserRotation);
- pw.print(" mAllowAllRotations="); pw.println(mAllowAllRotations);
- pw.print(prefix); pw.print("mCurrentAppOrientation="); pw.println(mCurrentAppOrientation);
+ pw.print(prefix);
+ pw.print("mSupportAutoRotation="); pw.print(mSupportAutoRotation);
+ pw.print(" mOrientationSensorEnabled="); pw.println(mOrientationSensorEnabled);
+ pw.print(prefix); pw.print("mUiMode="); pw.print(Configuration.uiModeToString(mUiMode));
+ pw.print(" mDockMode="); pw.println(Intent.dockStateToString(mDockMode));
+ pw.print(prefix); pw.print("mEnableCarDockHomeCapture=");
+ pw.print(mEnableCarDockHomeCapture);
+ pw.print(" mCarDockRotation=");
+ pw.print(Surface.rotationToString(mCarDockRotation));
+ pw.print(" mDeskDockRotation=");
+ pw.println(Surface.rotationToString(mDeskDockRotation));
+ pw.print(prefix); pw.print("mUserRotationMode=");
+ pw.print(WindowManagerPolicy.userRotationModeToString(mUserRotationMode));
+ pw.print(" mUserRotation="); pw.print(Surface.rotationToString(mUserRotation));
+ pw.print(" mAllowAllRotations=");
+ pw.println(allowAllRotationsToString(mAllowAllRotations));
+ pw.print(prefix); pw.print("mCurrentAppOrientation=");
+ pw.println(ActivityInfo.screenOrientationToString(mCurrentAppOrientation));
pw.print(prefix); pw.print("mCarDockEnablesAccelerometer=");
pw.print(mCarDockEnablesAccelerometer);
pw.print(" mDeskDockEnablesAccelerometer=");
@@ -8325,23 +8373,54 @@ public class PhoneWindowManager implements WindowManagerPolicy {
pw.print(mLidKeyboardAccessibility);
pw.print(" mLidNavigationAccessibility="); pw.print(mLidNavigationAccessibility);
pw.print(" mLidControlsScreenLock="); pw.println(mLidControlsScreenLock);
- pw.print(" mLidControlsSleep="); pw.println(mLidControlsSleep);
+ pw.print(prefix); pw.print("mLidControlsSleep="); pw.println(mLidControlsSleep);
+ pw.print(prefix);
+ pw.print("mLongPressOnBackBehavior=");
+ pw.println(longPressOnBackBehaviorToString(mLongPressOnBackBehavior));
+ pw.print(prefix);
+ pw.print("mPanicPressOnBackBehavior=");
+ pw.println(panicPressOnBackBehaviorToString(mPanicPressOnBackBehavior));
+ pw.print(prefix);
+ pw.print("mLongPressOnHomeBehavior=");
+ pw.println(longPressOnHomeBehaviorToString(mLongPressOnHomeBehavior));
+ pw.print(prefix);
+ pw.print("mDoubleTapOnHomeBehavior=");
+ pw.println(doubleTapOnHomeBehaviorToString(mDoubleTapOnHomeBehavior));
+ pw.print(prefix);
+ pw.print("mShortPressOnPowerBehavior=");
+ pw.println(shortPressOnPowerBehaviorToString(mShortPressOnPowerBehavior));
+ pw.print(prefix);
+ pw.print("mLongPressOnPowerBehavior=");
+ pw.println(longPressOnPowerBehaviorToString(mLongPressOnPowerBehavior));
+ pw.print(prefix);
+ pw.print("mDoublePressOnPowerBehavior=");
+ pw.println(multiPressOnPowerBehaviorToString(mDoublePressOnPowerBehavior));
pw.print(prefix);
- pw.print(" mLongPressOnBackBehavior="); pw.println(mLongPressOnBackBehavior);
+ pw.print("mTriplePressOnPowerBehavior=");
+ pw.println(multiPressOnPowerBehaviorToString(mTriplePressOnPowerBehavior));
pw.print(prefix);
- pw.print("mShortPressOnPowerBehavior="); pw.print(mShortPressOnPowerBehavior);
- pw.print(" mLongPressOnPowerBehavior="); pw.println(mLongPressOnPowerBehavior);
+ pw.print("mShortPressOnSleepBehavior=");
+ pw.println(shortPressOnSleepBehaviorToString(mShortPressOnSleepBehavior));
pw.print(prefix);
- pw.print("mDoublePressOnPowerBehavior="); pw.print(mDoublePressOnPowerBehavior);
- pw.print(" mTriplePressOnPowerBehavior="); pw.println(mTriplePressOnPowerBehavior);
- pw.print(prefix); pw.print("mHasSoftInput="); pw.println(mHasSoftInput);
- pw.print(prefix); pw.print("mAwake="); pw.println(mAwake);
- pw.print(prefix); pw.print("mScreenOnEarly="); pw.print(mScreenOnEarly);
+ pw.print("mShortPressOnWindowBehavior=");
+ pw.println(shortPressOnWindowBehaviorToString(mShortPressOnWindowBehavior));
+ pw.print(prefix);
+ pw.print("mHasSoftInput="); pw.print(mHasSoftInput);
+ pw.print(" mDismissImeOnBackKeyPressed="); pw.println(mDismissImeOnBackKeyPressed);
+ pw.print(prefix);
+ pw.print("mIncallPowerBehavior=");
+ pw.print(incallPowerBehaviorToString(mIncallPowerBehavior));
+ pw.print(" mIncallBackBehavior=");
+ pw.print(incallBackBehaviorToString(mIncallBackBehavior));
+ pw.print(" mEndcallBehavior=");
+ pw.println(endcallBehaviorToString(mEndcallBehavior));
+ pw.print(prefix); pw.print("mHomePressed="); pw.println(mHomePressed);
+ pw.print(prefix);
+ pw.print("mAwake="); pw.print(mAwake);
+ pw.print("mScreenOnEarly="); pw.print(mScreenOnEarly);
pw.print(" mScreenOnFully="); pw.println(mScreenOnFully);
pw.print(prefix); pw.print("mKeyguardDrawComplete="); pw.print(mKeyguardDrawComplete);
pw.print(" mWindowManagerDrawComplete="); pw.println(mWindowManagerDrawComplete);
- pw.print(prefix); pw.print("mOrientationSensorEnabled=");
- pw.println(mOrientationSensorEnabled);
pw.print(prefix); pw.print("mOverscanScreen=("); pw.print(mOverscanScreenLeft);
pw.print(","); pw.print(mOverscanScreenTop);
pw.print(") "); pw.print(mOverscanScreenWidth);
@@ -8407,8 +8486,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
pw.print(prefix); pw.print("mLastInputMethodTargetWindow=");
pw.println(mLastInputMethodTargetWindow);
}
- pw.print(prefix); pw.print("mDismissImeOnBackKeyPressed=");
- pw.println(mDismissImeOnBackKeyPressed);
if (mStatusBar != null) {
pw.print(prefix); pw.print("mStatusBar=");
pw.print(mStatusBar); pw.print(" isStatusBarKeyguard=");
@@ -8441,26 +8518,28 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
pw.print(prefix); pw.print("mTopIsFullscreen="); pw.print(mTopIsFullscreen);
pw.print(" mKeyguardOccluded="); pw.println(mKeyguardOccluded);
- pw.print(" mKeyguardOccludedChanged="); pw.println(mKeyguardOccludedChanged);
+ pw.print(prefix);
+ pw.print("mKeyguardOccludedChanged="); pw.print(mKeyguardOccludedChanged);
pw.print(" mPendingKeyguardOccluded="); pw.println(mPendingKeyguardOccluded);
pw.print(prefix); pw.print("mForceStatusBar="); pw.print(mForceStatusBar);
pw.print(" mForceStatusBarFromKeyguard=");
pw.println(mForceStatusBarFromKeyguard);
- pw.print(prefix); pw.print("mHomePressed="); pw.println(mHomePressed);
pw.print(prefix); pw.print("mAllowLockscreenWhenOn="); pw.print(mAllowLockscreenWhenOn);
pw.print(" mLockScreenTimeout="); pw.print(mLockScreenTimeout);
pw.print(" mLockScreenTimerActive="); pw.println(mLockScreenTimerActive);
- pw.print(prefix); pw.print("mEndcallBehavior="); pw.print(mEndcallBehavior);
- pw.print(" mIncallPowerBehavior="); pw.print(mIncallPowerBehavior);
- pw.print(" mIncallBackBehavior="); pw.print(mIncallBackBehavior);
- pw.print(" mLongPressOnHomeBehavior="); pw.println(mLongPressOnHomeBehavior);
- pw.print(prefix); pw.print("mLandscapeRotation="); pw.print(mLandscapeRotation);
- pw.print(" mSeascapeRotation="); pw.println(mSeascapeRotation);
- pw.print(prefix); pw.print("mPortraitRotation="); pw.print(mPortraitRotation);
- pw.print(" mUpsideDownRotation="); pw.println(mUpsideDownRotation);
- pw.print(prefix); pw.print("mDemoHdmiRotation="); pw.print(mDemoHdmiRotation);
+ pw.print(prefix); pw.print("mLandscapeRotation=");
+ pw.print(Surface.rotationToString(mLandscapeRotation));
+ pw.print(" mSeascapeRotation=");
+ pw.println(Surface.rotationToString(mSeascapeRotation));
+ pw.print(prefix); pw.print("mPortraitRotation=");
+ pw.print(Surface.rotationToString(mPortraitRotation));
+ pw.print(" mUpsideDownRotation=");
+ pw.println(Surface.rotationToString(mUpsideDownRotation));
+ pw.print(prefix); pw.print("mDemoHdmiRotation=");
+ pw.print(Surface.rotationToString(mDemoHdmiRotation));
pw.print(" mDemoHdmiRotationLock="); pw.println(mDemoHdmiRotationLock);
- pw.print(prefix); pw.print("mUndockedHdmiRotation="); pw.println(mUndockedHdmiRotation);
+ pw.print(prefix); pw.print("mUndockedHdmiRotation=");
+ pw.println(Surface.rotationToString(mUndockedHdmiRotation));
if (mHasFeatureLeanback) {
pw.print(prefix);
pw.print("mAccessibilityTvKey1Pressed="); pw.println(mAccessibilityTvKey1Pressed);
@@ -8487,5 +8566,169 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (mKeyguardDelegate != null) {
mKeyguardDelegate.dump(prefix, pw);
}
+
+ pw.print(prefix); pw.println("Looper state:");
+ mHandler.getLooper().dump(new PrintWriterPrinter(pw), prefix + " ");
+ }
+
+ private static String allowAllRotationsToString(int allowAll) {
+ switch (allowAll) {
+ case -1:
+ return "unknown";
+ case 0:
+ return "false";
+ case 1:
+ return "true";
+ default:
+ return Integer.toString(allowAll);
+ }
+ }
+
+ private static String endcallBehaviorToString(int behavior) {
+ StringBuilder sb = new StringBuilder();
+ if ((behavior & Settings.System.END_BUTTON_BEHAVIOR_HOME) != 0 ) {
+ sb.append("home|");
+ }
+ if ((behavior & Settings.System.END_BUTTON_BEHAVIOR_SLEEP) != 0) {
+ sb.append("sleep|");
+ }
+
+ final int N = sb.length();
+ if (N == 0) {
+ return "<nothing>";
+ } else {
+ // Chop off the trailing '|'
+ return sb.substring(0, N - 1);
+ }
+ }
+
+ private static String incallPowerBehaviorToString(int behavior) {
+ if ((behavior & Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP) != 0) {
+ return "hangup";
+ } else {
+ return "sleep";
+ }
+ }
+
+ private static String incallBackBehaviorToString(int behavior) {
+ if ((behavior & Settings.Secure.INCALL_BACK_BUTTON_BEHAVIOR_HANGUP) != 0) {
+ return "hangup";
+ } else {
+ return "<nothing>";
+ }
+ }
+
+ private static String longPressOnBackBehaviorToString(int behavior) {
+ switch (behavior) {
+ case LONG_PRESS_BACK_NOTHING:
+ return "LONG_PRESS_BACK_NOTHING";
+ case LONG_PRESS_BACK_GO_TO_VOICE_ASSIST:
+ return "LONG_PRESS_BACK_GO_TO_VOICE_ASSIST";
+ default:
+ return Integer.toString(behavior);
+ }
+ }
+
+ private static String panicPressOnBackBehaviorToString(int behavior) {
+ switch (behavior) {
+ case PANIC_PRESS_BACK_NOTHING:
+ return "PANIC_PRESS_BACK_NOTHING";
+ case PANIC_PRESS_BACK_HOME:
+ return "PANIC_PRESS_BACK_HOME";
+ default:
+ return Integer.toString(behavior);
+ }
+ }
+
+ private static String longPressOnHomeBehaviorToString(int behavior) {
+ switch (behavior) {
+ case LONG_PRESS_HOME_NOTHING:
+ return "LONG_PRESS_HOME_NOTHING";
+ case LONG_PRESS_HOME_ALL_APPS:
+ return "LONG_PRESS_HOME_ALL_APPS";
+ case LONG_PRESS_HOME_ASSIST:
+ return "LONG_PRESS_HOME_ASSIST";
+ default:
+ return Integer.toString(behavior);
+ }
+ }
+
+ private static String doubleTapOnHomeBehaviorToString(int behavior) {
+ switch (behavior) {
+ case DOUBLE_TAP_HOME_NOTHING:
+ return "DOUBLE_TAP_HOME_NOTHING";
+ case DOUBLE_TAP_HOME_RECENT_SYSTEM_UI:
+ return "DOUBLE_TAP_HOME_RECENT_SYSTEM_UI";
+ default:
+ return Integer.toString(behavior);
+ }
+ }
+
+ private static String shortPressOnPowerBehaviorToString(int behavior) {
+ switch (behavior) {
+ case SHORT_PRESS_POWER_NOTHING:
+ return "SHORT_PRESS_POWER_NOTHING";
+ case SHORT_PRESS_POWER_GO_TO_SLEEP:
+ return "SHORT_PRESS_POWER_GO_TO_SLEEP";
+ case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP:
+ return "SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP";
+ case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME:
+ return "SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME";
+ case SHORT_PRESS_POWER_GO_HOME:
+ return "SHORT_PRESS_POWER_GO_HOME";
+ case SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME:
+ return "SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME";
+ default:
+ return Integer.toString(behavior);
+ }
+ }
+
+ private static String longPressOnPowerBehaviorToString(int behavior) {
+ switch (behavior) {
+ case LONG_PRESS_POWER_NOTHING:
+ return "LONG_PRESS_POWER_NOTHING";
+ case LONG_PRESS_POWER_GLOBAL_ACTIONS:
+ return "LONG_PRESS_POWER_GLOBAL_ACTIONS";
+ case LONG_PRESS_POWER_SHUT_OFF:
+ return "LONG_PRESS_POWER_SHUT_OFF";
+ case LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM:
+ return "LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM";
+ default:
+ return Integer.toString(behavior);
+ }
+ }
+ private static String multiPressOnPowerBehaviorToString(int behavior) {
+ switch (behavior) {
+ case MULTI_PRESS_POWER_NOTHING:
+ return "MULTI_PRESS_POWER_NOTHING";
+ case MULTI_PRESS_POWER_THEATER_MODE:
+ return "MULTI_PRESS_POWER_THEATER_MODE";
+ case MULTI_PRESS_POWER_BRIGHTNESS_BOOST:
+ return "MULTI_PRESS_POWER_BRIGHTNESS_BOOST";
+ default:
+ return Integer.toString(behavior);
+ }
+ }
+
+ private static String shortPressOnSleepBehaviorToString(int behavior) {
+ switch (behavior) {
+ case SHORT_PRESS_SLEEP_GO_TO_SLEEP:
+ return "SHORT_PRESS_SLEEP_GO_TO_SLEEP";
+ case SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME:
+ return "SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME";
+ default:
+ return Integer.toString(behavior);
+ }
+ }
+
+ private static String shortPressOnWindowBehaviorToString(int behavior) {
+ switch (behavior) {
+ case SHORT_PRESS_WINDOW_NOTHING:
+ return "SHORT_PRESS_WINDOW_NOTHING";
+ case SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE:
+ return "SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE";
+ default:
+ return Integer.toString(behavior);
+ }
}
}
diff --git a/services/core/java/com/android/server/policy/StatusBarController.java b/services/core/java/com/android/server/policy/StatusBarController.java
index 7d67b60a9e9f..ecc88b50a37c 100644
--- a/services/core/java/com/android/server/policy/StatusBarController.java
+++ b/services/core/java/com/android/server/policy/StatusBarController.java
@@ -112,6 +112,14 @@ public class StatusBarController extends BarController {
View.STATUS_BAR_TRANSPARENT);
}
+
+ public void setTopAppHidesStatusBar(boolean hidesStatusBar) {
+ StatusBarManagerInternal statusbar = getStatusBarInternal();
+ if (statusbar != null) {
+ statusbar.setTopAppHidesStatusBar(hidesStatusBar);
+ }
+ }
+
@Override
protected boolean skipAnimation() {
return mWin.getAttrs().height == MATCH_PARENT;
diff --git a/services/core/java/com/android/server/policy/WindowOrientationListener.java b/services/core/java/com/android/server/policy/WindowOrientationListener.java
index 64f64c0d45d6..169fd278f665 100644
--- a/services/core/java/com/android/server/policy/WindowOrientationListener.java
+++ b/services/core/java/com/android/server/policy/WindowOrientationListener.java
@@ -26,6 +26,7 @@ import android.os.SystemClock;
import android.os.SystemProperties;
import android.text.TextUtils;
import android.util.Slog;
+import android.view.Surface;
import java.io.PrintWriter;
import java.util.Arrays;
@@ -236,7 +237,7 @@ public abstract class WindowOrientationListener {
pw.println(prefix + TAG);
prefix += " ";
pw.println(prefix + "mEnabled=" + mEnabled);
- pw.println(prefix + "mCurrentRotation=" + mCurrentRotation);
+ pw.println(prefix + "mCurrentRotation=" + Surface.rotationToString(mCurrentRotation));
pw.println(prefix + "mSensorType=" + mSensorType);
pw.println(prefix + "mSensor=" + mSensor);
pw.println(prefix + "mRate=" + mRate);
@@ -1026,8 +1027,9 @@ public abstract class WindowOrientationListener {
public void dumpLocked(PrintWriter pw, String prefix) {
pw.println(prefix + "OrientationSensorJudge");
prefix += " ";
- pw.println(prefix + "mDesiredRotation=" + mDesiredRotation);
- pw.println(prefix + "mProposedRotation=" + mProposedRotation);
+ pw.println(prefix + "mDesiredRotation=" + Surface.rotationToString(mDesiredRotation));
+ pw.println(prefix + "mProposedRotation="
+ + Surface.rotationToString(mProposedRotation));
pw.println(prefix + "mTouching=" + mTouching);
pw.println(prefix + "mTouchEndedTimestampNanos=" + mTouchEndedTimestampNanos);
}
diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
index 50e5e7bd2312..70cd54ffd09d 100644
--- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
+++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java
@@ -1,5 +1,7 @@
package com.android.server.policy.keyguard;
+import static android.view.Display.INVALID_DISPLAY;
+
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
@@ -13,6 +15,7 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Log;
import android.util.Slog;
+import android.view.WindowManagerPolicy;
import android.view.WindowManagerPolicy.OnKeyguardExitResult;
import com.android.internal.policy.IKeyguardDismissCallback;
@@ -201,7 +204,10 @@ public class KeyguardServiceDelegate {
mKeyguardState.reset();
mHandler.post(() -> {
try {
- ActivityManager.getService().setLockScreenShown(true);
+ // There are no longer any keyguard windows on secondary displays, so pass
+ // INVALID_DISPLAY. All that means is that showWhenLocked activities on
+ // secondary displays now get to show.
+ ActivityManager.getService().setLockScreenShown(true, INVALID_DISPLAY);
} catch (RemoteException e) {
// Local call.
}
@@ -412,13 +418,45 @@ public class KeyguardServiceDelegate {
pw.println(prefix + "systemIsReady=" + mKeyguardState.systemIsReady);
pw.println(prefix + "deviceHasKeyguard=" + mKeyguardState.deviceHasKeyguard);
pw.println(prefix + "enabled=" + mKeyguardState.enabled);
- pw.println(prefix + "offReason=" + mKeyguardState.offReason);
+ pw.println(prefix + "offReason=" +
+ WindowManagerPolicy.offReasonToString(mKeyguardState.offReason));
pw.println(prefix + "currentUser=" + mKeyguardState.currentUser);
pw.println(prefix + "bootCompleted=" + mKeyguardState.bootCompleted);
- pw.println(prefix + "screenState=" + mKeyguardState.screenState);
- pw.println(prefix + "interactiveState=" + mKeyguardState.interactiveState);
+ pw.println(prefix + "screenState=" + screenStateToString(mKeyguardState.screenState));
+ pw.println(prefix + "interactiveState=" +
+ interactiveStateToString(mKeyguardState.interactiveState));
if (mKeyguardService != null) {
mKeyguardService.dump(prefix, pw);
}
}
+
+ private static String screenStateToString(int screen) {
+ switch (screen) {
+ case SCREEN_STATE_OFF:
+ return "SCREEN_STATE_OFF";
+ case SCREEN_STATE_TURNING_ON:
+ return "SCREEN_STATE_TURNING_ON";
+ case SCREEN_STATE_ON:
+ return "SCREEN_STATE_ON";
+ case SCREEN_STATE_TURNING_OFF:
+ return "SCREEN_STATE_TURNING_OFF";
+ default:
+ return Integer.toString(screen);
+ }
+ }
+
+ private static String interactiveStateToString(int interactive) {
+ switch (interactive) {
+ case INTERACTIVE_STATE_SLEEP:
+ return "INTERACTIVE_STATE_SLEEP";
+ case INTERACTIVE_STATE_WAKING:
+ return "INTERACTIVE_STATE_WAKING";
+ case INTERACTIVE_STATE_AWAKE:
+ return "INTERACTIVE_STATE_AWAKE";
+ case INTERACTIVE_STATE_GOING_TO_SLEEP:
+ return "INTERACTIVE_STATE_GOING_TO_SLEEP";
+ default:
+ return Integer.toString(interactive);
+ }
+ }
}
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 3b701302aae1..338ad2a951c9 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -1569,12 +1569,15 @@ public final class PowerManagerService extends SystemService
return true;
}
- private void setWakefulnessLocked(int wakefulness, int reason) {
+ @VisibleForTesting
+ void setWakefulnessLocked(int wakefulness, int reason) {
if (mWakefulness != wakefulness) {
mWakefulness = wakefulness;
mWakefulnessChanging = true;
mDirty |= DIRTY_WAKEFULNESS;
- mNotifier.onWakefulnessChangeStarted(wakefulness, reason);
+ if (mNotifier != null) {
+ mNotifier.onWakefulnessChangeStarted(wakefulness, reason);
+ }
}
}
@@ -2432,11 +2435,8 @@ public final class PowerManagerService extends SystemService
return value >= -1.0f && value <= 1.0f;
}
- private int getDesiredScreenPolicyLocked() {
- if (mIsVrModeEnabled) {
- return DisplayPowerRequest.POLICY_VR;
- }
-
+ @VisibleForTesting
+ int getDesiredScreenPolicyLocked() {
if (mWakefulness == WAKEFULNESS_ASLEEP || sQuiescent) {
return DisplayPowerRequest.POLICY_OFF;
}
@@ -2452,6 +2452,13 @@ public final class PowerManagerService extends SystemService
// doze after screen off. This causes the screen off transition to be skipped.
}
+ // It is important that POLICY_VR check happens after the wakefulness checks above so
+ // that VR-mode does not prevent displays from transitioning to the correct state when
+ // dozing or sleeping.
+ if (mIsVrModeEnabled) {
+ return DisplayPowerRequest.POLICY_VR;
+ }
+
if ((mWakeLockSummary & WAKE_LOCK_SCREEN_BRIGHT) != 0
|| (mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
|| !mBootCompleted
@@ -3113,6 +3120,11 @@ public final class PowerManagerService extends SystemService
}
}
+ @VisibleForTesting
+ void setVrModeEnabled(boolean enabled) {
+ mIsVrModeEnabled = enabled;
+ }
+
private void powerHintInternal(int hintId, int data) {
nativeSendPowerHint(hintId, data);
}
@@ -3810,7 +3822,7 @@ public final class PowerManagerService extends SystemService
synchronized (mLock) {
if (mIsVrModeEnabled != enabled) {
- mIsVrModeEnabled = enabled;
+ setVrModeEnabled(enabled);
mDirty |= DIRTY_VR_MODE_CHANGED;
updatePowerStateLocked();
}
diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java
index 63900e0eb067..853e1b269c92 100644
--- a/services/core/java/com/android/server/power/ShutdownThread.java
+++ b/services/core/java/com/android/server/power/ShutdownThread.java
@@ -51,6 +51,7 @@ import android.os.UserManager;
import android.os.Vibrator;
import android.os.storage.IStorageManager;
import android.os.storage.IStorageShutdownObserver;
+import android.util.ArrayMap;
import android.util.Log;
import android.util.TimingsTraceLog;
import android.view.WindowManager;
@@ -62,7 +63,9 @@ import com.android.server.pm.PackageManagerService;
import com.android.server.statusbar.StatusBarManagerInternal;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
public final class ShutdownThread extends Thread {
// constants
@@ -107,8 +110,22 @@ public final class ShutdownThread extends Thread {
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.build();
- private static final TimingsTraceLog SHUTDOWN_TIMINGS_LOG = new TimingsTraceLog(
- "ShutdownTiming", Trace.TRACE_TAG_SYSTEM_SERVER);
+ // Metrics that will be reported to tron after reboot
+ private static final ArrayMap<String, Long> TRON_METRICS = new ArrayMap<>();
+
+ // File to use for save metrics
+ private static final String METRICS_FILE_BASENAME = "/data/system/shutdown-metrics";
+
+ // Metrics names to be persisted in shutdown-metrics file
+ private static String METRIC_SYSTEM_SERVER = "shutdown_system_server";
+ private static String METRIC_SEND_BROADCAST = "shutdown_send_shutdown_broadcast";
+ private static String METRIC_AM = "shutdown_activity_manager";
+ private static String METRIC_PM = "shutdown_package_manager";
+ private static String METRIC_RADIOS = "shutdown_radios";
+ private static String METRIC_BT = "shutdown_bt";
+ private static String METRIC_RADIO = "shutdown_radio";
+ private static String METRIC_NFC = "shutdown_nfc";
+ private static String METRIC_SM = "shutdown_storage_manager";
private final Object mActionDoneSync = new Object();
private boolean mActionDone;
@@ -348,7 +365,6 @@ public final class ShutdownThread extends Thread {
}
private static void beginShutdownSequence(Context context) {
- SHUTDOWN_TIMINGS_LOG.traceBegin("SystemServerShutdown");
synchronized (sIsStartedGuard) {
if (sIsStarted) {
Log.d(TAG, "Shutdown sequence already running, returning.");
@@ -405,6 +421,10 @@ public final class ShutdownThread extends Thread {
* Shuts off power regardless of radio and bluetooth state if the alloted time has passed.
*/
public void run() {
+ TimingsTraceLog shutdownTimingLog = newTimingsLog();
+ shutdownTimingLog.traceBegin("SystemServerShutdown");
+ metricStarted(METRIC_SYSTEM_SERVER);
+
BroadcastReceiver br = new BroadcastReceiver() {
@Override public void onReceive(Context context, Intent intent) {
// We don't allow apps to cancel this, so ignore the result.
@@ -430,7 +450,8 @@ public final class ShutdownThread extends Thread {
SystemProperties.set(REBOOT_SAFEMODE_PROPERTY, "1");
}
- SHUTDOWN_TIMINGS_LOG.traceBegin("SendShutdownBroadcast");
+ metricStarted(METRIC_SEND_BROADCAST);
+ shutdownTimingLog.traceBegin("SendShutdownBroadcast");
Log.i(TAG, "Sending shutdown broadcast...");
// First send the high-level shut down broadcast.
@@ -462,10 +483,12 @@ public final class ShutdownThread extends Thread {
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(BROADCAST_STOP_PERCENT, null);
}
- SHUTDOWN_TIMINGS_LOG.traceEnd(); // SendShutdownBroadcast
+ shutdownTimingLog.traceEnd(); // SendShutdownBroadcast
+ metricEnded(METRIC_SEND_BROADCAST);
Log.i(TAG, "Shutting down activity manager...");
- SHUTDOWN_TIMINGS_LOG.traceBegin("ShutdownActivityManager");
+ shutdownTimingLog.traceBegin("ShutdownActivityManager");
+ metricStarted(METRIC_AM);
final IActivityManager am =
IActivityManager.Stub.asInterface(ServiceManager.checkService("activity"));
@@ -478,10 +501,12 @@ public final class ShutdownThread extends Thread {
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(ACTIVITY_MANAGER_STOP_PERCENT, null);
}
- SHUTDOWN_TIMINGS_LOG.traceEnd(); // ShutdownActivityManager
+ shutdownTimingLog.traceEnd();// ShutdownActivityManager
+ metricEnded(METRIC_AM);
Log.i(TAG, "Shutting down package manager...");
- SHUTDOWN_TIMINGS_LOG.traceBegin("ShutdownPackageManager");
+ shutdownTimingLog.traceBegin("ShutdownPackageManager");
+ metricStarted(METRIC_PM);
final PackageManagerService pm = (PackageManagerService)
ServiceManager.getService("package");
@@ -491,15 +516,18 @@ public final class ShutdownThread extends Thread {
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(PACKAGE_MANAGER_STOP_PERCENT, null);
}
- SHUTDOWN_TIMINGS_LOG.traceEnd(); // ShutdownPackageManager
+ shutdownTimingLog.traceEnd(); // ShutdownPackageManager
+ metricEnded(METRIC_PM);
// Shutdown radios.
- SHUTDOWN_TIMINGS_LOG.traceBegin("ShutdownRadios");
+ shutdownTimingLog.traceBegin("ShutdownRadios");
+ metricStarted(METRIC_RADIOS);
shutdownRadios(MAX_RADIO_WAIT_TIME);
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(RADIO_STOP_PERCENT, null);
}
- SHUTDOWN_TIMINGS_LOG.traceEnd(); // ShutdownRadios
+ shutdownTimingLog.traceEnd(); // ShutdownRadios
+ metricEnded(METRIC_RADIOS);
// Shutdown StorageManagerService to ensure media is in a safe state
IStorageShutdownObserver observer = new IStorageShutdownObserver.Stub() {
@@ -510,7 +538,8 @@ public final class ShutdownThread extends Thread {
};
Log.i(TAG, "Shutting down StorageManagerService");
- SHUTDOWN_TIMINGS_LOG.traceBegin("ShutdownStorageManager");
+ shutdownTimingLog.traceBegin("ShutdownStorageManager");
+ metricStarted(METRIC_SM);
// Set initial variables and time out time.
mActionDone = false;
@@ -545,7 +574,8 @@ public final class ShutdownThread extends Thread {
}
}
}
- SHUTDOWN_TIMINGS_LOG.traceEnd(); // ShutdownStorageManager
+ shutdownTimingLog.traceEnd(); // ShutdownStorageManager
+ metricEnded(METRIC_SM);
if (mRebootHasProgressBar) {
sInstance.setRebootProgress(MOUNT_SERVICE_STOP_PERCENT, null);
@@ -555,9 +585,29 @@ public final class ShutdownThread extends Thread {
uncrypt();
}
+ shutdownTimingLog.traceEnd(); // SystemServerShutdown
+ metricEnded(METRIC_SYSTEM_SERVER);
+ saveMetrics(mReboot);
rebootOrShutdown(mContext, mReboot, mReason);
}
+ private static TimingsTraceLog newTimingsLog() {
+ return new TimingsTraceLog("ShutdownTiming", Trace.TRACE_TAG_SYSTEM_SERVER);
+ }
+
+ private static void metricStarted(String metricKey) {
+ synchronized (TRON_METRICS) {
+ TRON_METRICS.put(metricKey, -1 * SystemClock.elapsedRealtime());
+ }
+ }
+
+ private static void metricEnded(String metricKey) {
+ synchronized (TRON_METRICS) {
+ TRON_METRICS
+ .put(metricKey, SystemClock.elapsedRealtime() + TRON_METRICS.get(metricKey));
+ }
+ }
+
private void setRebootProgress(final int progress, final CharSequence message) {
mHandler.post(new Runnable() {
@Override
@@ -579,6 +629,7 @@ public final class ShutdownThread extends Thread {
final boolean[] done = new boolean[1];
Thread t = new Thread() {
public void run() {
+ TimingsTraceLog shutdownTimingsTraceLog = newTimingsLog();
boolean nfcOff;
boolean bluetoothReadyForShutdown;
boolean radioOff;
@@ -590,12 +641,12 @@ public final class ShutdownThread extends Thread {
final IBluetoothManager bluetooth =
IBluetoothManager.Stub.asInterface(ServiceManager.checkService(
BluetoothAdapter.BLUETOOTH_MANAGER_SERVICE));
- final long nfcShutdownStarted = SystemClock.elapsedRealtime();
try {
nfcOff = nfc == null ||
nfc.getState() == NfcAdapter.STATE_OFF;
if (!nfcOff) {
Log.w(TAG, "Turning off NFC...");
+ metricStarted(METRIC_NFC);
nfc.disable(false); // Don't persist new state
}
} catch (RemoteException ex) {
@@ -603,12 +654,12 @@ public final class ShutdownThread extends Thread {
nfcOff = true;
}
- final long btShutdownStarted = SystemClock.elapsedRealtime();
try {
bluetoothReadyForShutdown = bluetooth == null ||
bluetooth.getState() == BluetoothAdapter.STATE_OFF;
if (!bluetoothReadyForShutdown) {
Log.w(TAG, "Disabling Bluetooth...");
+ metricStarted(METRIC_BT);
bluetooth.disable(mContext.getPackageName(), false); // disable but don't persist new state
}
} catch (RemoteException ex) {
@@ -616,11 +667,11 @@ public final class ShutdownThread extends Thread {
bluetoothReadyForShutdown = true;
}
- final long radioShutdownStarted = SystemClock.elapsedRealtime();
try {
radioOff = phone == null || !phone.needMobileRadioShutdown();
if (!radioOff) {
Log.w(TAG, "Turning off cellular radios...");
+ metricStarted(METRIC_RADIO);
phone.shutdownMobileRadios();
}
} catch (RemoteException ex) {
@@ -653,8 +704,9 @@ public final class ShutdownThread extends Thread {
}
if (bluetoothReadyForShutdown) {
Log.i(TAG, "Bluetooth turned off.");
- SHUTDOWN_TIMINGS_LOG.logDuration("ShutdownBt",
- SystemClock.elapsedRealtime() - btShutdownStarted);
+ metricEnded(METRIC_BT);
+ shutdownTimingsTraceLog
+ .logDuration("ShutdownBt", TRON_METRICS.get(METRIC_BT));
}
}
if (!radioOff) {
@@ -666,8 +718,9 @@ public final class ShutdownThread extends Thread {
}
if (radioOff) {
Log.i(TAG, "Radio turned off.");
- SHUTDOWN_TIMINGS_LOG.logDuration("ShutdownRadio",
- SystemClock.elapsedRealtime() - radioShutdownStarted);
+ metricEnded(METRIC_RADIO);
+ shutdownTimingsTraceLog
+ .logDuration("ShutdownRadio", TRON_METRICS.get(METRIC_RADIO));
}
}
if (!nfcOff) {
@@ -679,8 +732,9 @@ public final class ShutdownThread extends Thread {
}
if (nfcOff) {
Log.i(TAG, "NFC turned off.");
- SHUTDOWN_TIMINGS_LOG.logDuration("ShutdownNfc",
- SystemClock.elapsedRealtime() - nfcShutdownStarted);
+ metricEnded(METRIC_NFC);
+ shutdownTimingsTraceLog
+ .logDuration("ShutdownNfc", TRON_METRICS.get(METRIC_NFC));
}
}
@@ -708,14 +762,13 @@ public final class ShutdownThread extends Thread {
/**
* Do not call this directly. Use {@link #reboot(Context, String, boolean)}
- * or {@link #shutdown(Context, boolean)} instead.
+ * or {@link #shutdown(Context, String, boolean)} instead.
*
* @param context Context used to vibrate or null without vibration
* @param reboot true to reboot or false to shutdown
* @param reason reason for reboot/shutdown
*/
public static void rebootOrShutdown(final Context context, boolean reboot, String reason) {
- SHUTDOWN_TIMINGS_LOG.traceEnd(); // SystemServerShutdown
if (reboot) {
Log.i(TAG, "Rebooting, reason: " + reason);
PowerManagerService.lowLevelReboot(reason);
@@ -742,6 +795,33 @@ public final class ShutdownThread extends Thread {
PowerManagerService.lowLevelShutdown(reason);
}
+ private static void saveMetrics(boolean reboot) {
+ StringBuilder metricValue = new StringBuilder();
+ metricValue.append("reboot:");
+ metricValue.append(reboot ? "y" : "n");
+ final int metricsSize = TRON_METRICS.size();
+ for (int i = 0; i < metricsSize; i++) {
+ final String name = TRON_METRICS.keyAt(i);
+ final long value = TRON_METRICS.valueAt(i);
+ if (value < 0) {
+ Log.e(TAG, "metricEnded wasn't called for " + name);
+ continue;
+ }
+ metricValue.append(',').append(name).append(':').append(value);
+ }
+ File tmp = new File(METRICS_FILE_BASENAME + ".tmp");
+ boolean saved = false;
+ try (FileOutputStream fos = new FileOutputStream(tmp)) {
+ fos.write(metricValue.toString().getBytes(StandardCharsets.UTF_8));
+ saved = true;
+ } catch (IOException e) {
+ Log.e(TAG,"Cannot save shutdown metrics", e);
+ }
+ if (saved) {
+ tmp.renameTo(new File(METRICS_FILE_BASENAME + ".txt"));
+ }
+ }
+
private void uncrypt() {
Log.i(TAG, "Calling uncrypt and monitoring the progress...");
diff --git a/services/core/java/com/android/server/search/SearchManagerService.java b/services/core/java/com/android/server/search/SearchManagerService.java
index 896977141702..c3fa82344941 100644
--- a/services/core/java/com/android/server/search/SearchManagerService.java
+++ b/services/core/java/com/android/server/search/SearchManagerService.java
@@ -17,7 +17,6 @@
package com.android.server.search;
import android.app.ActivityManager;
-import android.app.AppGlobals;
import android.app.IActivityManager;
import android.app.ISearchManager;
import android.app.SearchManager;
@@ -26,7 +25,6 @@ import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.database.ContentObserver;
@@ -37,6 +35,7 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
+import android.service.voice.VoiceInteractionService;
import android.util.Log;
import android.util.SparseArray;
@@ -272,24 +271,25 @@ public class SearchManagerService extends ISearchManager.Stub {
}
}
+ // Check and return VIS component
private ComponentName getLegacyAssistComponent(int userHandle) {
try {
userHandle = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
- Binder.getCallingUid(), userHandle, true, false, "getLegacyAssistComponent", null);
- IPackageManager pm = AppGlobals.getPackageManager();
- Intent assistIntent = new Intent(Intent.ACTION_ASSIST);
- ResolveInfo info =
- pm.resolveIntent(assistIntent,
- assistIntent.resolveTypeIfNeeded(mContext.getContentResolver()),
- PackageManager.MATCH_DEFAULT_ONLY, userHandle);
- if (info != null) {
+ Binder.getCallingUid(), userHandle, true, false, "getLegacyAssistComponent",
+ null);
+ PackageManager pm = mContext.getPackageManager();
+ Intent intentAssistProbe = new Intent(VoiceInteractionService.SERVICE_INTERFACE);
+ List<ResolveInfo> infoListVis = pm.queryIntentServicesAsUser(intentAssistProbe,
+ PackageManager.MATCH_SYSTEM_ONLY, userHandle);
+ if (infoListVis == null || infoListVis.isEmpty()) {
+ return null;
+ } else {
+ ResolveInfo rInfo = infoListVis.get(0);
return new ComponentName(
- info.activityInfo.applicationInfo.packageName,
- info.activityInfo.name);
+ rInfo.serviceInfo.applicationInfo.packageName,
+ rInfo.serviceInfo.name);
+
}
- } catch (RemoteException re) {
- // Local call
- Log.e(TAG, "RemoteException in getLegacyAssistComponent: " + re);
} catch (Exception e) {
Log.e(TAG, "Exception in getLegacyAssistComponent: " + e);
}
@@ -304,9 +304,15 @@ public class SearchManagerService extends ISearchManager.Stub {
}
long ident = Binder.clearCallingIdentity();
try {
- Intent intent = new Intent(Intent.ACTION_ASSIST);
+ Intent intent = new Intent(VoiceInteractionService.SERVICE_INTERFACE);
intent.setComponent(comp);
+
IActivityManager am = ActivityManager.getService();
+ if (args != null) {
+ args.putInt(Intent.EXTRA_KEY_EVENT, android.view.KeyEvent.KEYCODE_ASSIST);
+ }
+ intent.putExtras(args);
+
return am.launchAssistIntent(intent, ActivityManager.ASSIST_CONTEXT_BASIC, hint,
userHandle, args);
} catch (RemoteException e) {
diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java
new file mode 100644
index 000000000000..11ae2129c339
--- /dev/null
+++ b/services/core/java/com/android/server/stats/StatsCompanionService.java
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2017 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.stats;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.IStatsCompanionService;
+import android.os.IStatsManager;
+import android.os.Process;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.util.Slog;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.server.SystemService;
+
+/**
+ * Helper service for statsd (the native stats management service in cmds/statsd/).
+ * Used for registering and receiving alarms on behalf of statsd.
+ */
+public class StatsCompanionService extends IStatsCompanionService.Stub {
+ static final String TAG = "StatsCompanionService";
+ static final boolean DEBUG = true;
+
+ private final Context mContext;
+ private final AlarmManager mAlarmManager;
+ @GuardedBy("sStatsdLock")
+ private static IStatsManager sStatsd;
+ private static final Object sStatsdLock = new Object();
+
+ private final PendingIntent mAnomalyAlarmIntent;
+ private final PendingIntent mPollingAlarmIntent;
+
+ public StatsCompanionService(Context context) {
+ super();
+ mContext = context;
+ mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
+
+ mAnomalyAlarmIntent = PendingIntent.getBroadcast(mContext, 0,
+ new Intent(mContext, AnomalyAlarmReceiver.class), 0);
+ mPollingAlarmIntent = PendingIntent.getBroadcast(mContext, 0,
+ new Intent(mContext, PollingAlarmReceiver.class), 0);
+ }
+
+ public final static class AnomalyAlarmReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Slog.i(TAG, "StatsCompanionService believes an anomaly has occurred.");
+ synchronized (sStatsdLock) {
+ if (sStatsd == null) {
+ Slog.w(TAG, "Could not access statsd to inform it of anomaly alarm firing");
+ return;
+ }
+ try {
+ // Two-way call to statsd to retain AlarmManager wakelock
+ sStatsd.informAnomalyAlarmFired();
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Failed to inform statsd of anomaly alarm firing", e);
+ }
+ }
+ // AlarmManager releases its own wakelock here.
+ }
+ };
+
+ public final static class PollingAlarmReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (DEBUG) Slog.d(TAG, "Time to poll something.");
+ synchronized (sStatsdLock) {
+ if (sStatsd == null) {
+ Slog.w(TAG, "Could not access statsd to inform it of polling alarm firing");
+ return;
+ }
+ try {
+ // Two-way call to statsd to retain AlarmManager wakelock
+ sStatsd.informPollAlarmFired();
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Failed to inform statsd of polling alarm firing", e);
+ }
+ }
+ // AlarmManager releases its own wakelock here.
+ }
+ };
+
+ @Override // Binder call
+ public void setAnomalyAlarm(long timestampMs) {
+ enforceCallingPermission();
+ if (DEBUG) Slog.d(TAG, "Setting anomaly alarm for " + timestampMs);
+ final long callingToken = Binder.clearCallingIdentity();
+ try {
+ // using RTC, not RTC_WAKEUP, so if device is asleep, will only fire when it awakens.
+ // This alarm is inexact, leaving its exactness completely up to the OS optimizations.
+ // AlarmManager will automatically cancel any previous mAnomalyAlarmIntent alarm.
+ mAlarmManager.set(AlarmManager.RTC, timestampMs, mAnomalyAlarmIntent);
+ } finally {
+ Binder.restoreCallingIdentity(callingToken);
+ }
+ }
+
+ @Override // Binder call
+ public void cancelAnomalyAlarm() {
+ enforceCallingPermission();
+ if (DEBUG) Slog.d(TAG, "Cancelling anomaly alarm");
+ final long callingToken = Binder.clearCallingIdentity();
+ try {
+ mAlarmManager.cancel(mAnomalyAlarmIntent);
+ } finally {
+ Binder.restoreCallingIdentity(callingToken);
+ }
+ }
+
+ @Override // Binder call
+ public void setPollingAlarms(long timestampMs, long intervalMs) {
+ enforceCallingPermission();
+ if (DEBUG) Slog.d(TAG, "Setting polling alarm for " + timestampMs
+ + " every " + intervalMs + "ms");
+ final long callingToken = Binder.clearCallingIdentity();
+ try {
+ // using RTC, not RTC_WAKEUP, so if device is asleep, will only fire when it awakens.
+ // This alarm is inexact, leaving its exactness completely up to the OS optimizations.
+ // TODO: totally inexact means that stats per bucket could be quite off. Is this okay?
+ mAlarmManager.setRepeating(AlarmManager.RTC, timestampMs, intervalMs,
+ mPollingAlarmIntent);
+ } finally {
+ Binder.restoreCallingIdentity(callingToken);
+ }
+ }
+
+ @Override // Binder call
+ public void cancelPollingAlarms() {
+ enforceCallingPermission();
+ if (DEBUG) Slog.d(TAG, "Cancelling polling alarm");
+ final long callingToken = Binder.clearCallingIdentity();
+ try {
+ mAlarmManager.cancel(mPollingAlarmIntent);
+ } finally {
+ Binder.restoreCallingIdentity(callingToken);
+ }
+ }
+
+ @Override
+ public void statsdReady() {
+ enforceCallingPermission();
+ if (DEBUG) Slog.d(TAG, "learned that statsdReady");
+ sayHiToStatsd(); // tell statsd that we're ready too and link to it
+ }
+
+ private void enforceCallingPermission() {
+ if (Binder.getCallingPid() == Process.myPid()) {
+ return;
+ }
+ mContext.enforceCallingPermission(android.Manifest.permission.STATSCOMPANION, null);
+ }
+
+ // Lifecycle and related code
+
+ /** Fetches the statsd IBinder service */
+ private static IStatsManager fetchStatsdService() {
+ return IStatsManager.Stub.asInterface(ServiceManager.getService("stats"));
+ }
+
+ public static final class Lifecycle extends SystemService {
+ private StatsCompanionService mStatsCompanionService;
+
+ public Lifecycle(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void onStart() {
+ mStatsCompanionService = new StatsCompanionService(getContext());
+ try {
+ publishBinderService(Context.STATS_COMPANION_SERVICE, mStatsCompanionService);
+ if (DEBUG) Slog.d(TAG, "Published " + Context.STATS_COMPANION_SERVICE);
+ } catch (Exception e) {
+ Slog.e(TAG, "Failed to publishBinderService", e);
+ }
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ super.onBootPhase(phase);
+ if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) {
+ mStatsCompanionService.systemReady();
+ }
+ }
+ }
+
+ /** Now that the android system is ready, StatsCompanion is ready too, so inform statsd. */
+ private void systemReady() {
+ if (DEBUG) Slog.d(TAG, "Learned that systemReady");
+ sayHiToStatsd();
+ }
+
+ /** Tells statsd that statscompanion is ready. If the binder call returns, link to statsd. */
+ private void sayHiToStatsd() {
+ synchronized (sStatsdLock) {
+ if (sStatsd != null) {
+ Slog.e(TAG, "Trying to fetch statsd, but it was already fetched",
+ new IllegalStateException("sStatsd is not null when being fetched"));
+ return;
+ }
+ sStatsd = fetchStatsdService();
+ if (sStatsd == null) {
+ Slog.w(TAG, "Could not access statsd");
+ return;
+ }
+ if (DEBUG) Slog.d(TAG, "Saying hi to statsd");
+ try {
+ sStatsd.statsCompanionReady();
+ // If the statsCompanionReady two-way binder call returns, link to statsd.
+ try {
+ sStatsd.asBinder().linkToDeath(new StatsdDeathRecipient(), 0);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "linkToDeath(StatsdDeathRecipient) failed", e);
+ forgetEverything();
+ }
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Failed to inform statsd that statscompanion is ready", e);
+ forgetEverything();
+ }
+ }
+ }
+
+ private class StatsdDeathRecipient implements IBinder.DeathRecipient {
+ @Override
+ public void binderDied() {
+ Slog.i(TAG, "Statsd is dead - erase all my knowledge.");
+ forgetEverything();
+ }
+ }
+
+ private void forgetEverything() {
+ synchronized (sStatsdLock) {
+ sStatsd = null;
+ cancelAnomalyAlarm();
+ cancelPollingAlarms();
+ }
+ }
+
+}
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
index 866fdadc54d7..0884678478f6 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
@@ -80,6 +80,13 @@ public interface StatusBarManagerInternal {
void setGlobalActionsListener(GlobalActionsListener listener);
void showGlobalActions();
+ /**
+ * Set whether the top app currently hides the statusbar.
+ *
+ * @param hidesStatusBar whether it is being hidden
+ */
+ void setTopAppHidesStatusBar(boolean hidesStatusBar);
+
boolean showShutdownUi(boolean isReboot, String requestString);
public interface GlobalActionsListener {
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index d31c2304f460..f10bf1a3ffb5 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -20,7 +20,6 @@ import android.app.ActivityThread;
import android.app.StatusBarManager;
import android.content.ComponentName;
import android.content.Context;
-import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.os.Binder;
import android.os.Bundle;
@@ -98,12 +97,58 @@ public class StatusBarManagerService extends IStatusBarService.Stub {
int what2;
IBinder token;
+ public DisableRecord(int userId, IBinder token) {
+ this.userId = userId;
+ this.token = token;
+ try {
+ token.linkToDeath(this, 0);
+ } catch (RemoteException re) {
+ // Give up
+ }
+ }
+
+ @Override
public void binderDied() {
Slog.i(TAG, "binder died for pkg=" + pkg);
disableForUser(0, token, pkg, userId);
disable2ForUser(0, token, pkg, userId);
token.unlinkToDeath(this, 0);
}
+
+ public void setFlags(int what, int which, String pkg) {
+ switch (which) {
+ case 1:
+ what1 = what;
+ return;
+ case 2:
+ what2 = what;
+ return;
+ default:
+ Slog.w(TAG, "Can't set unsupported disable flag " + which
+ + ": 0x" + Integer.toHexString(what));
+ }
+ this.pkg = pkg;
+ }
+
+ public int getFlags(int which) {
+ switch (which) {
+ case 1: return what1;
+ case 2: return what2;
+ default:
+ Slog.w(TAG, "Can't get unsupported disable flag " + which);
+ return 0;
+ }
+ }
+
+ public boolean isEmpty() {
+ return what1 == 0 && what2 == 0;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("userId=%d what1=0x%08X what2=0x%08X pkg=%s token=%s",
+ userId, what1, what2, pkg, token);
+ }
}
/**
@@ -332,6 +377,15 @@ public class StatusBarManagerService extends IStatusBarService.Stub {
}
@Override
+ public void setTopAppHidesStatusBar(boolean hidesStatusBar) {
+ if (mBar != null) {
+ try {
+ mBar.setTopAppHidesStatusBar(hidesStatusBar);
+ } catch (RemoteException ex) {}
+ }
+ }
+
+ @Override
public boolean showShutdownUi(boolean isReboot, String reason) {
if (!mContext.getResources().getBoolean(R.bool.config_showSysuiShutdown)) {
return false;
@@ -948,6 +1002,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub {
this, in, out, err, args, callback, resultReceiver);
}
+ public String[] getStatusBarIcons() {
+ return mContext.getResources().getStringArray(R.array.config_statusBarIcons);
+ }
+
// ================================================================================
// Can be called from any thread
// ================================================================================
@@ -958,42 +1016,42 @@ public class StatusBarManagerService extends IStatusBarService.Stub {
Slog.d(TAG, "manageDisableList userId=" + userId
+ " what=0x" + Integer.toHexString(what) + " pkg=" + pkg);
}
- // update the list
+
+ // Find matching record, if any
final int N = mDisableRecords.size();
- DisableRecord tok = null;
+ DisableRecord record = null;
int i;
- for (i=0; i<N; i++) {
- DisableRecord t = mDisableRecords.get(i);
- if (t.token == token && t.userId == userId) {
- tok = t;
+ for (i = 0; i < N; i++) {
+ DisableRecord r = mDisableRecords.get(i);
+ if (r.token == token && r.userId == userId) {
+ record = r;
break;
}
}
- if (what == 0 || !token.isBinderAlive()) {
- if (tok != null) {
+
+ // Remove record if binder is already dead
+ if (!token.isBinderAlive()) {
+ if (record != null) {
mDisableRecords.remove(i);
- tok.token.unlinkToDeath(tok, 0);
- }
- } else {
- if (tok == null) {
- tok = new DisableRecord();
- tok.userId = userId;
- try {
- token.linkToDeath(tok, 0);
- }
- catch (RemoteException ex) {
- return; // give up
- }
- mDisableRecords.add(tok);
+ record.token.unlinkToDeath(record, 0);
}
- if (which == 1) {
- tok.what1 = what;
- } else {
- tok.what2 = what;
+ return;
+ }
+
+ // Update existing record
+ if (record != null) {
+ record.setFlags(what, which, pkg);
+ if (record.isEmpty()) {
+ mDisableRecords.remove(i);
+ record.token.unlinkToDeath(record, 0);
}
- tok.token = token;
- tok.pkg = pkg;
+ return;
}
+
+ // Record doesn't exist, so we create a new one
+ record = new DisableRecord(userId, token);
+ record.setFlags(what, which, pkg);
+ mDisableRecords.add(record);
}
// lock on mDisableRecords
@@ -1004,7 +1062,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub {
for (int i=0; i<N; i++) {
final DisableRecord rec = mDisableRecords.get(i);
if (rec.userId == userId) {
- net |= (which == 1) ? rec.what1 : rec.what2;
+ net |= rec.getFlags(which);
}
}
return net;
@@ -1024,11 +1082,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub {
pw.println(" mDisableRecords.size=" + N);
for (int i=0; i<N; i++) {
DisableRecord tok = mDisableRecords.get(i);
- pw.println(" [" + i + "] userId=" + tok.userId
- + " what1=0x" + Integer.toHexString(tok.what1)
- + " what2=0x" + Integer.toHexString(tok.what2)
- + " pkg=" + tok.pkg
- + " token=" + tok.token);
+ pw.println(" [" + i + "] " + tok);
}
pw.println(" mCurrentUserId=" + mCurrentUserId);
pw.println(" mIcons=");
diff --git a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
index 40bb4961a2bf..4e20f0177b35 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
@@ -25,7 +25,7 @@ import java.io.PrintWriter;
public class StatusBarShellCommand extends ShellCommand {
- private final IStatusBarService mInterface;
+ private final StatusBarManagerService mInterface;
public StatusBarShellCommand(StatusBarManagerService service) {
mInterface = service;
@@ -54,6 +54,8 @@ public class StatusBarShellCommand extends ShellCommand {
final PrintWriter pw = getOutPrintWriter();
pw.println(String.valueOf(TileService.isQuickSettingsSupported()));
return 0;
+ case "get-status-icons":
+ return runGetStatusIcons();
default:
return handleDefaultCommands(cmd);
}
@@ -94,6 +96,14 @@ public class StatusBarShellCommand extends ShellCommand {
return 0;
}
+ private int runGetStatusIcons() {
+ final PrintWriter pw = getOutPrintWriter();
+ for (String icon : mInterface.getStatusBarIcons()) {
+ pw.println(icon);
+ }
+ return 0;
+ }
+
@Override
public void onHelp() {
final PrintWriter pw = getOutPrintWriter();
@@ -122,5 +132,8 @@ public class StatusBarShellCommand extends ShellCommand {
pw.println(" check-support");
pw.println(" Check if this device supports QS + APIs");
pw.println("");
+ pw.println(" get-status-icons");
+ pw.println(" Print the list of status bar icons and the order they appear in");
+ pw.println("");
}
}
diff --git a/services/core/java/com/android/server/timezone/IntentHelper.java b/services/core/java/com/android/server/timezone/IntentHelper.java
index 0cb90657480e..5de543213009 100644
--- a/services/core/java/com/android/server/timezone/IntentHelper.java
+++ b/services/core/java/com/android/server/timezone/IntentHelper.java
@@ -23,15 +23,22 @@ package com.android.server.timezone;
*/
interface IntentHelper {
- void initialize(String updateAppPackageName, String dataAppPackageName, Listener listener);
+ void initialize(String updateAppPackageName, String dataAppPackageName,
+ PackageTracker packageTracker);
void sendTriggerUpdateCheck(CheckToken checkToken);
- void enableReliabilityTriggering();
+ /**
+ * Schedule a "reliability trigger" after at least minimumDelayMillis, replacing any existing
+ * scheduled one. A reliability trigger ensures that the {@link PackageTracker} can pick up
+ * reliably if a previous update check did not complete for some reason. It can happen when
+ * the device is idle. The trigger is expected to call
+ * {@link PackageTracker#triggerUpdateIfNeeded(boolean)} with a {@code false} value.
+ */
+ void scheduleReliabilityTrigger(long minimumDelayMillis);
- void disableReliabilityTriggering();
-
- interface Listener {
- void triggerUpdateIfNeeded(boolean packageUpdated);
- }
+ /**
+ * Make sure there is no reliability trigger scheduled. No-op if there wasn't one.
+ */
+ void unscheduleReliabilityTrigger();
}
diff --git a/services/core/java/com/android/server/timezone/IntentHelperImpl.java b/services/core/java/com/android/server/timezone/IntentHelperImpl.java
index 11928b964ec5..bc0f6e4b283b 100644
--- a/services/core/java/com/android/server/timezone/IntentHelperImpl.java
+++ b/services/core/java/com/android/server/timezone/IntentHelperImpl.java
@@ -36,16 +36,13 @@ final class IntentHelperImpl implements IntentHelper {
private final Context mContext;
private String mUpdaterAppPackageName;
- private boolean mReliabilityReceiverEnabled;
- private Receiver mReliabilityReceiver;
-
IntentHelperImpl(Context context) {
mContext = context;
}
@Override
- public void initialize(
- String updaterAppPackageName, String dataAppPackageName, Listener listener) {
+ public void initialize(String updaterAppPackageName, String dataAppPackageName,
+ PackageTracker packageTracker) {
mUpdaterAppPackageName = updaterAppPackageName;
// Register for events of interest.
@@ -53,21 +50,33 @@ final class IntentHelperImpl implements IntentHelper {
// The intent filter that triggers when package update events happen that indicate there may
// be work to do.
IntentFilter packageIntentFilter = new IntentFilter();
- // Either of these mean a downgrade?
- packageIntentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
- packageIntentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
+
packageIntentFilter.addDataScheme("package");
packageIntentFilter.addDataSchemeSpecificPart(
updaterAppPackageName, PatternMatcher.PATTERN_LITERAL);
packageIntentFilter.addDataSchemeSpecificPart(
dataAppPackageName, PatternMatcher.PATTERN_LITERAL);
- Receiver packageUpdateReceiver = new Receiver(listener, true /* packageUpdated */);
- mContext.registerReceiver(packageUpdateReceiver, packageIntentFilter);
- // TODO(nfuller): Add more exotic intents as needed. e.g.
- // packageIntentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
- // Also, disabled...?
- mReliabilityReceiver = new Receiver(listener, false /* packageUpdated */);
+ // ACTION_PACKAGE_ADDED is fired when a package is upgraded or downgraded (in addition to
+ // ACTION_PACKAGE_REMOVED and ACTION_PACKAGE_REPLACED). A system/priv-app can never be
+ // removed entirely so we do not need to trigger on ACTION_PACKAGE_REMOVED or
+ // ACTION_PACKAGE_FULLY_REMOVED.
+ packageIntentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
+
+ // ACTION_PACKAGE_CHANGED is used when a package is disabled / re-enabled. It is not
+ // strictly necessary to trigger on this but it won't hurt anything and may catch some cases
+ // where a package has changed while disabled.
+ // Note: ACTION_PACKAGE_CHANGED is not fired when updating a suspended app, but
+ // ACTION_PACKAGE_ADDED, ACTION_PACKAGE_REMOVED and ACTION_PACKAGE_REPLACED are (and the app
+ // is left in an unsuspended state after this).
+ packageIntentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+
+ // We do not register for ACTION_PACKAGE_RESTARTED because it doesn't imply an update.
+ // We do not register for ACTION_PACKAGE_DATA_CLEARED because the updater / data apps are
+ // not expected to need local data.
+
+ Receiver packageUpdateReceiver = new Receiver(packageTracker);
+ mContext.registerReceiver(packageUpdateReceiver, packageIntentFilter);
}
/** Sends an intent to trigger an update check. */
@@ -79,39 +88,26 @@ final class IntentHelperImpl implements IntentHelper {
}
@Override
- public synchronized void enableReliabilityTriggering() {
- if (!mReliabilityReceiverEnabled) {
- // The intent filter that exists to make updates reliable in the event of failures /
- // reboots.
- IntentFilter reliabilityIntentFilter = new IntentFilter();
- reliabilityIntentFilter.addAction(Intent.ACTION_IDLE_MAINTENANCE_START);
- mContext.registerReceiver(mReliabilityReceiver, reliabilityIntentFilter);
- mReliabilityReceiverEnabled = true;
- }
+ public synchronized void scheduleReliabilityTrigger(long minimumDelayMillis) {
+ TimeZoneUpdateIdler.schedule(mContext, minimumDelayMillis);
}
@Override
- public synchronized void disableReliabilityTriggering() {
- if (mReliabilityReceiverEnabled) {
- mContext.unregisterReceiver(mReliabilityReceiver);
- mReliabilityReceiverEnabled = false;
- }
+ public synchronized void unscheduleReliabilityTrigger() {
+ TimeZoneUpdateIdler.unschedule(mContext);
}
private static class Receiver extends BroadcastReceiver {
- private final Listener mListener;
- private final boolean mPackageUpdated;
+ private final PackageTracker mPackageTracker;
- private Receiver(Listener listener, boolean packageUpdated) {
- mListener = listener;
- mPackageUpdated = packageUpdated;
+ private Receiver(PackageTracker packageTracker) {
+ mPackageTracker = packageTracker;
}
@Override
public void onReceive(Context context, Intent intent) {
Slog.d(TAG, "Received intent: " + intent.toString());
- mListener.triggerUpdateIfNeeded(mPackageUpdated);
+ mPackageTracker.triggerUpdateIfNeeded(true /* packageChanged */);
}
}
-
}
diff --git a/services/core/java/com/android/server/timezone/PackageTracker.java b/services/core/java/com/android/server/timezone/PackageTracker.java
index 24e0fe4841bc..f0306b9b0c38 100644
--- a/services/core/java/com/android/server/timezone/PackageTracker.java
+++ b/services/core/java/com/android/server/timezone/PackageTracker.java
@@ -51,7 +51,7 @@ import java.io.PrintWriter;
*/
// Also made non-final so it can be mocked.
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
-public class PackageTracker implements IntentHelper.Listener {
+public class PackageTracker {
private static final String TAG = "timezone.PackageTracker";
private final PackageManagerHelper mPackageManagerHelper;
@@ -72,6 +72,13 @@ public class PackageTracker implements IntentHelper.Listener {
// The number of failed checks in a row before reliability checks should stop happening.
private long mFailedCheckRetryCount;
+ /*
+ * The minimum delay between a successive reliability triggers / other operations. Should to be
+ * larger than mCheckTimeAllowedMillis to avoid reliability triggers happening during package
+ * update checks.
+ */
+ private int mDelayBeforeReliabilityCheckMillis;
+
// Reliability check state: If a check was triggered but not acknowledged within
// mCheckTimeAllowedMillis then another one can be triggered.
private Long mLastTriggerTimestamp = null;
@@ -122,6 +129,7 @@ public class PackageTracker implements IntentHelper.Listener {
mDataAppPackageName = mConfigHelper.getDataAppPackageName();
mCheckTimeAllowedMillis = mConfigHelper.getCheckTimeAllowedMillis();
mFailedCheckRetryCount = mConfigHelper.getFailedCheckRetryCount();
+ mDelayBeforeReliabilityCheckMillis = mCheckTimeAllowedMillis + (60 * 1000);
// Validate the device configuration including the application packages.
// The manifest entries in the apps themselves are not validated until use as they can
@@ -135,9 +143,10 @@ public class PackageTracker implements IntentHelper.Listener {
// Initialize the intent helper.
mIntentHelper.initialize(mUpdateAppPackageName, mDataAppPackageName, this);
- // Enable the reliability triggering so we will have at least one reliability trigger if
- // a package isn't updated.
- mIntentHelper.enableReliabilityTriggering();
+ // Schedule a reliability trigger so we will have at least one after boot. This will allow
+ // us to catch if a package updated wasn't handled to completion. There's no hurry: it's ok
+ // to delay for a while before doing this even if idle.
+ mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis);
Slog.i(TAG, "Time zone updater / data package tracking enabled");
}
@@ -195,7 +204,6 @@ public class PackageTracker implements IntentHelper.Listener {
* @param packageChanged true if this method was called because a known packaged definitely
* changed, false if the cause is a reliability trigger
*/
- @Override
public synchronized void triggerUpdateIfNeeded(boolean packageChanged) {
if (!mTrackingEnabled) {
throw new IllegalStateException("Unexpected call. Tracking is disabled.");
@@ -212,8 +220,8 @@ public class PackageTracker implements IntentHelper.Listener {
+ " updaterApp=" + updaterAppManifestValid
+ ", dataApp=" + dataAppManifestValid);
- // There's no point in doing reliability checks if the current packages are bad.
- mIntentHelper.disableReliabilityTriggering();
+ // There's no point in doing any reliability triggers if the current packages are bad.
+ mIntentHelper.unscheduleReliabilityTrigger();
return;
}
@@ -238,7 +246,8 @@ public class PackageTracker implements IntentHelper.Listener {
Slog.d(TAG,
"triggerUpdateIfNeeded: checkComplete call is not yet overdue."
+ " Not triggering.");
- // Not doing any work, but also not disabling future reliability triggers.
+ // Don't do any work now but we do schedule a future reliability trigger.
+ mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis);
return;
}
} else if (mCheckFailureCount > mFailedCheckRetryCount) {
@@ -247,13 +256,13 @@ public class PackageTracker implements IntentHelper.Listener {
Slog.i(TAG, "triggerUpdateIfNeeded: number of allowed consecutive check failures"
+ " exceeded. Stopping reliability triggers until next reboot or package"
+ " update.");
- mIntentHelper.disableReliabilityTriggering();
+ mIntentHelper.unscheduleReliabilityTrigger();
return;
} else if (mCheckFailureCount == 0) {
// Case 4.
Slog.i(TAG, "triggerUpdateIfNeeded: No reliability check required. Last check was"
+ " successful.");
- mIntentHelper.disableReliabilityTriggering();
+ mIntentHelper.unscheduleReliabilityTrigger();
return;
}
}
@@ -263,7 +272,7 @@ public class PackageTracker implements IntentHelper.Listener {
if (currentInstalledVersions == null) {
// This should not happen if the device is configured in a valid way.
Slog.e(TAG, "triggerUpdateIfNeeded: currentInstalledVersions was null");
- mIntentHelper.disableReliabilityTriggering();
+ mIntentHelper.unscheduleReliabilityTrigger();
return;
}
@@ -288,7 +297,7 @@ public class PackageTracker implements IntentHelper.Listener {
// The last check succeeded and nothing has changed. Do nothing and disable
// reliability checks.
Slog.i(TAG, "triggerUpdateIfNeeded: Prior check succeeded. No need to trigger.");
- mIntentHelper.disableReliabilityTriggering();
+ mIntentHelper.unscheduleReliabilityTrigger();
return;
}
}
@@ -299,6 +308,8 @@ public class PackageTracker implements IntentHelper.Listener {
if (checkToken == null) {
Slog.w(TAG, "triggerUpdateIfNeeded: Unable to generate check token."
+ " Not sending check request.");
+ // Trigger again later: perhaps we'll have better luck.
+ mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis);
return;
}
@@ -309,9 +320,9 @@ public class PackageTracker implements IntentHelper.Listener {
// Update the reliability check state in case the update fails.
setCheckInProgress();
- // Enable reliability triggering in case the check doesn't succeed and there is no
- // response at all. Enabling reliability triggering is idempotent.
- mIntentHelper.enableReliabilityTriggering();
+ // Schedule a reliability trigger in case the update check doesn't succeed and there is no
+ // response at all. It will be cancelled if the check is successful in recordCheckResult.
+ mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis);
}
/**
@@ -370,9 +381,9 @@ public class PackageTracker implements IntentHelper.Listener {
+ " storage state.");
mPackageStatusStorage.resetCheckState();
- // Enable reliability triggering and reset the failure count so we know that the
+ // Schedule a reliability trigger and reset the failure count so we know that the
// next reliability trigger will do something.
- mIntentHelper.enableReliabilityTriggering();
+ mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis);
mCheckFailureCount = 0;
} else {
// This is the expected case when tracking is enabled: a check was triggered and it has
@@ -385,13 +396,13 @@ public class PackageTracker implements IntentHelper.Listener {
setCheckComplete();
if (success) {
- // Since the check was successful, no more reliability checks are required until
+ // Since the check was successful, no reliability trigger is required until
// there is a package change.
- mIntentHelper.disableReliabilityTriggering();
+ mIntentHelper.unscheduleReliabilityTrigger();
mCheckFailureCount = 0;
} else {
- // Enable reliability triggering to potentially check again in future.
- mIntentHelper.enableReliabilityTriggering();
+ // Enable schedule a reliability trigger to check again in future.
+ mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis);
mCheckFailureCount++;
}
} else {
@@ -400,8 +411,8 @@ public class PackageTracker implements IntentHelper.Listener {
Slog.i(TAG, "recordCheckResult: could not update token=" + checkToken
+ " with success=" + success + ". Optimistic lock failure");
- // Enable reliability triggering to potentially try again in future.
- mIntentHelper.enableReliabilityTriggering();
+ // Schedule a reliability trigger to potentially try again in future.
+ mIntentHelper.scheduleReliabilityTrigger(mDelayBeforeReliabilityCheckMillis);
mCheckFailureCount++;
}
}
@@ -515,6 +526,7 @@ public class PackageTracker implements IntentHelper.Listener {
", mUpdateAppPackageName='" + mUpdateAppPackageName + '\'' +
", mDataAppPackageName='" + mDataAppPackageName + '\'' +
", mCheckTimeAllowedMillis=" + mCheckTimeAllowedMillis +
+ ", mDelayBeforeReliabilityCheckMillis=" + mDelayBeforeReliabilityCheckMillis +
", mFailedCheckRetryCount=" + mFailedCheckRetryCount +
", mLastTriggerTimestamp=" + mLastTriggerTimestamp +
", mCheckTriggered=" + mCheckTriggered +
diff --git a/services/core/java/com/android/server/timezone/RulesManagerService.java b/services/core/java/com/android/server/timezone/RulesManagerService.java
index 50f27ed67a36..6824a597a5f8 100644
--- a/services/core/java/com/android/server/timezone/RulesManagerService.java
+++ b/services/core/java/com/android/server/timezone/RulesManagerService.java
@@ -69,18 +69,22 @@ public final class RulesManagerService extends IRulesManager.Stub {
DistroVersion.CURRENT_FORMAT_MINOR_VERSION);
public static class Lifecycle extends SystemService {
- private RulesManagerService mService;
-
public Lifecycle(Context context) {
super(context);
}
@Override
public void onStart() {
- mService = RulesManagerService.create(getContext());
- mService.start();
+ RulesManagerService service = RulesManagerService.create(getContext());
+ service.start();
+
+ // Publish the binder service so it can be accessed from other (appropriately
+ // permissioned) processes.
+ publishBinderService(Context.TIME_ZONE_RULES_MANAGER_SERVICE, service);
- publishBinderService(Context.TIME_ZONE_RULES_MANAGER_SERVICE, mService);
+ // Publish the service instance locally so we can use it directly from within the system
+ // server from TimeZoneUpdateIdler.
+ publishLocalService(RulesManagerService.class, service);
}
}
@@ -343,16 +347,20 @@ public final class RulesManagerService extends IRulesManager.Stub {
@Override
public void run() {
EventLogTags.writeTimezoneUninstallStarted(toStringOrNull(mCheckToken));
- boolean success = false;
+ boolean packageTrackerStatus = false;
try {
- success = mInstaller.stageUninstall();
- // Right now we just have success (0) / failure (1). All clients should be checking
- // against SUCCESS. More granular failures may be added in future.
- int resultCode = success ? Callback.SUCCESS
- : Callback.ERROR_UNKNOWN_FAILURE;
+ int uninstallResult = mInstaller.stageUninstall();
+ packageTrackerStatus = (uninstallResult == TimeZoneDistroInstaller.UNINSTALL_SUCCESS
+ || uninstallResult == TimeZoneDistroInstaller.UNINSTALL_NOTHING_INSTALLED);
+
+ // Right now we just have Callback.SUCCESS / Callback.ERROR_UNKNOWN_FAILURE for
+ // uninstall. All clients should be checking against SUCCESS. More granular failures
+ // may be added in future.
+ int callbackResultCode =
+ packageTrackerStatus ? Callback.SUCCESS : Callback.ERROR_UNKNOWN_FAILURE;
EventLogTags.writeTimezoneUninstallComplete(
- toStringOrNull(mCheckToken), resultCode);
- sendFinishedStatus(mCallback, resultCode);
+ toStringOrNull(mCheckToken), callbackResultCode);
+ sendFinishedStatus(mCallback, callbackResultCode);
} catch (Exception e) {
EventLogTags.writeTimezoneUninstallComplete(
toStringOrNull(mCheckToken), Callback.ERROR_UNKNOWN_FAILURE);
@@ -360,7 +368,7 @@ public final class RulesManagerService extends IRulesManager.Stub {
sendFinishedStatus(mCallback, Callback.ERROR_UNKNOWN_FAILURE);
} finally {
// Notify the package tracker that the operation is now complete.
- mPackageTracker.recordCheckResult(mCheckToken, success);
+ mPackageTracker.recordCheckResult(mCheckToken, packageTrackerStatus);
mOperationInProgress.set(false);
}
@@ -492,6 +500,16 @@ public final class RulesManagerService extends IRulesManager.Stub {
mPackageTracker.dump(pw);
}
+ /**
+ * Called when the device is considered idle.
+ */
+ void notifyIdle() {
+ // No package has changed: we are just triggering because the device is idle and there
+ // *might* be work to do.
+ final boolean packageChanged = false;
+ mPackageTracker.triggerUpdateIfNeeded(packageChanged);
+ }
+
@Override
public String toString() {
return "RulesManagerService{" +
diff --git a/services/core/java/com/android/server/timezone/TimeZoneUpdateIdler.java b/services/core/java/com/android/server/timezone/TimeZoneUpdateIdler.java
new file mode 100644
index 000000000000..a7767a4fbd66
--- /dev/null
+++ b/services/core/java/com/android/server/timezone/TimeZoneUpdateIdler.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2017 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.timezone;
+
+import com.android.server.LocalServices;
+
+import android.app.job.JobInfo;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.content.ComponentName;
+import android.content.Context;
+import android.util.Slog;
+
+/**
+ * A JobService used to trigger time zone rules update work when a device falls idle.
+ */
+public final class TimeZoneUpdateIdler extends JobService {
+
+ private static final String TAG = "timezone.TimeZoneUpdateIdler";
+
+ /** The static job ID used to handle on-idle work. */
+ // Must be unique within UID (system service)
+ private static final int TIME_ZONE_UPDATE_IDLE_JOB_ID = 27042305;
+
+ @Override
+ public boolean onStartJob(JobParameters params) {
+ RulesManagerService rulesManagerService =
+ LocalServices.getService(RulesManagerService.class);
+
+ Slog.d(TAG, "onStartJob() called");
+
+ // Note: notifyIdle() explicitly handles canceling / re-scheduling so no need to reschedule
+ // here.
+ rulesManagerService.notifyIdle();
+
+ // Everything is handled synchronously. We are done.
+ return false;
+ }
+
+ @Override
+ public boolean onStopJob(JobParameters params) {
+ // Reschedule if stopped unless it was cancelled due to unschedule().
+ boolean reschedule = params.getStopReason() != JobParameters.REASON_CANCELED;
+ Slog.d(TAG, "onStopJob() called: Reschedule=" + reschedule);
+ return reschedule;
+ }
+
+ /**
+ * Schedules the TimeZoneUpdateIdler job service to run once.
+ *
+ * @param context Context to use to get a job scheduler.
+ */
+ public static void schedule(Context context, long minimumDelayMillis) {
+ // Request that the JobScheduler tell us when the device falls idle.
+ JobScheduler jobScheduler =
+ (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+
+ // The TimeZoneUpdateIdler will send an intent that will trigger the Receiver.
+ ComponentName idlerJobServiceName =
+ new ComponentName(context, TimeZoneUpdateIdler.class);
+
+ // We require the device is idle, but also that it is charging to be as non-invasive as
+ // we can.
+ JobInfo.Builder jobInfoBuilder =
+ new JobInfo.Builder(TIME_ZONE_UPDATE_IDLE_JOB_ID, idlerJobServiceName)
+ .setRequiresDeviceIdle(true)
+ .setRequiresCharging(true)
+ .setMinimumLatency(minimumDelayMillis);
+
+ Slog.d(TAG, "schedule() called: minimumDelayMillis=" + minimumDelayMillis);
+ jobScheduler.schedule(jobInfoBuilder.build());
+ }
+
+ /**
+ * Unschedules the TimeZoneUpdateIdler job service.
+ *
+ * @param context Context to use to get a job scheduler.
+ */
+ public static void unschedule(Context context) {
+ JobScheduler jobScheduler =
+ (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+ Slog.d(TAG, "unschedule() called");
+ jobScheduler.cancel(TIME_ZONE_UPDATE_IDLE_JOB_ID);
+ }
+}
diff --git a/services/core/java/com/android/server/twilight/TwilightState.java b/services/core/java/com/android/server/twilight/TwilightState.java
index 30a8cccb6ad5..71304a7a4701 100644
--- a/services/core/java/com/android/server/twilight/TwilightState.java
+++ b/services/core/java/com/android/server/twilight/TwilightState.java
@@ -18,7 +18,10 @@ package com.android.server.twilight;
import android.text.format.DateFormat;
-import java.util.Calendar;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.TimeZone;
/**
* The twilight state, consisting of the sunrise and sunset times (in millis) for the current
@@ -45,12 +48,11 @@ public final class TwilightState {
}
/**
- * Returns a new {@link Calendar} instance initialized to {@link #sunriseTimeMillis()}.
+ * Returns a new {@link LocalDateTime} instance initialized to {@link #sunriseTimeMillis()}.
*/
- public Calendar sunrise() {
- final Calendar sunrise = Calendar.getInstance();
- sunrise.setTimeInMillis(mSunriseTimeMillis);
- return sunrise;
+ public LocalDateTime sunrise() {
+ final ZoneId zoneId = TimeZone.getDefault().toZoneId();
+ return LocalDateTime.ofInstant(Instant.ofEpochMilli(mSunriseTimeMillis), zoneId);
}
/**
@@ -62,12 +64,11 @@ public final class TwilightState {
}
/**
- * Returns a new {@link Calendar} instance initialized to {@link #sunsetTimeMillis()}.
+ * Returns a new {@link LocalDateTime} instance initialized to {@link #sunsetTimeMillis()}.
*/
- public Calendar sunset() {
- final Calendar sunset = Calendar.getInstance();
- sunset.setTimeInMillis(mSunsetTimeMillis);
- return sunset;
+ public LocalDateTime sunset() {
+ final ZoneId zoneId = TimeZone.getDefault().toZoneId();
+ return LocalDateTime.ofInstant(Instant.ofEpochMilli(mSunsetTimeMillis), zoneId);
}
/**
diff --git a/services/core/java/com/android/server/utils/ManagedApplicationService.java b/services/core/java/com/android/server/utils/ManagedApplicationService.java
index 0f251fd83822..1ea70585aa5f 100644
--- a/services/core/java/com/android/server/utils/ManagedApplicationService.java
+++ b/services/core/java/com/android/server/utils/ManagedApplicationService.java
@@ -44,6 +44,7 @@ public class ManagedApplicationService {
private final int mClientLabel;
private final String mSettingsAction;
private final BinderChecker mChecker;
+ private final boolean mIsImportant;
private final DeathRecipient mDeathRecipient = new DeathRecipient() {
@Override
@@ -64,13 +65,14 @@ public class ManagedApplicationService {
private ManagedApplicationService(final Context context, final ComponentName component,
final int userId, int clientLabel, String settingsAction,
- BinderChecker binderChecker) {
+ BinderChecker binderChecker, boolean isImportant) {
mContext = context;
mComponent = component;
mUserId = userId;
mClientLabel = clientLabel;
mSettingsAction = settingsAction;
mChecker = binderChecker;
+ mIsImportant = isImportant;
}
/**
@@ -99,13 +101,15 @@ public class ManagedApplicationService {
* @param settingsAction an action that can be used to open the Settings UI to enable/disable
* binding to these services.
* @param binderChecker an interface used to validate the returned binder object.
+ * @param isImportant bind the user service with BIND_IMPORTANT.
* @return a ManagedApplicationService instance.
*/
public static ManagedApplicationService build(@NonNull final Context context,
@NonNull final ComponentName component, final int userId, @NonNull int clientLabel,
- @NonNull String settingsAction, @NonNull BinderChecker binderChecker) {
+ @NonNull String settingsAction, @NonNull BinderChecker binderChecker,
+ boolean isImportant) {
return new ManagedApplicationService(context, component, userId, clientLabel,
- settingsAction, binderChecker);
+ settingsAction, binderChecker, isImportant);
}
/**
@@ -248,9 +252,12 @@ public class ManagedApplicationService {
mPendingConnection = serviceConnection;
+ int flags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE;
+ if (mIsImportant) {
+ flags |= Context.BIND_IMPORTANT;
+ }
try {
- if (!mContext.bindServiceAsUser(intent, serviceConnection,
- Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE,
+ if (!mContext.bindServiceAsUser(intent, serviceConnection, flags,
new UserHandle(mUserId))) {
Slog.w(TAG, "Unable to bind service: " + intent);
}
diff --git a/services/core/java/com/android/server/utils/PriorityDump.java b/services/core/java/com/android/server/utils/PriorityDump.java
index c05cc3ff8827..054f1564730e 100644
--- a/services/core/java/com/android/server/utils/PriorityDump.java
+++ b/services/core/java/com/android/server/utils/PriorityDump.java
@@ -59,10 +59,10 @@ public class SpringfieldNuclearPowerPlant extends Binder {
Donuts in the box: 1
Nuclear reactor status: DANGER - MELTDOWN IMMINENT
- $ adb shell dumpsys snpp --dump_priority CRITICAL
+ $ adb shell dumpsys snpp --dump-priority CRITICAL
Donuts in the box: 1
- $ adb shell dumpsys snpp --dump_priority NORMAL
+ $ adb shell dumpsys snpp --dump-priority NORMAL
Nuclear reactor status: DANGER - MELTDOWN IMMINENT
* </code></pre>
@@ -84,7 +84,7 @@ public class SpringfieldNuclearPowerPlant extends Binder {
*/
public final class PriorityDump {
- public static final String PRIORITY_ARG = "--dump_priority";
+ public static final String PRIORITY_ARG = "--dump-priority";
private PriorityDump() {
throw new UnsupportedOperationException();
@@ -92,12 +92,12 @@ public final class PriorityDump {
/**
* Parses {@code} and call the proper {@link PriorityDumper} method when the first argument is
- * {@code --dump_priority}, stripping the priority and its type.
+ * {@code --dump-priority}, stripping the priority and its type.
* <p>
- * For example, if called as {@code --dump_priority HIGH arg1 arg2 arg3}, it will call
+ * For example, if called as {@code --dump-priority HIGH arg1 arg2 arg3}, it will call
* <code>dumper.dumpHigh(fd, pw, {"arg1", "arg2", "arg3"}) </code>
* <p>
- * If the {@code --dump_priority} is not set, it calls
+ * If the {@code --dump-priority} is not set, it calls
* {@link PriorityDumper#dump(FileDescriptor, PrintWriter, String[])} passing the whole
* {@code args} instead.
*/
@@ -124,7 +124,7 @@ public final class PriorityDump {
}
/**
- * Gets an array without the {@code --dump_priority PRIORITY} prefix.
+ * Gets an array without the {@code --dump-priority PRIORITY} prefix.
*/
private static String[] getStrippedArgs(String[] args) {
final String[] stripped = new String[args.length - 2];
diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java
index b6b964b050e3..830ebda0b9c1 100644
--- a/services/core/java/com/android/server/vr/VrManagerService.java
+++ b/services/core/java/com/android/server/vr/VrManagerService.java
@@ -74,6 +74,7 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.StringBuilder;
import java.text.SimpleDateFormat;
+import java.util.Arrays;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
@@ -414,7 +415,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public void registerListener(IVrStateCallbacks cb) {
- enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER);
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
if (cb == null) {
throw new IllegalArgumentException("Callback binder object is null.");
}
@@ -424,7 +426,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public void unregisterListener(IVrStateCallbacks cb) {
- enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER);
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
if (cb == null) {
throw new IllegalArgumentException("Callback binder object is null.");
}
@@ -434,7 +437,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public void registerPersistentVrStateListener(IPersistentVrStateCallbacks cb) {
- enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER);
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
if (cb == null) {
throw new IllegalArgumentException("Callback binder object is null.");
}
@@ -444,7 +448,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public void unregisterPersistentVrStateListener(IPersistentVrStateCallbacks cb) {
- enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER);
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
if (cb == null) {
throw new IllegalArgumentException("Callback binder object is null.");
}
@@ -454,19 +459,28 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public boolean getVrModeState() {
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
return VrManagerService.this.getVrMode();
}
@Override
+ public boolean getPersistentVrModeEnabled() {
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
+ return VrManagerService.this.getPersistentVrMode();
+ }
+
+ @Override
public void setPersistentVrModeEnabled(boolean enabled) {
- enforceCallerPermission(Manifest.permission.RESTRICTED_VR_ACCESS);
+ enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS);
VrManagerService.this.setPersistentVrModeEnabled(enabled);
}
@Override
public void setVr2dDisplayProperties(
Vr2dDisplayProperties vr2dDisplayProp) {
- enforceCallerPermission(Manifest.permission.RESTRICTED_VR_ACCESS);
+ enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS);
VrManagerService.this.setVr2dDisplayProperties(vr2dDisplayProp);
}
@@ -530,11 +544,21 @@ public class VrManagerService extends SystemService implements EnabledComponentC
};
- private void enforceCallerPermission(String permission) {
- if (mContext.checkCallingOrSelfPermission(permission)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Caller does not hold the permission " + permission);
+ /**
+ * Enforces that at lease one of the specified permissions is held by the caller.
+ * Throws SecurityException if none of the specified permissions are held.
+ *
+ * @param permissions One or more permissions to check against.
+ */
+ private void enforceCallerPermissionAnyOf(String... permissions) {
+ for (String permission : permissions) {
+ if (mContext.checkCallingOrSelfPermission(permission)
+ == PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
}
+ throw new SecurityException("Caller does not hold at least one of the permissions: "
+ + Arrays.toString(permissions));
}
/**
@@ -1002,7 +1026,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@NonNull ComponentName component, int userId) {
return ManagedApplicationService.build(context, component, userId,
R.string.vr_listener_binding_label, Settings.ACTION_VR_LISTENER_SETTINGS,
- sBinderChecker);
+ sBinderChecker, /*isImportant*/true);
}
/**
@@ -1204,4 +1228,10 @@ public class VrManagerService extends SystemService implements EnabledComponentC
return mVrModeEnabled;
}
}
+
+ private boolean getPersistentVrMode() {
+ synchronized (mLock) {
+ return mPersistentVrModeEnabled;
+ }
+ }
}
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index f6f5341ff0a9..b888ec21e708 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -280,14 +280,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
Slog.v(TAG, "Crop done; invoking completion callback");
}
wallpaper.imageWallpaperPending = false;
- if (wallpaper.setComplete != null) {
- try {
- wallpaper.setComplete.onWallpaperChanged();
- } catch (RemoteException e) {
- // if this fails we don't really care; the setting app may just
- // have crashed and that sort of thing is a fact of life.
- }
- }
if (sysWallpaperChanged) {
// If this was the system wallpaper, rebind...
bindWallpaperComponentLocked(mImageWallpaper, true,
@@ -311,6 +303,16 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
}
saveSettingsLocked(wallpaper.userId);
+
+ // Publish completion *after* we've persisted the changes
+ if (wallpaper.setComplete != null) {
+ try {
+ wallpaper.setComplete.onWallpaperChanged();
+ } catch (RemoteException e) {
+ // if this fails we don't really care; the setting app may just
+ // have crashed and that sort of thing is a fact of life.
+ }
+ }
}
}
}
@@ -1136,7 +1138,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
mMonitor = new MyPackageMonitor();
mMonitor.register(context, null, UserHandle.ALL, true);
getWallpaperDir(UserHandle.USER_SYSTEM).mkdirs();
+
+ // Initialize state from the persistent store, then guarantee that the
+ // WallpaperData for the system imagery is instantiated & active, creating
+ // it from defaults if necessary.
loadSettingsLocked(UserHandle.USER_SYSTEM, false);
+ getWallpaperSafeLocked(UserHandle.USER_SYSTEM, FLAG_SYSTEM);
+
mColorsChangedListeners = new SparseArray<>();
}
@@ -1293,15 +1301,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
}
void switchUser(int userId, IRemoteCallback reply) {
- WallpaperData systemWallpaper;
- WallpaperData lockWallpaper;
+ final WallpaperData systemWallpaper;
+ final WallpaperData lockWallpaper;
synchronized (mLock) {
mCurrentUserId = userId;
systemWallpaper = getWallpaperSafeLocked(userId, FLAG_SYSTEM);
- lockWallpaper = mLockWallpaperMap.get(userId);
- if (lockWallpaper == null) {
- lockWallpaper = systemWallpaper;
- }
+ final WallpaperData tmpLockWallpaper = mLockWallpaperMap.get(userId);
+ lockWallpaper = tmpLockWallpaper == null ? systemWallpaper : tmpLockWallpaper;
// Not started watching yet, in case wallpaper data was loaded for other reasons.
if (systemWallpaper.wallpaperObserver == null) {
systemWallpaper.wallpaperObserver = new WallpaperObserver(systemWallpaper);
@@ -1309,8 +1315,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
}
switchWallpaper(systemWallpaper, reply);
}
- notifyWallpaperColorsChanged(systemWallpaper, FLAG_SYSTEM);
- notifyWallpaperColorsChanged(lockWallpaper, FLAG_LOCK);
+
+ // Offload color extraction to another thread since switchUser will be called
+ // from the main thread.
+ FgThread.getHandler().post(() -> {
+ notifyWallpaperColorsChanged(systemWallpaper, FLAG_SYSTEM);
+ notifyWallpaperColorsChanged(lockWallpaper, FLAG_LOCK);
+ });
}
void switchWallpaper(WallpaperData wallpaper, IRemoteCallback reply) {
@@ -1625,13 +1636,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
(which == FLAG_LOCK) ? mLockWallpaperMap : mWallpaperMap;
WallpaperData wallpaper = whichSet.get(wallpaperUserId);
if (wallpaper == null) {
- // common case, this is the first lookup post-boot of the system or
- // unified lock, so we bring up the saved state lazily now and recheck.
- loadSettingsLocked(wallpaperUserId, false);
- wallpaper = whichSet.get(wallpaperUserId);
- if (wallpaper == null) {
- return null;
- }
+ // There is no established wallpaper imagery of this type (expected
+ // only for lock wallpapers; a system WallpaperData is established at
+ // user switch)
+ return null;
}
try {
if (outParams != null) {
@@ -1656,7 +1664,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
@Override
public WallpaperInfo getWallpaperInfo(int userId) {
userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
- Binder.getCallingUid(), userId, false, true, "getWallpaperIdForUser", null);
+ Binder.getCallingUid(), userId, false, true, "getWallpaperInfo", null);
synchronized (mLock) {
WallpaperData wallpaper = mWallpaperMap.get(userId);
if (wallpaper != null && wallpaper.connection != null) {
@@ -2258,7 +2266,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
private void writeWallpaperAttributes(XmlSerializer out, String tag, WallpaperData wallpaper)
throws IllegalArgumentException, IllegalStateException, IOException {
if (DEBUG) {
- Slog.v(TAG, "writeWallpaperAttributes");
+ Slog.v(TAG, "writeWallpaperAttributes id=" + wallpaper.wallpaperId);
}
out.startTag(null, tag);
out.attribute(null, "id", Integer.toString(wallpaper.wallpaperId));
@@ -2357,6 +2365,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
* the event yet. We use this safe method when we don't care about this ordering and just
* want to update the data. The data is going to be applied when the user switch observer
* is eventually executed.
+ *
+ * Important: this method loads settings to initialize the given user's wallpaper data if
+ * there is no current in-memory state.
*/
private WallpaperData getWallpaperSafeLocked(int userId, int which) {
// We're setting either just system (work with the system wallpaper),
@@ -2395,8 +2406,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
}
private void loadSettingsLocked(int userId, boolean keepDimensionHints) {
- if (DEBUG) Slog.v(TAG, "loadSettingsLocked");
-
JournaledFile journal = makeJournaledFile(userId);
FileInputStream stream = null;
File file = journal.chooseForRead();
diff --git a/services/core/java/com/android/server/webkit/SystemImpl.java b/services/core/java/com/android/server/webkit/SystemImpl.java
index bf769ed46bc1..1e334b83d8b0 100644
--- a/services/core/java/com/android/server/webkit/SystemImpl.java
+++ b/services/core/java/com/android/server/webkit/SystemImpl.java
@@ -304,6 +304,6 @@ public class SystemImpl implements SystemInterface {
// flags declaring we want extra info from the package manager for webview providers
private final static int PACKAGE_FLAGS = PackageManager.GET_META_DATA
- | PackageManager.GET_SIGNATURES | PackageManager.MATCH_DEBUG_TRIAGED_MISSING
- | PackageManager.MATCH_ANY_USER;
+ | PackageManager.GET_SIGNATURES | PackageManager.GET_SHARED_LIBRARY_FILES
+ | PackageManager.MATCH_DEBUG_TRIAGED_MISSING | PackageManager.MATCH_ANY_USER;
}
diff --git a/services/core/java/com/android/server/webkit/WebViewUpdater.java b/services/core/java/com/android/server/webkit/WebViewUpdater.java
index 203bbf61dc51..7fc907f95c93 100644
--- a/services/core/java/com/android/server/webkit/WebViewUpdater.java
+++ b/services/core/java/com/android/server/webkit/WebViewUpdater.java
@@ -569,6 +569,7 @@ class WebViewUpdater {
PackageInfo systemUserPackageInfo =
userPackages.get(UserHandle.USER_SYSTEM).getPackageInfo();
if (systemUserPackageInfo == null) {
+ pw.println(String.format(" %s is NOT installed.", provider.packageName));
continue;
}
diff --git a/services/core/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java
index c2edc04db2e1..c76b90593ab3 100644
--- a/services/core/java/com/android/server/wm/AppWindowAnimator.java
+++ b/services/core/java/com/android/server/wm/AppWindowAnimator.java
@@ -450,7 +450,7 @@ public class AppWindowAnimator {
return isAnimating;
}
- void dump(PrintWriter pw, String prefix, boolean dumpAll) {
+ void dump(PrintWriter pw, String prefix) {
pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken);
pw.print(prefix); pw.print("mAnimator="); pw.println(mAnimator);
pw.print(prefix); pw.print("freezingScreen="); pw.print(freezingScreen);
diff --git a/services/core/java/com/android/server/wm/AppWindowContainerController.java b/services/core/java/com/android/server/wm/AppWindowContainerController.java
index f142ff619884..584184020d33 100644
--- a/services/core/java/com/android/server/wm/AppWindowContainerController.java
+++ b/services/core/java/com/android/server/wm/AppWindowContainerController.java
@@ -181,12 +181,12 @@ public class AppWindowContainerController
int requestedOrientation, boolean fullscreen, boolean showForAllUsers, int configChanges,
boolean voiceInteraction, boolean launchTaskBehind, boolean alwaysFocusable,
int targetSdkVersion, int rotationAnimationHint, long inputDispatchingTimeoutNanos,
- Configuration overrideConfig, Rect bounds) {
+ Rect bounds) {
this(taskController, token, listener, index, requestedOrientation, fullscreen,
showForAllUsers,
configChanges, voiceInteraction, launchTaskBehind, alwaysFocusable,
targetSdkVersion, rotationAnimationHint, inputDispatchingTimeoutNanos,
- WindowManagerService.getInstance(), overrideConfig, bounds);
+ WindowManagerService.getInstance(), bounds);
}
public AppWindowContainerController(TaskWindowContainerController taskController,
@@ -194,7 +194,7 @@ public class AppWindowContainerController
int requestedOrientation, boolean fullscreen, boolean showForAllUsers, int configChanges,
boolean voiceInteraction, boolean launchTaskBehind, boolean alwaysFocusable,
int targetSdkVersion, int rotationAnimationHint, long inputDispatchingTimeoutNanos,
- WindowManagerService service, Configuration overrideConfig, Rect bounds) {
+ WindowManagerService service, Rect bounds) {
super(listener, service);
mHandler = new H(service.mH.getLooper());
mToken = token;
@@ -215,7 +215,7 @@ public class AppWindowContainerController
atoken = createAppWindow(mService, token, voiceInteraction, task.getDisplayContent(),
inputDispatchingTimeoutNanos, fullscreen, showForAllUsers, targetSdkVersion,
requestedOrientation, rotationAnimationHint, configChanges, launchTaskBehind,
- alwaysFocusable, this, overrideConfig, bounds);
+ alwaysFocusable, this, bounds);
if (DEBUG_TOKEN_MOVEMENT || DEBUG_ADD_REMOVE) Slog.v(TAG_WM, "addAppToken: " + atoken
+ " controller=" + taskController + " at " + index);
task.addChild(atoken, index);
@@ -227,12 +227,11 @@ public class AppWindowContainerController
boolean voiceInteraction, DisplayContent dc, long inputDispatchingTimeoutNanos,
boolean fullscreen, boolean showForAllUsers, int targetSdk, int orientation,
int rotationAnimationHint, int configChanges, boolean launchTaskBehind,
- boolean alwaysFocusable, AppWindowContainerController controller,
- Configuration overrideConfig, Rect bounds) {
+ boolean alwaysFocusable, AppWindowContainerController controller, Rect bounds) {
return new AppWindowToken(service, token, voiceInteraction, dc,
inputDispatchingTimeoutNanos, fullscreen, showForAllUsers, targetSdk, orientation,
rotationAnimationHint, configChanges, launchTaskBehind, alwaysFocusable,
- controller, overrideConfig, bounds);
+ controller, bounds);
}
public void removeContainer(int displayId) {
@@ -365,8 +364,6 @@ public class AppWindowContainerController
// Now that the app is going invisible, we can remove it. It will be restarted
// if made visible again.
wtoken.removeDeadWindows();
- wtoken.setVisibleBeforeClientHidden();
- mService.mUnknownAppVisibilityController.appRemovedOrHidden(wtoken);
} else {
if (!mService.mAppTransition.isTransitionSet()
&& mService.mAppTransition.isReady()) {
@@ -653,7 +650,7 @@ public class AppWindowContainerController
// Use the same thread to remove the window as we used to add it, as otherwise we end up
// with things in the view hierarchy being called from different threads.
- mHandler.post(() -> {
+ mService.mAnimationHandler.post(() -> {
if (DEBUG_STARTING_WINDOW) Slog.v(TAG_WM, "Removing startingView=" + surface);
try {
surface.remove();
@@ -729,35 +726,6 @@ public class AppWindowContainerController
}
}
- /**
- * Takes a snapshot of the screen. In landscape mode this grabs the whole screen.
- * In portrait mode, it grabs the full screenshot.
- *
- * @param displayId the Display to take a screenshot of.
- * @param width the width of the target bitmap
- * @param height the height of the target bitmap
- * @param frameScale the scale to apply to the frame, only used when width = -1 and height = -1
- */
- public Bitmap screenshotApplications(int displayId, int width, int height, float frameScale) {
- try {
- Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "screenshotApplications");
- final DisplayContent dc;
- synchronized(mWindowMap) {
- dc = mRoot.getDisplayContentOrCreate(displayId);
- if (dc == null) {
- if (DEBUG_SCREENSHOT) Slog.i(TAG_WM, "Screenshot of " + mToken
- + ": returning null. No Display for displayId=" + displayId);
- return null;
- }
- }
- return dc.screenshotApplications(mToken.asBinder(), width, height,
- false /* includeFullDisplay */, frameScale, Bitmap.Config.RGB_565,
- false /* wallpaperOnly */, false /* includeDecor */);
- } finally {
- Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
- }
- }
-
void reportStartingWindowDrawn() {
mHandler.sendMessage(mHandler.obtainMessage(H.NOTIFY_STARTING_WINDOW_DRAWN));
}
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 7545a10602a6..2d1fc912fcfc 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -53,6 +53,7 @@ import static com.android.server.wm.WindowManagerService.logWithStack;
import static com.android.server.wm.proto.AppWindowTokenProto.NAME;
import static com.android.server.wm.proto.AppWindowTokenProto.WINDOW_TOKEN;
+import android.annotation.CallSuper;
import android.annotation.NonNull;
import android.app.Activity;
import android.content.res.Configuration;
@@ -78,8 +79,6 @@ import java.io.PrintWriter;
import java.util.ArrayDeque;
import java.util.ArrayList;
-import static android.os.Build.VERSION_CODES.O;
-
class AppTokenList extends ArrayList<AppWindowToken> {
}
@@ -126,14 +125,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
// case do not clear allDrawn until the animation completes.
boolean deferClearAllDrawn;
- /**
- * These are to track the app's real drawing status if there were no saved surfaces.
- * @see #updateDrawnWindowStates
- */
- boolean allDrawnExcludingSaved;
- private int mNumInterestingWindowsExcludingSaved;
- private int mNumDrawnWindowsExcludingSaved;
-
// Is this window's surface needed? This is almost like hidden, except
// it will sometimes be true a little earlier: when the token has
// been shown, but is still waiting for its app transition to execute
@@ -197,7 +188,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
private boolean mDisablePreviewScreenshots;
- Task mLastParent;
+ private Task mLastParent;
/**
* See {@link #canTurnScreenOn()}
@@ -208,8 +199,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
DisplayContent dc, long inputDispatchingTimeoutNanos, boolean fullscreen,
boolean showForAllUsers, int targetSdk, int orientation, int rotationAnimationHint,
int configChanges, boolean launchTaskBehind, boolean alwaysFocusable,
- AppWindowContainerController controller, Configuration overrideConfig, Rect bounds) {
- this(service, token, voiceInteraction, dc, fullscreen, overrideConfig, bounds);
+ AppWindowContainerController controller, Rect bounds) {
+ this(service, token, voiceInteraction, dc, fullscreen, bounds);
setController(controller);
mInputDispatchingTimeoutNanos = inputDispatchingTimeoutNanos;
mShowForAllUsers = showForAllUsers;
@@ -226,7 +217,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
}
AppWindowToken(WindowManagerService service, IApplicationToken token, boolean voiceInteraction,
- DisplayContent dc, boolean fillsParent, Configuration overrideConfig, Rect bounds) {
+ DisplayContent dc, boolean fillsParent, Rect bounds) {
super(service, token != null ? token.asBinder() : null, TYPE_APPLICATION, true, dc,
false /* ownerCanManageAppTokens */);
appToken = token;
@@ -234,9 +225,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
mFillsParent = fillsParent;
mInputApplicationHandle = new InputApplicationHandle(this);
mAppAnimator = new AppWindowAnimator(this, service);
- if (overrideConfig != null) {
- onOverrideConfigurationChanged(overrideConfig);
- }
if (bounds != null) {
mBounds.set(bounds);
}
@@ -372,10 +360,10 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
boolean runningAppAnimation = false;
+ if (mAppAnimator.animation == AppWindowAnimator.sDummyAnimation) {
+ mAppAnimator.setNullAnimation();
+ }
if (transit != AppTransition.TRANSIT_UNSET) {
- if (mAppAnimator.animation == AppWindowAnimator.sDummyAnimation) {
- mAppAnimator.setNullAnimation();
- }
if (mService.applyAnimationLocked(this, lp, transit, visible, isVoiceInteraction)) {
delayed = runningAppAnimation = true;
}
@@ -690,107 +678,9 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
}
}
- /**
- * Checks whether we should save surfaces for this app.
- *
- * @return true if the surfaces should be saved, false otherwise.
- */
- boolean shouldSaveSurface() {
- // We want to save surface if the app's windows are "allDrawn".
- // (If we started entering animation early with saved surfaces, allDrawn
- // should have been restored to true. So we'll save again in that case
- // even if app didn't actually finish drawing.)
- return allDrawn;
- }
-
- private boolean canRestoreSurfaces() {
- for (int i = mChildren.size() -1; i >= 0; i--) {
- final WindowState w = mChildren.get(i);
- if (w.canRestoreSurface()) {
- return true;
- }
- }
- return false;
- }
-
- private void clearWasVisibleBeforeClientHidden() {
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final WindowState w = mChildren.get(i);
- w.clearWasVisibleBeforeClientHidden();
- }
- }
-
- /**
- * Whether the app has some window that is invisible in layout, but
- * animating with saved surface.
- */
- boolean isAnimatingInvisibleWithSavedSurface() {
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final WindowState w = mChildren.get(i);
- if (w.isAnimatingInvisibleWithSavedSurface()) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Hide all window surfaces that's still invisible in layout but animating
- * with a saved surface, and mark them destroying.
- */
- void stopUsingSavedSurfaceLocked() {
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final WindowState w = mChildren.get(i);
- w.stopUsingSavedSurface();
- }
- destroySurfaces();
- }
-
- void markSavedSurfaceExiting() {
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final WindowState w = mChildren.get(i);
- w.markSavedSurfaceExiting();
- }
- }
-
- void restoreSavedSurfaceForInterestingWindows() {
- if (!canRestoreSurfaces()) {
- clearWasVisibleBeforeClientHidden();
- return;
- }
-
- // Check if all interesting windows are drawn and we can mark allDrawn=true.
- int interestingNotDrawn = -1;
-
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final WindowState w = mChildren.get(i);
- interestingNotDrawn = w.restoreSavedSurfaceForInterestingWindow();
- }
-
- if (!allDrawn) {
- allDrawn = (interestingNotDrawn == 0);
- if (allDrawn) {
- mService.mH.obtainMessage(NOTIFY_ACTIVITY_DRAWN, token).sendToTarget();
- }
- }
- clearWasVisibleBeforeClientHidden();
-
- if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) Slog.d(TAG,
- "restoreSavedSurfaceForInterestingWindows: " + this + " allDrawn=" + allDrawn
- + " interestingNotDrawn=" + interestingNotDrawn);
- }
-
- void destroySavedSurfaces() {
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- final WindowState win = mChildren.get(i);
- win.destroySavedSurface();
- }
- }
-
void clearAllDrawn() {
allDrawn = false;
deferClearAllDrawn = false;
- allDrawnExcludingSaved = false;
}
Task getTask() {
@@ -1388,8 +1278,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
private boolean allDrawnStatesConsidered() {
for (int i = mChildren.size() - 1; i >= 0; --i) {
final WindowState child = mChildren.get(i);
- if (child.mightAffectAllDrawn(false /*visibleOnly*/ )
- && !child.getDrawnStateEvaluated()) {
+ if (child.mightAffectAllDrawn() && !child.getDrawnStateEvaluated()) {
return false;
}
}
@@ -1429,23 +1318,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
}
}
}
-
- if (!allDrawnExcludingSaved) {
- int numInteresting = mNumInterestingWindowsExcludingSaved;
- if (numInteresting > 0 && mNumDrawnWindowsExcludingSaved >= numInteresting) {
- if (DEBUG_VISIBILITY) Slog.v(TAG, "allDrawnExcludingSaved: " + this
- + " interesting=" + numInteresting
- + " drawn=" + mNumDrawnWindowsExcludingSaved);
- allDrawnExcludingSaved = true;
- if (mDisplayContent != null) {
- mDisplayContent.setLayoutNeeded();
- }
- if (isAnimatingInvisibleWithSavedSurface()
- && !mService.mFinishedEarlyAnim.contains(this)) {
- mService.mFinishedEarlyAnim.add(this);
- }
- }
- }
}
/**
@@ -1462,15 +1334,13 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
+ " allDrawn=" + allDrawn + " freezingScreen=" + mAppAnimator.freezingScreen);
}
- if (allDrawn && allDrawnExcludingSaved && !mAppAnimator.freezingScreen) {
+ if (allDrawn && !mAppAnimator.freezingScreen) {
return false;
}
if (mLastTransactionSequence != mService.mTransactionSequence) {
mLastTransactionSequence = mService.mTransactionSequence;
mNumInterestingWindows = mNumDrawnWindows = 0;
- mNumInterestingWindowsExcludingSaved = 0;
- mNumDrawnWindowsExcludingSaved = 0;
startingDisplayed = false;
}
@@ -1478,7 +1348,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
boolean isInterestingAndDrawn = false;
- if (!allDrawn && w.mightAffectAllDrawn(false /* visibleOnly */)) {
+ if (!allDrawn && w.mightAffectAllDrawn()) {
if (DEBUG_VISIBILITY || DEBUG_ORIENTATION) {
Slog.v(TAG, "Eval win " + w + ": isDrawn=" + w.isDrawnLw()
+ ", isAnimationSet=" + winAnimator.isAnimationSet());
@@ -1513,23 +1383,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
}
}
- if (!allDrawnExcludingSaved && w.mightAffectAllDrawn(true /* visibleOnly */)) {
- if (w != startingWindow && w.isInteresting()) {
- mNumInterestingWindowsExcludingSaved++;
- if (w.isDrawnLw() && !w.isAnimatingWithSavedSurface()) {
- mNumDrawnWindowsExcludingSaved++;
-
- if (DEBUG_VISIBILITY || DEBUG_ORIENTATION) Slog.v(TAG,
- "tokenMayBeDrawnExcludingSaved: " + this + " w=" + w
- + " numInteresting=" + mNumInterestingWindowsExcludingSaved
- + " freezingScreen=" + mAppAnimator.freezingScreen
- + " mAppFreezing=" + w.mAppFreezing);
-
- isInterestingAndDrawn = true;
- }
- }
- }
-
return isInterestingAndDrawn;
}
@@ -1763,10 +1616,14 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
if (mRemovingFromDisplay) {
pw.println(prefix + "mRemovingFromDisplay=" + mRemovingFromDisplay);
}
+ if (mAppAnimator.isAnimating()) {
+ mAppAnimator.dump(pw, prefix + " ");
+ }
}
+ @CallSuper
@Override
- void writeToProto(ProtoOutputStream proto, long fieldId) {
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
final long token = proto.start(fieldId);
writeNameToProto(proto, NAME);
super.writeToProto(proto, WINDOW_TOKEN);
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java
index cff2fadd7649..7953ee430934 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationController.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java
@@ -21,7 +21,6 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import android.animation.AnimationHandler;
-import android.animation.AnimationHandler.AnimationFrameCallbackProvider;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.annotation.IntDef;
@@ -32,13 +31,11 @@ import android.os.IBinder;
import android.os.Debug;
import android.util.ArrayMap;
import android.util.Slog;
-import android.view.Choreographer;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.view.WindowManagerInternal;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -142,9 +139,6 @@ public class BoundsAnimationController {
// True if this this animation was canceled and will be replaced the another animation from
// the same {@link #BoundsAnimationTarget} target.
private boolean mSkipFinalResize;
- // True if this animation replaced a previous animation of the same
- // {@link #BoundsAnimationTarget} target.
- private final boolean mSkipAnimationStart;
// True if this animation was canceled by the user, not as a part of a replacing animation
private boolean mSkipAnimationEnd;
@@ -159,6 +153,7 @@ public class BoundsAnimationController {
// Whether to schedule PiP mode changes on animation start/end
private @SchedulePipModeChangedState int mSchedulePipModeChangedState;
+ private @SchedulePipModeChangedState int mPrevSchedulePipModeChangedState;
// Depending on whether we are animating from
// a smaller to a larger size
@@ -171,14 +166,14 @@ public class BoundsAnimationController {
BoundsAnimator(BoundsAnimationTarget target, Rect from, Rect to,
@SchedulePipModeChangedState int schedulePipModeChangedState,
- boolean moveFromFullscreen, boolean moveToFullscreen,
- boolean replacingExistingAnimation) {
+ @SchedulePipModeChangedState int prevShedulePipModeChangedState,
+ boolean moveFromFullscreen, boolean moveToFullscreen) {
super();
mTarget = target;
mFrom.set(from);
mTo.set(to);
- mSkipAnimationStart = replacingExistingAnimation;
mSchedulePipModeChangedState = schedulePipModeChangedState;
+ mPrevSchedulePipModeChangedState = prevShedulePipModeChangedState;
mMoveFromFullscreen = moveFromFullscreen;
mMoveToFullscreen = moveToFullscreen;
addUpdateListener(this);
@@ -200,7 +195,7 @@ public class BoundsAnimationController {
@Override
public void onAnimationStart(Animator animation) {
if (DEBUG) Slog.d(TAG, "onAnimationStart: mTarget=" + mTarget
- + " mSkipAnimationStart=" + mSkipAnimationStart
+ + " mPrevSchedulePipModeChangedState=" + mPrevSchedulePipModeChangedState
+ " mSchedulePipModeChangedState=" + mSchedulePipModeChangedState);
mFinishAnimationAfterTransition = false;
mTmpRect.set(mFrom.left, mFrom.top, mFrom.left + mFrozenTaskWidth,
@@ -210,18 +205,26 @@ public class BoundsAnimationController {
// running
updateBooster();
- // Ensure that we have prepared the target for animation before
- // we trigger any size changes, so it can swap surfaces
- // in to appropriate modes, or do as it wishes otherwise.
- if (!mSkipAnimationStart) {
+ // Ensure that we have prepared the target for animation before we trigger any size
+ // changes, so it can swap surfaces in to appropriate modes, or do as it wishes
+ // otherwise.
+ if (mPrevSchedulePipModeChangedState == NO_PIP_MODE_CHANGED_CALLBACKS) {
mTarget.onAnimationStart(mSchedulePipModeChangedState ==
- SCHEDULE_PIP_MODE_CHANGED_ON_START);
+ SCHEDULE_PIP_MODE_CHANGED_ON_START, false /* forceUpdate */);
// When starting an animation from fullscreen, pause here and wait for the
// windows-drawn signal before we start the rest of the transition down into PiP.
if (mMoveFromFullscreen) {
pause();
}
+ } else if (mPrevSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_END &&
+ mSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) {
+ // We are replacing a running animation into PiP, but since it hasn't completed, the
+ // client will not currently receive any picture-in-picture mode change callbacks.
+ // However, we still need to report to them that they are leaving PiP, so this will
+ // force an update via a mode changed callback.
+ mTarget.onAnimationStart(true /* schedulePipModeChangedCallback */,
+ true /* forceUpdate */);
}
// Immediately update the task bounds if they have to become larger, but preserve
@@ -388,6 +391,8 @@ public class BoundsAnimationController {
boolean moveFromFullscreen, boolean moveToFullscreen) {
final BoundsAnimator existing = mRunningAnimations.get(target);
final boolean replacing = existing != null;
+ @SchedulePipModeChangedState int prevSchedulePipModeChangedState =
+ NO_PIP_MODE_CHANGED_CALLBACKS;
if (DEBUG) Slog.d(TAG, "animateBounds: target=" + target + " from=" + from + " to=" + to
+ " schedulePipModeChangedState=" + schedulePipModeChangedState
@@ -403,6 +408,9 @@ public class BoundsAnimationController {
return existing;
}
+ // Save the previous state
+ prevSchedulePipModeChangedState = existing.mSchedulePipModeChangedState;
+
// Update the PiP callback states if we are replacing the animation
if (existing.mSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) {
if (schedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) {
@@ -428,7 +436,8 @@ public class BoundsAnimationController {
existing.cancel();
}
final BoundsAnimator animator = new BoundsAnimator(target, from, to,
- schedulePipModeChangedState, moveFromFullscreen, moveToFullscreen, replacing);
+ schedulePipModeChangedState, prevSchedulePipModeChangedState,
+ moveFromFullscreen, moveToFullscreen);
mRunningAnimations.put(target, animator);
animator.setFloatValues(0f, 1f);
animator.setDuration((animationDuration != -1 ? animationDuration
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationTarget.java b/services/core/java/com/android/server/wm/BoundsAnimationTarget.java
index 8b1bf7bf77dc..647a2d6deac6 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationTarget.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationTarget.java
@@ -31,7 +31,7 @@ interface BoundsAnimationTarget {
* @param schedulePipModeChangedCallback whether or not to schedule the PiP mode changed
* callbacks
*/
- void onAnimationStart(boolean schedulePipModeChangedCallback);
+ void onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate);
/**
* Sets the size of the target (without any intermediate steps, like scheduling animation)
diff --git a/services/core/java/com/android/server/wm/ConfigurationContainer.java b/services/core/java/com/android/server/wm/ConfigurationContainer.java
index 1d3f19857ac0..1da94da1b3b6 100644
--- a/services/core/java/com/android/server/wm/ConfigurationContainer.java
+++ b/services/core/java/com/android/server/wm/ConfigurationContainer.java
@@ -16,8 +16,24 @@
package com.android.server.wm;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
+import static android.app.WindowConfiguration.activityTypeToString;
+import static com.android.server.wm.proto.ConfigurationContainerProto.FULL_CONFIGURATION;
+import static com.android.server.wm.proto.ConfigurationContainerProto.MERGED_OVERRIDE_CONFIGURATION;
+import static com.android.server.wm.proto.ConfigurationContainerProto.OVERRIDE_CONFIGURATION;
+
+import android.annotation.CallSuper;
import android.app.WindowConfiguration;
import android.content.res.Configuration;
+import android.util.proto.ProtoOutputStream;
+
+import java.util.ArrayList;
/**
* Contains common logic for classes that have override configurations and are organized in a
@@ -41,6 +57,11 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
*/
private Configuration mMergedOverrideConfiguration = new Configuration();
+ private ArrayList<ConfigurationContainerListener> mChangeListeners = new ArrayList<>();
+
+ // TODO: Can't have ag/2592611 soon enough!
+ private final Configuration mTmpConfig = new Configuration();
+
/**
* Returns full configuration applied to this configuration container.
* This method should be used for getting settings applied in each particular level of the
@@ -80,6 +101,11 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
onConfigurationChanged(parent != null ? parent.getConfiguration() : Configuration.EMPTY);
// Update merged override config of this container and all its children.
onMergedOverrideConfigurationChanged();
+
+ // Inform listeners of the change.
+ for (int i = mChangeListeners.size() - 1; i >=0; --i) {
+ mChangeListeners.get(i).onOverrideConfigurationChanged(overrideConfiguration);
+ }
}
/**
@@ -120,10 +146,100 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
}
/** Sets the windowing mode for the configuration container. */
- void setWindowingMode(/*@WindowConfiguration.WindowingMode TODO: causes build error...why?*/
- int windowingMode) {
- mOverrideConfiguration.windowConfiguration.setWindowingMode(windowingMode);
- onOverrideConfigurationChanged(mOverrideConfiguration);
+ public void setWindowingMode(/*@WindowConfiguration.WindowingMode*/ int windowingMode) {
+ mTmpConfig.setTo(getOverrideConfiguration());
+ mTmpConfig.windowConfiguration.setWindowingMode(windowingMode);
+ onOverrideConfigurationChanged(mTmpConfig);
+ }
+
+ /** Returns true if this container is currently in split-screen windowing mode. */
+ public boolean inSplitScreenWindowingMode() {
+ /*@WindowConfiguration.WindowingMode*/ int windowingMode =
+ mFullConfiguration.windowConfiguration.getWindowingMode();
+
+ return windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY
+ || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
+ }
+
+ /** Returns true if this container is currently in split-screen secondary windowing mode. */
+ public boolean inSplitScreenSecondaryWindowingMode() {
+ /*@WindowConfiguration.WindowingMode*/ int windowingMode =
+ mFullConfiguration.windowConfiguration.getWindowingMode();
+
+ return windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
+ }
+
+ /**
+ * Returns true if this container can be put in either
+ * {@link WindowConfiguration#WINDOWING_MODE_SPLIT_SCREEN_PRIMARY} or
+ * {@link WindowConfiguration##WINDOWING_MODE_SPLIT_SCREEN_SECONDARY} windowing modes based on
+ * its current state.
+ */
+ public boolean supportSplitScreenWindowingMode() {
+ return mFullConfiguration.windowConfiguration.supportSplitScreenWindowingMode();
+ }
+
+ /** Returns the activity type associated with the the configuration container. */
+ /*@WindowConfiguration.ActivityType*/
+ public int getActivityType() {
+ return mFullConfiguration.windowConfiguration.getActivityType();
+ }
+
+ /** Sets the activity type to associate with the configuration container. */
+ public void setActivityType(/*@WindowConfiguration.ActivityType*/ int activityType) {
+ int currentActivityType = getActivityType();
+ if (currentActivityType == activityType) {
+ return;
+ }
+ if (currentActivityType != ACTIVITY_TYPE_UNDEFINED) {
+ throw new IllegalStateException("Can't change activity type once set: " + this
+ + " activityType=" + activityTypeToString(activityType));
+ }
+ mTmpConfig.setTo(getOverrideConfiguration());
+ mTmpConfig.windowConfiguration.setActivityType(activityType);
+ onOverrideConfigurationChanged(mTmpConfig);
+ }
+
+ public boolean isActivityTypeHome() {
+ return getActivityType() == ACTIVITY_TYPE_HOME;
+ }
+
+ public boolean isActivityTypeRecents() {
+ return getActivityType() == ACTIVITY_TYPE_RECENTS;
+ }
+
+ public boolean isActivityTypeAssistant() {
+ return getActivityType() == ACTIVITY_TYPE_ASSISTANT;
+ }
+
+ public boolean isActivityTypeStandard() {
+ return getActivityType() == ACTIVITY_TYPE_STANDARD;
+ }
+
+ public boolean isActivityTypeStandardOrUndefined() {
+ /*@WindowConfiguration.ActivityType*/ final int activityType = getActivityType();
+ return activityType == ACTIVITY_TYPE_STANDARD || activityType == ACTIVITY_TYPE_UNDEFINED;
+ }
+
+ public boolean hasCompatibleActivityType(ConfigurationContainer other) {
+ /*@WindowConfiguration.ActivityType*/ int thisType = getActivityType();
+ /*@WindowConfiguration.ActivityType*/ int otherType = other.getActivityType();
+
+ return thisType == otherType
+ || thisType == ACTIVITY_TYPE_UNDEFINED
+ || otherType == ACTIVITY_TYPE_UNDEFINED;
+ }
+
+ public void registerConfigurationChangeListener(ConfigurationContainerListener listener) {
+ if (mChangeListeners.contains(listener)) {
+ return;
+ }
+ mChangeListeners.add(listener);
+ listener.onOverrideConfigurationChanged(mOverrideConfiguration);
+ }
+
+ public void unregisterConfigurationChangeListener(ConfigurationContainerListener listener) {
+ mChangeListeners.remove(listener);
}
/**
@@ -141,6 +257,24 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
}
}
+ /**
+ * Write to a protocol buffer output stream. Protocol buffer message definition is at
+ * {@link com.android.server.wm.proto.ConfigurationContainerProto}.
+ *
+ * @param protoOutputStream Stream to write the ConfigurationContainer object to.
+ * @param fieldId Field Id of the ConfigurationContainer as defined in the parent
+ * message.
+ * @hide
+ */
+ @CallSuper
+ public void writeToProto(ProtoOutputStream protoOutputStream, long fieldId) {
+ final long token = protoOutputStream.start(fieldId);
+ mOverrideConfiguration.writeToProto(protoOutputStream, OVERRIDE_CONFIGURATION);
+ mFullConfiguration.writeToProto(protoOutputStream, FULL_CONFIGURATION);
+ mMergedOverrideConfiguration.writeToProto(protoOutputStream, MERGED_OVERRIDE_CONFIGURATION);
+ protoOutputStream.end(token);
+ }
+
abstract protected int getChildCount();
abstract protected E getChildAt(int index);
diff --git a/services/core/java/com/android/server/wm/ConfigurationContainerListener.java b/services/core/java/com/android/server/wm/ConfigurationContainerListener.java
new file mode 100644
index 000000000000..ff14d9784b04
--- /dev/null
+++ b/services/core/java/com/android/server/wm/ConfigurationContainerListener.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2017 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.wm;
+
+import android.content.res.Configuration;
+
+/**
+ * Interface for listening to changes in a {@link ConfigurationContainer}.
+ */
+public interface ConfigurationContainerListener {
+
+ void onOverrideConfigurationChanged(Configuration overrideConfiguration);
+}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index bf1c3f746326..98a1bd359b55 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -60,6 +60,7 @@ import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_CONFIG;
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
+import static com.android.server.wm.AppTransition.TRANSIT_KEYGUARD_UNOCCLUDE;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_BOOT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY;
@@ -108,8 +109,12 @@ import static com.android.server.wm.proto.DisplayProto.DPI;
import static com.android.server.wm.proto.DisplayProto.ID;
import static com.android.server.wm.proto.DisplayProto.IME_WINDOWS;
import static com.android.server.wm.proto.DisplayProto.PINNED_STACK_CONTROLLER;
+import static com.android.server.wm.proto.DisplayProto.ROTATION;
+import static com.android.server.wm.proto.DisplayProto.SCREEN_ROTATION_ANIMATION;
import static com.android.server.wm.proto.DisplayProto.STACKS;
+import static com.android.server.wm.proto.DisplayProto.WINDOW_CONTAINER;
+import android.annotation.CallSuper;
import android.annotation.NonNull;
import android.app.ActivityManager.StackId;
import android.app.WindowConfiguration;
@@ -1081,10 +1086,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
}
forAllWindows(w -> {
- // Discard surface after orientation change, these can't be reused.
- if (w.mAppToken != null) {
- w.mAppToken.destroySavedSurfaces();
- }
if (w.mHasSurface && !rotateSeamlessly) {
if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Set mOrientationChanging of " + w);
w.setOrientationChanging(true);
@@ -1721,21 +1722,22 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
out.set(mContentRect);
}
- TaskStack addStackToDisplay(int stackId, boolean onTop) {
+ TaskStack addStackToDisplay(int stackId, boolean onTop, StackWindowController controller) {
if (DEBUG_STACK) Slog.d(TAG_WM, "Create new stackId=" + stackId + " on displayId="
+ mDisplayId);
TaskStack stack = getStackById(stackId);
if (stack != null) {
- // It's already attached to the display...clear mDeferRemoval and move stack to
- // appropriate z-order on display as needed.
+ // It's already attached to the display...clear mDeferRemoval, set controller, and move
+ // stack to appropriate z-order on display as needed.
stack.mDeferRemoval = false;
+ stack.setController(controller);
// We're not moving the display to front when we're adding stacks, only when
// requested to change the position of stack explicitly.
mTaskStackContainers.positionChildAt(onTop ? POSITION_TOP : POSITION_BOTTOM, stack,
false /* includingParents */);
} else {
- stack = new TaskStack(mService, stackId);
+ stack = new TaskStack(mService, stackId, controller);
mTaskStackContainers.addStackToDisplay(stack, onTop);
}
@@ -1916,9 +1918,13 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
super.removeImmediately();
if (DEBUG_DISPLAY) Slog.v(TAG_WM, "Removing display=" + this);
mDimLayerController.close();
- if (mDisplayId == DEFAULT_DISPLAY && mService.canDispatchPointerEvents()) {
- mService.unregisterPointerEventListener(mTapDetector);
- mService.unregisterPointerEventListener(mService.mMousePositionTracker);
+ if (mService.canDispatchPointerEvents()) {
+ if (mTapDetector != null) {
+ mService.unregisterPointerEventListener(mTapDetector);
+ }
+ if (mDisplayId == DEFAULT_DISPLAY && mService.mMousePositionTracker != null) {
+ mService.unregisterPointerEventListener(mService.mMousePositionTracker);
+ }
}
} finally {
mRemovingDisplay = false;
@@ -2116,8 +2122,11 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
}
}
- void writeToProto(ProtoOutputStream proto, long fieldId) {
+ @CallSuper
+ @Override
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
final long token = proto.start(fieldId);
+ super.writeToProto(proto, WINDOW_CONTAINER);
proto.write(ID, mDisplayId);
for (int stackNdx = mTaskStackContainers.size() - 1; stackNdx >= 0; --stackNdx) {
final TaskStack stack = mTaskStackContainers.get(stackNdx);
@@ -2139,6 +2148,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
}
proto.write(DPI, mBaseDisplayDensity);
mDisplayInfo.writeToProto(proto, DISPLAY_INFO);
+ proto.write(ROTATION, mRotation);
+ final ScreenRotationAnimation screenRotationAnimation =
+ mService.mAnimator.getScreenRotationAnimationLocked(mDisplayId);
+ if (screenRotationAnimation != null) {
+ screenRotationAnimation.writeToProto(proto, SCREEN_ROTATION_ANIMATION);
+ }
proto.end(token);
}
@@ -2168,8 +2183,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
pw.print("x"); pw.print(mDisplayInfo.smallestNominalAppHeight);
pw.print("-"); pw.print(mDisplayInfo.largestNominalAppWidth);
pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight);
- pw.println(subPrefix + "deferred=" + mDeferredRemoval
+ pw.print(subPrefix + "deferred=" + mDeferredRemoval
+ " mLayoutNeeded=" + mLayoutNeeded);
+ pw.println(" mTouchExcludeRegion=" + mTouchExcludeRegion);
pw.println();
pw.println(prefix + "Application tokens in top down Z order:");
@@ -2345,8 +2361,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
} else if (w.mAppToken != null && w.mAppToken.isClientHidden()) {
Slog.w(TAG_WM, "LEAKED SURFACE (app token hidden): "
+ w + " surface=" + wsa.mSurfaceController
- + " token=" + w.mAppToken
- + " saved=" + w.hasSavedSurface());
+ + " token=" + w.mAppToken);
if (SHOW_TRANSACTIONS) logSurface(w, "LEAK DESTROY", false);
wsa.destroySurface();
mTmpWindow = w;
@@ -3061,7 +3076,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
final boolean foundTargetWs =
(w.mAppToken != null && w.mAppToken.token == appToken)
|| (mScreenshotApplicationState.appWin != null && wallpaperOnly);
- if (foundTargetWs && winAnim.getShown()) {
+ if (foundTargetWs && winAnim.getShown() && winAnim.mLastAlpha > 0f) {
mScreenshotApplicationState.screenshotReady = true;
}
@@ -3598,7 +3613,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
mLastWindowForcedOrientation = SCREEN_ORIENTATION_UNSPECIFIED;
- if (policy.isKeyguardShowingAndNotOccluded()) {
+ if (policy.isKeyguardShowingAndNotOccluded()
+ || mService.mAppTransition.getAppTransition() == TRANSIT_KEYGUARD_UNOCCLUDE) {
return mLastKeyguardForcedOrientation;
}
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index ce21991e1b3e..030b986ef0e9 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -608,8 +608,7 @@ public class DockedStackDividerController implements DimLayerUser {
final TaskStack fullscreenStack =
mDisplayContent.getStackById(FULLSCREEN_WORKSPACE_STACK_ID);
final boolean homeVisible = homeTask.getTopVisibleAppToken() != null;
- final boolean homeBehind = (fullscreenStack != null && fullscreenStack.isVisible())
- || (homeStack.hasMultipleTaskWithHomeTaskNotTop());
+ final boolean homeBehind = fullscreenStack != null && fullscreenStack.isVisible();
setMinimizedDockedStack(homeVisible && !homeBehind, animate);
}
diff --git a/services/core/java/com/android/server/wm/PinnedStackWindowController.java b/services/core/java/com/android/server/wm/PinnedStackWindowController.java
index 3f81b389b31c..590ac6ed94e8 100644
--- a/services/core/java/com/android/server/wm/PinnedStackWindowController.java
+++ b/services/core/java/com/android/server/wm/PinnedStackWindowController.java
@@ -40,9 +40,8 @@ public class PinnedStackWindowController extends StackWindowController {
private Rect mTmpToBounds = new Rect();
public PinnedStackWindowController(int stackId, PinnedStackWindowListener listener,
- int displayId, boolean onTop, Rect outBounds, Configuration outOverrideConfig) {
- super(stackId, listener, displayId, onTop, outBounds, outOverrideConfig,
- WindowManagerService.getInstance());
+ int displayId, boolean onTop, Rect outBounds) {
+ super(stackId, listener, displayId, onTop, outBounds, WindowManagerService.getInstance());
}
/**
@@ -204,10 +203,12 @@ public class PinnedStackWindowController extends StackWindowController {
*/
/** Calls directly into activity manager so window manager lock shouldn't held. */
- public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds) {
+ public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds,
+ boolean forceUpdate) {
if (mListener != null) {
PinnedStackWindowListener listener = (PinnedStackWindowListener) mListener;
- listener.updatePictureInPictureModeForPinnedStackAnimation(targetStackBounds);
+ listener.updatePictureInPictureModeForPinnedStackAnimation(targetStackBounds,
+ forceUpdate);
}
}
}
diff --git a/services/core/java/com/android/server/wm/PinnedStackWindowListener.java b/services/core/java/com/android/server/wm/PinnedStackWindowListener.java
index 12b9c1f0c552..33e8a60329bf 100644
--- a/services/core/java/com/android/server/wm/PinnedStackWindowListener.java
+++ b/services/core/java/com/android/server/wm/PinnedStackWindowListener.java
@@ -28,5 +28,6 @@ public interface PinnedStackWindowListener extends StackWindowListener {
* Called when the stack container pinned stack animation will change the picture-in-picture
* mode. This is a direct call into ActivityManager.
*/
- default void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds) {}
+ default void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds,
+ boolean forceUpdate) {}
}
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 05ef1a5fe106..227e4b2b59af 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -16,9 +16,9 @@
package com.android.server.wm;
+import android.annotation.CallSuper;
import android.content.res.Configuration;
import android.graphics.Rect;
-import android.hardware.display.DisplayManager;
import android.hardware.power.V1_0.PowerHint;
import android.os.Binder;
import android.os.Debug;
@@ -32,6 +32,7 @@ import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
+import android.util.ArraySet;
import android.util.EventLog;
import android.util.Slog;
import android.util.SparseIntArray;
@@ -89,8 +90,9 @@ import static com.android.server.wm.WindowSurfacePlacer.SET_TURN_ON_SCREEN;
import static com.android.server.wm.WindowSurfacePlacer.SET_UPDATE_ROTATION;
import static com.android.server.wm.WindowSurfacePlacer.SET_WALLPAPER_ACTION_PENDING;
import static com.android.server.wm.WindowSurfacePlacer.SET_WALLPAPER_MAY_CHANGE;
-import static com.android.server.wm.proto.WindowManagerServiceProto.DISPLAYS;
-import static com.android.server.wm.proto.WindowManagerServiceProto.WINDOWS;
+import static com.android.server.wm.proto.RootWindowContainerProto.DISPLAYS;
+import static com.android.server.wm.proto.RootWindowContainerProto.WINDOWS;
+import static com.android.server.wm.proto.RootWindowContainerProto.WINDOW_CONTAINER;
/** Root {@link WindowContainer} for the device. */
class RootWindowContainer extends WindowContainer<DisplayContent> {
@@ -249,13 +251,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
// Tap Listeners are supported for:
// 1. All physical displays (multi-display).
- // 2. VirtualDisplays that support virtual touch input. (Only VR for now)
- // TODO(multi-display): Support VirtualDisplays with no virtual touch input.
- if ((display.getType() != Display.TYPE_VIRTUAL
- || (display.getType() == Display.TYPE_VIRTUAL
- // Only VR VirtualDisplays
- && displayId == mService.mVr2dDisplayId))
- && mService.canDispatchPointerEvents()) {
+ // 2. VirtualDisplays on VR, AA (and everything else).
+ if (mService.canDispatchPointerEvents()) {
if (DEBUG_DISPLAY) {
Slog.d(TAG,
"Registering PointerEventListener for DisplayId: " + displayId);
@@ -665,19 +662,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
defaultDisplay.pendingLayoutChanges);
}
- for (i = mService.mResizingWindows.size() - 1; i >= 0; i--) {
- WindowState win = mService.mResizingWindows.get(i);
- if (win.mAppFreezing) {
- // Don't remove this window until rotation has completed.
- continue;
- }
- // Discard the saved surface if window size is changed, it can't be reused.
- if (win.mAppToken != null) {
- win.mAppToken.destroySavedSurfaces();
- }
- win.reportResized();
- mService.mResizingWindows.remove(i);
- }
+ final ArraySet<DisplayContent> touchExcludeRegionUpdateDisplays = handleResizingWindows();
if (DEBUG_ORIENTATION && mService.mDisplayFrozen) Slog.v(TAG,
"With display frozen, orientationChangeComplete=" + mOrientationChangeComplete);
@@ -704,7 +689,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
if (win.getDisplayContent().mWallpaperController.isWallpaperTarget(win)) {
wallpaperDestroyed = true;
}
- win.destroyOrSaveSurfaceUnchecked();
+ win.destroySurfaceUnchecked();
} while (i > 0);
mService.mDestroySurface.clear();
}
@@ -819,6 +804,16 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
mService.mInputMonitor.updateInputWindowsLw(false /*force*/);
}
mService.setFocusTaskRegionLocked(null);
+ if (touchExcludeRegionUpdateDisplays != null) {
+ final DisplayContent focusedDc = mService.mFocusedApp != null
+ ? mService.mFocusedApp.getDisplayContent() : null;
+ for (DisplayContent dc : touchExcludeRegionUpdateDisplays) {
+ // The focused DisplayContent was recalcuated in setFocusTaskRegionLocked
+ if (focusedDc != dc) {
+ dc.setTouchExcludeRegion(null /* focusedTask */);
+ }
+ }
+ }
// Check to see if we are now in a state where the screen should
// be enabled, because the window obscured flags have changed.
@@ -870,6 +865,33 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
}
/**
+ * Handles resizing windows during surface placement.
+ *
+ * @return A set of any DisplayContent whose touch exclude region needs to be recalculated due
+ * to a tap-exclude window resizing, or null if no such DisplayContents were found.
+ */
+ private ArraySet<DisplayContent> handleResizingWindows() {
+ ArraySet<DisplayContent> touchExcludeRegionUpdateSet = null;
+ for (int i = mService.mResizingWindows.size() - 1; i >= 0; i--) {
+ WindowState win = mService.mResizingWindows.get(i);
+ if (win.mAppFreezing) {
+ // Don't remove this window until rotation has completed.
+ continue;
+ }
+ win.reportResized();
+ mService.mResizingWindows.remove(i);
+ if (WindowManagerService.excludeWindowTypeFromTapOutTask(win.mAttrs.type)) {
+ final DisplayContent dc = win.getDisplayContent();
+ if (touchExcludeRegionUpdateSet == null) {
+ touchExcludeRegionUpdateSet = new ArraySet<>();
+ }
+ touchExcludeRegionUpdateSet.add(dc);
+ }
+ }
+ return touchExcludeRegionUpdateSet;
+ }
+
+ /**
* @param w WindowState this method is applied to.
* @param obscured True if there is a window on top of this obscuring the display.
* @param syswin System window?
@@ -1057,7 +1079,11 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
}
}
- void writeToProto(ProtoOutputStream proto) {
+ @CallSuper
+ @Override
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ super.writeToProto(proto, WINDOW_CONTAINER);
if (mService.mDisplayReady) {
final int count = mChildren.size();
for (int i = 0; i < count; ++i) {
@@ -1068,6 +1094,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent> {
forAllWindows((w) -> {
w.writeIdentifierToProto(proto, WINDOWS);
}, true);
+ proto.end(token);
}
@Override
diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
index 08a9caa80d1e..d5b6d24631e6 100644
--- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -25,12 +25,15 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerService.TYPE_LAYER_MULTIPLIER;
import static com.android.server.wm.WindowStateAnimator.WINDOW_FREEZE_LAYER;
import static com.android.server.wm.WindowSurfaceController.SurfaceTrace;
+import static com.android.server.wm.proto.ScreenRotationAnimationProto.ANIMATION_RUNNING;
+import static com.android.server.wm.proto.ScreenRotationAnimationProto.STARTED;
import android.content.Context;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.util.Slog;
+import android.util.proto.ProtoOutputStream;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.Surface;
@@ -198,7 +201,7 @@ class ScreenRotationAnimation {
pw.print(prefix); pw.print("mEnterTransformation=");
mEnterTransformation.printShortString(pw); pw.println();
pw.print(prefix); pw.print("mFrameTransformation=");
- mEnterTransformation.printShortString(pw); pw.println();
+ mFrameTransformation.printShortString(pw); pw.println();
pw.print(prefix); pw.print("mFrameInitialMatrix=");
mFrameInitialMatrix.printShortString(pw);
pw.println();
@@ -216,6 +219,13 @@ class ScreenRotationAnimation {
}
}
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
+ final long token = proto.start(fieldId);
+ proto.write(STARTED, mStarted);
+ proto.write(ANIMATION_RUNNING, mAnimRunning);
+ proto.end(token);
+ }
+
public ScreenRotationAnimation(Context context, DisplayContent displayContent,
SurfaceSession session, boolean inTransaction, boolean forceDefaultOrientation,
boolean isSecure, WindowManagerService service) {
diff --git a/services/core/java/com/android/server/wm/StackWindowController.java b/services/core/java/com/android/server/wm/StackWindowController.java
index 3f6378a2ad24..c0a4cb72a348 100644
--- a/services/core/java/com/android/server/wm/StackWindowController.java
+++ b/services/core/java/com/android/server/wm/StackWindowController.java
@@ -18,8 +18,6 @@ package com.android.server.wm;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
-import android.app.ActivityManager.StackId;
-import android.app.WindowConfiguration;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.Handler;
@@ -57,16 +55,14 @@ public class StackWindowController
private final Rect mTmpNonDecorInsets = new Rect();
private final Rect mTmpDisplayBounds = new Rect();
- public StackWindowController(int stackId, StackWindowListener listener,
- int displayId, boolean onTop, Rect outBounds, Configuration outOverriderConfig) {
- this(stackId, listener, displayId, onTop, outBounds, outOverriderConfig,
- WindowManagerService.getInstance());
+ public StackWindowController(int stackId, StackWindowListener listener, int displayId,
+ boolean onTop, Rect outBounds) {
+ this(stackId, listener, displayId, onTop, outBounds, WindowManagerService.getInstance());
}
@VisibleForTesting
public StackWindowController(int stackId, StackWindowListener listener,
- int displayId, boolean onTop, Rect outBounds, Configuration outOverrideConfig,
- WindowManagerService service) {
+ int displayId, boolean onTop, Rect outBounds, WindowManagerService service) {
super(listener, service);
mStackId = stackId;
mHandler = new H(new WeakReference<>(this), service.mH.getLooper());
@@ -78,10 +74,8 @@ public class StackWindowController
+ " to unknown displayId=" + displayId);
}
- final TaskStack stack = dc.addStackToDisplay(stackId, onTop);
- stack.setController(this);
+ dc.addStackToDisplay(stackId, onTop, this);
getRawBounds(outBounds);
- outOverrideConfig.setTo(mContainer.getOverrideConfiguration());
}
}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 60384f27d594..7464a9b92d40 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -34,7 +34,9 @@ import static com.android.server.wm.proto.TaskProto.BOUNDS;
import static com.android.server.wm.proto.TaskProto.FILLS_PARENT;
import static com.android.server.wm.proto.TaskProto.ID;
import static com.android.server.wm.proto.TaskProto.TEMP_INSET_BOUNDS;
+import static com.android.server.wm.proto.TaskProto.WINDOW_CONTAINER;
+import android.annotation.CallSuper;
import android.app.ActivityManager.StackId;
import android.app.ActivityManager.TaskDescription;
import android.content.pm.ActivityInfo;
@@ -97,19 +99,16 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU
private boolean mDragResizing;
private int mDragResizeMode;
- private boolean mHomeTask;
-
private TaskDescription mTaskDescription;
// If set to true, the task will report that it is not in the floating
- // state regardless of it's stack affilation. As the floating state drives
+ // state regardless of it's stack affiliation. As the floating state drives
// production of content insets this can be used to preserve them across
// stack moves and we in fact do so when moving from full screen to pinned.
private boolean mPreserveNonFloatingState = false;
Task(int taskId, TaskStack stack, int userId, WindowManagerService service, Rect bounds,
- Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture,
- boolean homeTask, TaskDescription taskDescription,
+ int resizeMode, boolean supportsPictureInPicture, TaskDescription taskDescription,
TaskWindowContainerController controller) {
mTaskId = taskId;
mStack = stack;
@@ -117,9 +116,8 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU
mService = service;
mResizeMode = resizeMode;
mSupportsPictureInPicture = supportsPictureInPicture;
- mHomeTask = homeTask;
setController(controller);
- setBounds(bounds, overrideConfig);
+ setBounds(bounds, getOverrideConfiguration());
mTaskDescription = taskDescription;
// Tasks have no set orientation value (including SCREEN_ORIENTATION_UNSPECIFIED).
@@ -277,6 +275,9 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU
}
/** Set the task bounds. Passing in null sets the bounds to fullscreen. */
+ // TODO: There is probably not a need to pass in overrideConfig anymore since any change to it
+ // will be automatically propagated from the AM. Also, mBound is going to be in
+ // WindowConfiguration long term.
private int setBounds(Rect bounds, Configuration overrideConfig) {
if (overrideConfig == null) {
overrideConfig = Configuration.EMPTY;
@@ -370,10 +371,6 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU
return isResizeable();
}
- boolean isHomeTask() {
- return mHomeTask;
- }
-
boolean resizeLocked(Rect bounds, Configuration overrideConfig, boolean forced) {
int boundsChanged = setBounds(bounds, overrideConfig);
if (forced) {
@@ -426,9 +423,9 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU
/** Return true if the current bound can get outputted to the rest of the system as-is. */
private boolean useCurrentBounds() {
- final DisplayContent displayContent = mStack.getDisplayContent();
+ final DisplayContent displayContent = getDisplayContent();
return mFillsParent
- || !StackId.isTaskResizeableByDockedStack(mStack.mStackId)
+ || !inSplitScreenSecondaryWindowingMode()
|| displayContent == null
|| displayContent.getDockedStackIgnoringVisibility() != null;
}
@@ -740,8 +737,11 @@ class Task extends WindowContainer<AppWindowToken> implements DimLayer.DimLayerU
return "Task=" + mTaskId;
}
- void writeToProto(ProtoOutputStream proto, long fieldId) {
+ @CallSuper
+ @Override
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
final long token = proto.start(fieldId);
+ super.writeToProto(proto, WINDOW_CONTAINER);
proto.write(ID, mTaskId);
for (int i = mChildren.size() - 1; i >= 0; i--) {
final AppWindowToken appWindowToken = mChildren.get(i);
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index ecf9067b55c9..751769a63d62 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -16,8 +16,6 @@
package com.android.server.wm;
-import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS;
-
import static com.android.server.wm.TaskSnapshotPersister.DISABLE_FULL_SIZED_BITMAPS;
import static com.android.server.wm.TaskSnapshotPersister.REDUCED_SCALE;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
@@ -225,7 +223,7 @@ class TaskSnapshotController {
}
private boolean shouldDisableSnapshots() {
- return !ENABLE_TASK_SNAPSHOTS || mIsRunningOnWear || mIsRunningOnTv || mIsRunningOnIoT;
+ return mIsRunningOnWear || mIsRunningOnTv || mIsRunningOnIoT;
}
private Rect minRect(Rect rect1, Rect rect2) {
@@ -299,7 +297,7 @@ class TaskSnapshotController {
return new TaskSnapshot(hwBitmap.createGraphicBufferHandle(),
topChild.getConfiguration().orientation, mainWindow.mStableInsets,
- false /* reduced */, 1.0f /* scale */);
+ ActivityManager.isLowRamDeviceStatic() /* reduced */, 1.0f /* scale */);
}
/**
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
index 1252aee14964..7b047a80d572 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java
@@ -53,7 +53,7 @@ class TaskSnapshotPersister {
private static final String TAG = TAG_WITH_CLASS_NAME ? "TaskSnapshotPersister" : TAG_WM;
private static final String SNAPSHOTS_DIRNAME = "snapshots";
private static final String REDUCED_POSTFIX = "_reduced";
- static final float REDUCED_SCALE = 0.5f;
+ static final float REDUCED_SCALE = ActivityManager.isLowRamDeviceStatic() ? 0.6f : 0.5f;
static final boolean DISABLE_FULL_SIZED_BITMAPS = ActivityManager.isLowRamDeviceStatic();
private static final long DELAY_MS = 100;
private static final int QUALITY = 95;
@@ -333,7 +333,6 @@ class TaskSnapshotPersister {
}
boolean writeBuffer() {
- final File file = getBitmapFile(mTaskId, mUserId);
final Bitmap bitmap = Bitmap.createHardwareBitmap(mSnapshot.getSnapshot());
if (bitmap == null) {
Slog.e(TAG, "Invalid task snapshot hw bitmap");
@@ -361,6 +360,7 @@ class TaskSnapshotPersister {
return true;
}
+ final File file = getBitmapFile(mTaskId, mUserId);
try {
FileOutputStream fos = new FileOutputStream(file);
swBitmap.compress(JPEG, QUALITY, fos);
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 8a4a49af1223..7cb90de49b1a 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -18,18 +18,9 @@ package com.android.server.wm;
import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT;
import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT;
-import static android.app.ActivityManager.StackId.ASSISTANT_STACK_ID;
import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
-import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
-import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.StackId.HOME_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
-import static android.app.ActivityManager.StackId.RECENTS_STACK_ID;
-import static android.app.WindowConfiguration.WINDOWING_MODE_DOCKED;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
-import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
-import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
import static android.content.res.Configuration.DENSITY_DPI_UNDEFINED;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
@@ -50,9 +41,10 @@ import static com.android.server.wm.proto.StackProto.BOUNDS;
import static com.android.server.wm.proto.StackProto.FILLS_PARENT;
import static com.android.server.wm.proto.StackProto.ID;
import static com.android.server.wm.proto.StackProto.TASKS;
+import static com.android.server.wm.proto.StackProto.WINDOW_CONTAINER;
+import android.annotation.CallSuper;
import android.app.ActivityManager.StackId;
-import android.app.WindowConfiguration;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.graphics.Region;
@@ -157,38 +149,13 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
Rect mPreAnimationBounds = new Rect();
- TaskStack(WindowManagerService service, int stackId) {
+ TaskStack(WindowManagerService service, int stackId, StackWindowController controller) {
mService = service;
mStackId = stackId;
+ setController(controller);
mDockedStackMinimizeThickness = service.mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.docked_stack_minimize_thickness);
EventLog.writeEvent(EventLogTags.WM_STACK_CREATED, stackId);
-
- // TODO: Remove once we are no longer using Stacks for windowing mode or grouping tasks.
- final int windowingMode;
- switch (stackId) {
- case FULLSCREEN_WORKSPACE_STACK_ID:
- case HOME_STACK_ID:
- case RECENTS_STACK_ID:
- case ASSISTANT_STACK_ID:
- windowingMode = WINDOWING_MODE_FULLSCREEN;
- break;
- case PINNED_STACK_ID:
- windowingMode = WINDOWING_MODE_PINNED;
- break;
- case DOCKED_STACK_ID:
- windowingMode = WINDOWING_MODE_DOCKED;
- break;
- case FREEFORM_WORKSPACE_STACK_ID:
- windowingMode = WINDOWING_MODE_FREEFORM;
- break;
- default :
- windowingMode = WINDOWING_MODE_UNDEFINED;
- }
-
- if (windowingMode != WINDOWING_MODE_UNDEFINED) {
- setWindowingMode(windowingMode);
- }
}
DisplayContent getDisplayContent() {
@@ -196,20 +163,10 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
}
Task findHomeTask() {
- if (mStackId != HOME_STACK_ID) {
+ if (!isActivityTypeHome() || mChildren.isEmpty()) {
return null;
}
-
- for (int i = mChildren.size() - 1; i >= 0; i--) {
- if (mChildren.get(i).isHomeTask()) {
- return mChildren.get(i);
- }
- }
- return null;
- }
-
- boolean hasMultipleTaskWithHomeTaskNotTop() {
- return mChildren.size() > 1 && !mChildren.get(mChildren.size() - 1).isHomeTask();
+ return mChildren.get(mChildren.size() - 1);
}
/**
@@ -335,7 +292,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
/** Return true if the current bound can get outputted to the rest of the system as-is. */
private boolean useCurrentBounds() {
if (mFillsParent
- || !StackId.isResizeableByDockedStack(mStackId)
+ || !inSplitScreenSecondaryWindowingMode()
|| mDisplayContent == null
|| mDisplayContent.getDockedStackLocked() != null) {
return true;
@@ -730,7 +687,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
Rect bounds = null;
final TaskStack dockedStack = dc.getDockedStackIgnoringVisibility();
if (mStackId == DOCKED_STACK_ID
- || (dockedStack != null && StackId.isResizeableByDockedStack(mStackId)
+ || (dockedStack != null && inSplitScreenSecondaryWindowingMode()
&& !dockedStack.fillsParent())) {
// The existence of a docked stack affects the size of other static stack created since
// the docked stack occupies a dedicated region on screen, but only if the dock stack is
@@ -802,8 +759,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
return;
}
- if ((mStackId != DOCKED_STACK_ID && !StackId.isResizeableByDockedStack(mStackId))
- || mDisplayContent == null) {
+ if (!inSplitScreenWindowingMode() || mDisplayContent == null) {
outStackBounds.set(mBounds);
return;
}
@@ -1266,8 +1222,11 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
return mMinimizeAmount != 0f;
}
- void writeToProto(ProtoOutputStream proto, long fieldId) {
+ @CallSuper
+ @Override
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
final long token = proto.start(fieldId);
+ super.writeToProto(proto, WINDOW_CONTAINER);
proto.write(ID, mStackId);
for (int taskNdx = mChildren.size() - 1; taskNdx >= 0; taskNdx--) {
mChildren.get(taskNdx).writeToProto(proto, TASKS);
@@ -1370,8 +1329,8 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
return getDockSide(mBounds);
}
- int getDockSide(Rect bounds) {
- if (mStackId != DOCKED_STACK_ID && !StackId.isResizeableByDockedStack(mStackId)) {
+ private int getDockSide(Rect bounds) {
+ if (!inSplitScreenWindowingMode()) {
return DOCKED_INVALID;
}
if (mDisplayContent == null) {
@@ -1496,7 +1455,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
* small portion which the home stack currently is resized to.
*/
- if (task.isHomeTask() && isMinimizedDockAndHomeStackResizable()) {
+ if (task.isActivityTypeHome() && isMinimizedDockAndHomeStackResizable()) {
mDisplayContent.getLogicalDisplayRect(mTmpRect);
} else {
task.getDimBounds(mTmpRect);
@@ -1551,7 +1510,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
}
@Override // AnimatesBounds
- public void onAnimationStart(boolean schedulePipModeChangedCallback) {
+ public void onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate) {
// Hold the lock since this is called from the BoundsAnimator running on the UiThread
synchronized (mService.mWindowMap) {
mBoundsAnimatingRequested = false;
@@ -1576,9 +1535,11 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
final PinnedStackWindowController controller =
(PinnedStackWindowController) getController();
if (schedulePipModeChangedCallback && controller != null) {
- // We need to schedule the PiP mode change after the animation down, so use the
- // final bounds
- controller.updatePictureInPictureModeForPinnedStackAnimation(null);
+ // We need to schedule the PiP mode change before the animation up. It is possible
+ // in this case for the animation down to not have been completed, so always
+ // force-schedule and update to the client to ensure that it is notified that it
+ // is no longer in picture-in-picture mode
+ controller.updatePictureInPictureModeForPinnedStackAnimation(null, forceUpdate);
}
}
}
@@ -1606,7 +1567,7 @@ public class TaskStack extends WindowContainer<Task> implements DimLayer.DimLaye
// We need to schedule the PiP mode change after the animation down, so use the
// final bounds
controller.updatePictureInPictureModeForPinnedStackAnimation(
- mBoundsAnimationTarget);
+ mBoundsAnimationTarget, false /* forceUpdate */);
}
if (finalStackSize != null) {
diff --git a/services/core/java/com/android/server/wm/TaskWindowContainerController.java b/services/core/java/com/android/server/wm/TaskWindowContainerController.java
index 54a6cc01c831..65f8cdf3acc0 100644
--- a/services/core/java/com/android/server/wm/TaskWindowContainerController.java
+++ b/services/core/java/com/android/server/wm/TaskWindowContainerController.java
@@ -49,19 +49,17 @@ public class TaskWindowContainerController
private final H mHandler;
public TaskWindowContainerController(int taskId, TaskWindowContainerListener listener,
- StackWindowController stackController, int userId, Rect bounds,
- Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture,
- boolean homeTask, boolean toTop, boolean showForAllUsers,
+ StackWindowController stackController, int userId, Rect bounds, int resizeMode,
+ boolean supportsPictureInPicture, boolean toTop, boolean showForAllUsers,
TaskDescription taskDescription) {
- this(taskId, listener, stackController, userId, bounds, overrideConfig, resizeMode,
- supportsPictureInPicture, homeTask, toTop, showForAllUsers, taskDescription,
+ this(taskId, listener, stackController, userId, bounds, resizeMode,
+ supportsPictureInPicture, toTop, showForAllUsers, taskDescription,
WindowManagerService.getInstance());
}
public TaskWindowContainerController(int taskId, TaskWindowContainerListener listener,
- StackWindowController stackController, int userId, Rect bounds,
- Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture,
- boolean homeTask, boolean toTop, boolean showForAllUsers,
+ StackWindowController stackController, int userId, Rect bounds, int resizeMode,
+ boolean supportsPictureInPicture, boolean toTop, boolean showForAllUsers,
TaskDescription taskDescription, WindowManagerService service) {
super(listener, service);
mTaskId = taskId;
@@ -77,8 +75,8 @@ public class TaskWindowContainerController
+ stackController);
}
EventLog.writeEvent(WM_TASK_CREATED, taskId, stack.mStackId);
- final Task task = createTask(taskId, stack, userId, bounds, overrideConfig, resizeMode,
- supportsPictureInPicture, homeTask, taskDescription);
+ final Task task = createTask(taskId, stack, userId, bounds, resizeMode,
+ supportsPictureInPicture, taskDescription);
final int position = toTop ? POSITION_TOP : POSITION_BOTTOM;
// We only want to move the parents to the parents if we are creating this task at the
// top of its stack.
@@ -87,11 +85,10 @@ public class TaskWindowContainerController
}
@VisibleForTesting
- Task createTask(int taskId, TaskStack stack, int userId, Rect bounds,
- Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture,
- boolean homeTask, TaskDescription taskDescription) {
- return new Task(taskId, stack, userId, mService, bounds, overrideConfig, resizeMode,
- supportsPictureInPicture, homeTask, taskDescription, this);
+ Task createTask(int taskId, TaskStack stack, int userId, Rect bounds, int resizeMode,
+ boolean supportsPictureInPicture, TaskDescription taskDescription) {
+ return new Task(taskId, stack, userId, mService, bounds, resizeMode,
+ supportsPictureInPicture, taskDescription, this);
}
@Override
diff --git a/services/core/java/com/android/server/wm/WindowAnimator.java b/services/core/java/com/android/server/wm/WindowAnimator.java
index 079ae40bcb48..c01ee31e8c1c 100644
--- a/services/core/java/com/android/server/wm/WindowAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowAnimator.java
@@ -272,7 +272,6 @@ public class WindowAnimator {
mRemoveReplacedWindows = false;
}
- mService.stopUsingSavedSurfaceLocked();
mService.destroyPreservedSurfaceLocked();
mService.mWindowPlacerLocked.destroyPendingSurfaces();
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index bf79dfa15ea5..40923c8216c0 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -19,12 +19,14 @@ package com.android.server.wm;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
-import static android.content.res.Configuration.EMPTY;
+import static com.android.server.wm.proto.WindowContainerProto.CONFIGURATION_CONTAINER;
+import static com.android.server.wm.proto.WindowContainerProto.ORIENTATION;
import android.annotation.CallSuper;
import android.content.res.Configuration;
import android.util.Pools;
+import android.util.proto.ProtoOutputStream;
import com.android.internal.util.ToBooleanFunction;
import java.util.Comparator;
@@ -363,13 +365,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
}
}
- void setVisibleBeforeClientHidden() {
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- final WindowContainer wc = mChildren.get(i);
- wc.setVisibleBeforeClientHidden();
- }
- }
-
/**
* Returns true if the container or one of its children as some content it can display or wants
* to display (e.g. app views or saved surface).
@@ -692,6 +687,23 @@ a * Returns whether this child is on top of the window hierarchy.
}
}
+ /**
+ * Write to a protocol buffer output stream. Protocol buffer message definition is at
+ * {@link com.android.server.wm.proto.WindowContainerProto}.
+ *
+ * @param protoOutputStream Stream to write the WindowContainer object to.
+ * @param fieldId Field Id of the WindowContainer as defined in the parent message.
+ * @hide
+ */
+ @CallSuper
+ @Override
+ public void writeToProto(ProtoOutputStream protoOutputStream, long fieldId) {
+ final long token = protoOutputStream.start(fieldId);
+ super.writeToProto(protoOutputStream, CONFIGURATION_CONTAINER);
+ protoOutputStream.write(ORIENTATION, mOrientation);
+ protoOutputStream.end(token);
+ }
+
String getName() {
return toString();
}
diff --git a/services/core/java/com/android/server/wm/WindowContainerController.java b/services/core/java/com/android/server/wm/WindowContainerController.java
index c4a68377bc36..eb23fafb47f0 100644
--- a/services/core/java/com/android/server/wm/WindowContainerController.java
+++ b/services/core/java/com/android/server/wm/WindowContainerController.java
@@ -16,9 +16,7 @@
package com.android.server.wm;
-import android.os.IBinder;
-
-import java.util.HashMap;
+import android.content.res.Configuration;
/**
* Class that allows the owner/creator of a {@link WindowContainer} to communicate directly with the
@@ -29,7 +27,8 @@ import java.util.HashMap;
*
* Test class: {@link WindowContainerControllerTests}
*/
-class WindowContainerController<E extends WindowContainer, I extends WindowContainerListener> {
+class WindowContainerController<E extends WindowContainer, I extends WindowContainerListener>
+ implements ConfigurationContainerListener {
final WindowManagerService mService;
final RootWindowContainer mRoot;
@@ -53,18 +52,32 @@ class WindowContainerController<E extends WindowContainer, I extends WindowConta
+ " for controller=" + this + " Already set to=" + mContainer);
}
mContainer = container;
+ if (mContainer != null && mListener != null) {
+ mListener.registerConfigurationChangeListener(this);
+ }
}
void removeContainer() {
// TODO: See if most uses cases should support removeIfPossible here.
//mContainer.removeIfPossible();
- if (mContainer != null) {
- mContainer.setController(null);
- mContainer = null;
+ if (mContainer == null) {
+ return;
+ }
+
+ mContainer.setController(null);
+ mContainer = null;
+ if (mListener != null) {
+ mListener.unregisterConfigurationChangeListener(this);
}
}
- boolean checkCallingPermission(String permission, String func) {
- return mService.checkCallingPermission(permission, func);
+ @Override
+ public void onOverrideConfigurationChanged(Configuration overrideConfiguration) {
+ synchronized (mWindowMap) {
+ if (mContainer == null) {
+ return;
+ }
+ mContainer.onOverrideConfigurationChanged(overrideConfiguration);
+ }
}
}
diff --git a/services/core/java/com/android/server/wm/WindowContainerListener.java b/services/core/java/com/android/server/wm/WindowContainerListener.java
index ab9d71ac2ea8..4b3cd36040c6 100644
--- a/services/core/java/com/android/server/wm/WindowContainerListener.java
+++ b/services/core/java/com/android/server/wm/WindowContainerListener.java
@@ -21,5 +21,6 @@ package com.android.server.wm;
* @see WindowContainerController
*/
public interface WindowContainerListener {
-
+ void registerConfigurationChangeListener(ConfigurationContainerListener listener);
+ void unregisterConfigurationChangeListener(ConfigurationContainerListener listener);
}
diff --git a/services/core/java/com/android/server/wm/WindowLayersController.java b/services/core/java/com/android/server/wm/WindowLayersController.java
index 5dc79f8500c0..857b13d2fa40 100644
--- a/services/core/java/com/android/server/wm/WindowLayersController.java
+++ b/services/core/java/com/android/server/wm/WindowLayersController.java
@@ -30,6 +30,7 @@ import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYERS;
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
+import static com.android.server.wm.WindowManagerService.TYPE_LAYER_OFFSET;
import static com.android.server.wm.WindowManagerService.WINDOW_LAYER_MULTIPLIER;
/**
@@ -100,7 +101,7 @@ class WindowLayersController {
mHighestLayerInImeTargetBaseLayer = Math.max(mHighestLayerInImeTargetBaseLayer,
w.mWinAnimator.mAnimLayer);
}
- if (w.getAppToken() != null && StackId.isResizeableByDockedStack(w.getStackId())) {
+ if (w.getAppToken() != null && w.inSplitScreenSecondaryWindowingMode()) {
mHighestDockedAffectedLayer = Math.max(mHighestDockedAffectedLayer,
w.mWinAnimator.mAnimLayer);
}
@@ -198,7 +199,7 @@ class WindowLayersController {
private void adjustSpecialWindows() {
// The following adjustments are beyond the highest docked-affected layer
- int layer = mHighestDockedAffectedLayer + WINDOW_LAYER_MULTIPLIER;
+ int layer = mHighestDockedAffectedLayer + TYPE_LAYER_OFFSET;
// Adjust the docked stack windows and dock divider above only the windows that are affected
// by the docked stack. When this happens, also boost the assistant window layers, otherwise
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 8e741c50c540..6a5f6fafb275 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -109,6 +109,7 @@ import static com.android.server.wm.proto.WindowManagerServiceProto.FOCUSED_WIND
import static com.android.server.wm.proto.WindowManagerServiceProto.INPUT_METHOD_WINDOW;
import static com.android.server.wm.proto.WindowManagerServiceProto.LAST_ORIENTATION;
import static com.android.server.wm.proto.WindowManagerServiceProto.POLICY;
+import static com.android.server.wm.proto.WindowManagerServiceProto.ROOT_WINDOW_CONTAINER;
import static com.android.server.wm.proto.WindowManagerServiceProto.ROTATION;
import android.Manifest;
@@ -246,6 +247,7 @@ import com.android.server.Watchdog;
import com.android.server.input.InputManagerService;
import com.android.server.power.BatterySaverPolicy.ServiceType;
import com.android.server.power.ShutdownThread;
+import com.android.server.utils.PriorityDump;
import java.io.BufferedWriter;
import java.io.DataInputStream;
@@ -390,6 +392,18 @@ public class WindowManagerService extends IWindowManager.Stub
};
final WindowSurfacePlacer mWindowPlacerLocked;
+ private final PriorityDump.PriorityDumper mPriorityDumper = new PriorityDump.PriorityDumper() {
+ @Override
+ public void dumpCritical(FileDescriptor fd, PrintWriter pw, String[] args) {
+ doDump(fd, pw, new String[] {"-a"});
+ }
+
+ @Override
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ doDump(fd, pw, args);
+ }
+ };
+
/**
* Current user when multi-user is enabled. Don't show windows of
* non-current user. Also see mCurrentProfileIds.
@@ -445,13 +459,6 @@ public class WindowManagerService extends IWindowManager.Stub
final ArrayList<AppWindowToken> mFinishedStarting = new ArrayList<>();
/**
- * List of window tokens that have finished drawing their own windows and
- * no longer need to show any saved surfaces. Windows that's still showing
- * saved surfaces will be cleaned up after next animation pass.
- */
- final ArrayList<AppWindowToken> mFinishedEarlyAnim = new ArrayList<>();
-
- /**
* List of app window tokens that are waiting for replacing windows. If the
* replacement doesn't come in time the stale windows needs to be disposed of.
*/
@@ -2078,17 +2085,8 @@ public class WindowManagerService extends IWindowManager.Stub
winAnimator.mEnterAnimationPending = false;
winAnimator.mEnteringAnimation = false;
- final boolean usingSavedSurfaceBeforeVisible =
- oldVisibility != View.VISIBLE && win.isAnimatingWithSavedSurface();
- if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) {
- if (winAnimator.hasSurface() && !win.mAnimatingExit
- && usingSavedSurfaceBeforeVisible) {
- Slog.d(TAG, "Ignoring layout to invisible when using saved surface " + win);
- }
- }
- if (winAnimator.hasSurface() && !win.mAnimatingExit
- && !usingSavedSurfaceBeforeVisible) {
+ if (winAnimator.hasSurface() && !win.mAnimatingExit) {
if (DEBUG_VISIBILITY) Slog.i(TAG_WM, "Relayout invis " + win
+ ": mAnimatingExit=" + win.mAnimatingExit);
// If we are not currently running the exit animation, we
@@ -5374,14 +5372,6 @@ public class WindowManagerService extends IWindowManager.Stub
mDestroyPreservedSurface.clear();
}
- void stopUsingSavedSurfaceLocked() {
- for (int i = mFinishedEarlyAnim.size() - 1; i >= 0 ; i--) {
- final AppWindowToken wtoken = mFinishedEarlyAnim.get(i);
- wtoken.stopUsingSavedSurfaceLocked();
- }
- mFinishedEarlyAnim.clear();
- }
-
// -------------------------------------------------------------
// IWindowManager API
// -------------------------------------------------------------
@@ -6529,7 +6519,7 @@ public class WindowManagerService extends IWindowManager.Stub
private void writeToProtoLocked(ProtoOutputStream proto) {
mPolicy.writeToProto(proto, POLICY);
- mRoot.writeToProto(proto);
+ mRoot.writeToProto(proto, ROOT_WINDOW_CONTAINER);
if (mCurrentFocus != null) {
mCurrentFocus.writeIdentifierToProto(proto, FOCUSED_WINDOW);
}
@@ -6817,8 +6807,11 @@ public class WindowManagerService extends IWindowManager.Stub
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
+ PriorityDump.dump(mPriorityDumper, fd, pw, args);
+ }
+ private void doDump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
boolean dumpAll = false;
boolean useProto = false;
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index f7ab534aa27a..8a2cb5a148d8 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -16,12 +16,10 @@
package com.android.server.wm;
-import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS;
import static android.app.ActivityManager.StackId;
import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
-import static android.app.ActivityManager.isLowRamDeviceStatic;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_CONTENT;
@@ -38,7 +36,6 @@ import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
import static android.view.WindowManager.LayoutParams.FLAG_SCALED;
-import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
import static android.view.WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;
@@ -119,7 +116,9 @@ import static com.android.server.wm.proto.WindowStateProto.IDENTIFIER;
import static com.android.server.wm.proto.WindowStateProto.PARENT_FRAME;
import static com.android.server.wm.proto.WindowStateProto.STACK_ID;
import static com.android.server.wm.proto.WindowStateProto.SURFACE_INSETS;
+import static com.android.server.wm.proto.WindowStateProto.WINDOW_CONTAINER;
+import android.annotation.CallSuper;
import android.app.AppOpsManager;
import android.content.Context;
import android.content.res.Configuration;
@@ -138,8 +137,8 @@ import android.os.SystemClock;
import android.os.Trace;
import android.os.UserHandle;
import android.os.WorkSource;
-import android.util.MergedConfiguration;
import android.util.DisplayMetrics;
+import android.util.MergedConfiguration;
import android.util.Slog;
import android.util.TimeUtils;
import android.util.proto.ProtoOutputStream;
@@ -182,9 +181,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
// to capture touch events in that area.
static final int RESIZE_HANDLE_WIDTH_IN_DP = 30;
- private static final boolean DEBUG_DISABLE_SAVING_SURFACES = false ||
- ENABLE_TASK_SNAPSHOTS;
-
final WindowManagerService mService;
final WindowManagerPolicy mPolicy;
final Context mContext;
@@ -521,15 +517,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
/** When true this window can be displayed on screens owther than mOwnerUid's */
private boolean mShowToOwnerOnly;
- // Whether the window has a saved surface from last pause, which can be
- // used to start an entering animation earlier.
- private boolean mSurfaceSaved = false;
-
- // Whether we're performing an entering animation with a saved surface. This flag is
- // true during the time we're showing a window with a previously saved surface. It's
- // cleared when surface is destroyed, saved, or re-drawn by the app.
- private boolean mAnimatingWithSavedSurface;
-
// Whether the window was visible when we set the app to invisible last time. WM uses
// this as a hint to restore the surface (if available) for early animation next time
// the app is brought visible.
@@ -585,8 +572,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
*/
boolean mSeamlesslyRotated = false;
- private static final Region sEmptyRegion = new Region();
-
/**
* Surface insets from the previous call to relayout(), used to track
* if we are changing the Surface insets.
@@ -1370,10 +1355,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
@Override
boolean hasContentToDisplay() {
- // If we're animating with a saved surface, we're already visible.
- // Return true so that the alpha doesn't get cleared.
- if (!mAppFreezing && isDrawnLw()
- && (mViewVisibility == View.VISIBLE || isAnimatingWithSavedSurface()
+ if (!mAppFreezing && isDrawnLw() && (mViewVisibility == View.VISIBLE
|| (mWinAnimator.isAnimationSet() && !mService.mAppTransition.isTransitionSet()))) {
return true;
}
@@ -1461,19 +1443,12 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
/**
* Whether this window's drawn state might affect the drawn states of the app token.
*
- * @param visibleOnly Whether we should consider only the windows that's currently
- * visible in layout. If true, windows that has not relayout to VISIBLE
- * would always return false.
- *
* @return true if the window should be considered while evaluating allDrawn flags.
*/
- boolean mightAffectAllDrawn(boolean visibleOnly) {
- final boolean isViewVisible = (mAppToken == null || !mAppToken.isClientHidden())
- && (mViewVisibility == View.VISIBLE) && !mWindowRemovalAllowed;
- return (isOnScreen() && (!visibleOnly || isViewVisible)
- || mWinAnimator.mAttrType == TYPE_BASE_APPLICATION
- || mWinAnimator.mAttrType == TYPE_DRAWN_APPLICATION)
- && !mAnimatingExit && !mDestroying;
+ boolean mightAffectAllDrawn() {
+ final boolean isAppType = mWinAnimator.mAttrType == TYPE_BASE_APPLICATION
+ || mWinAnimator.mAttrType == TYPE_DRAWN_APPLICATION;
+ return (isOnScreen() || isAppType) && !mAnimatingExit && !mDestroying;
}
/**
@@ -1502,7 +1477,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
// TODO: Another visibility method that was added late in the release to minimize risk.
@Override
public boolean canAffectSystemUiFlags() {
- final boolean shown = mWinAnimator.getShown() && mWinAnimator.mShownAlpha > 0f;
+ final boolean shown = mWinAnimator.getShown();
// We only consider the app to be exiting when the animation has started. After the app
// transition is executed the windows are marked exiting before the new windows have been
@@ -1516,7 +1491,12 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
final boolean exiting = exitingSelf || mDestroying || appExiting;
final boolean translucent = mAttrs.alpha == 0.0f;
- return shown && !exiting && !translucent;
+
+ // If we are entering with a dummy animation, avoid affecting SystemUI flags until the
+ // transition is starting.
+ final boolean enteringWithDummyAnimation =
+ mWinAnimator.isDummyAnimation() && mWinAnimator.mShownAlpha == 0f;
+ return shown && !exiting && !translucent && !enteringWithDummyAnimation;
}
/**
@@ -1667,10 +1647,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
@Override
void onResize() {
- // Some windows won't go through the resizing process, if they don't have a surface, so
- // destroy all saved surfaces here.
- destroySavedSurface();
-
final ArrayList<WindowState> resizingWindows = mService.mResizingWindows;
if (mHasSurface && !resizingWindows.contains(this)) {
if (DEBUG_RESIZE) Slog.d(TAG, "onResize: Resizing " + this);
@@ -1919,19 +1895,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return;
}
- if (isAnimatingWithSavedSurface() && !mAppToken.allDrawnExcludingSaved) {
- // We started enter animation early with a saved surface, now the app asks to remove
- // this window. If we remove it now and the app is not yet drawn, we'll show a
- // flicker. Delay the removal now until it's really drawn.
- if (DEBUG_ADD_REMOVE) Slog.d(TAG_WM,
- "removeWindowLocked: delay removal of " + this + " due to early animation");
- // Do not set mAnimatingExit to true here, it will cause the surface to be hidden
- // immediately after the enter animation is done. If the app is not yet drawn then
- // it will show up as a flicker.
- setupWindowForRemoveOnExit();
- Binder.restoreCallingIdentity(origId);
- return;
- }
// If we are not currently running the exit animation, we need to see about starting one
wasVisible = isWinVisibleLw();
@@ -2634,10 +2597,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return mAnimatingExit || (mService.mClosingApps.contains(mAppToken));
}
- boolean isAnimatingWithSavedSurface() {
- return mAnimatingWithSavedSurface;
- }
-
@Override
boolean isAnimating() {
if (mWinAnimator.isAnimationSet() || mAnimatingExit) {
@@ -2646,48 +2605,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return super.isAnimating();
}
- boolean isAnimatingInvisibleWithSavedSurface() {
- if (mAnimatingWithSavedSurface
- && (mViewVisibility != View.VISIBLE || mWindowRemovalAllowed)) {
- return true;
- }
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- final WindowState c = mChildren.get(i);
- if (c.isAnimatingInvisibleWithSavedSurface()) {
- return true;
- }
- }
- return false;
- }
-
- void stopUsingSavedSurface() {
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- final WindowState c = mChildren.get(i);
- c.stopUsingSavedSurface();
- }
-
- if (!isAnimatingInvisibleWithSavedSurface()) {
- return;
- }
-
- if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) Slog.d(TAG, "stopUsingSavedSurface: " + this);
- clearAnimatingWithSavedSurface();
- mDestroying = true;
- mWinAnimator.hide("stopUsingSavedSurface");
- getDisplayContent().mWallpaperController.hideWallpapers(this);
- }
-
- void markSavedSurfaceExiting() {
- if (isAnimatingInvisibleWithSavedSurface()) {
- mAnimatingExit = true;
- mWinAnimator.mAnimating = true;
- }
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- final WindowState c = mChildren.get(i);
- c.markSavedSurfaceExiting();
- }
- }
-
void addWinAnimatorToList(ArrayList<WindowStateAnimator> animators) {
animators.add(mWinAnimator);
@@ -2726,25 +2643,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
}
}
- public void setVisibleBeforeClientHidden() {
- mWasVisibleBeforeClientHidden |=
- (mViewVisibility == View.VISIBLE || mAnimatingWithSavedSurface);
-
- super.setVisibleBeforeClientHidden();
- }
-
- public void clearWasVisibleBeforeClientHidden() {
- mWasVisibleBeforeClientHidden = false;
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- final WindowState c = mChildren.get(i);
- c.clearWasVisibleBeforeClientHidden();
- }
- }
-
- public boolean wasVisibleBeforeClientHidden() {
- return mWasVisibleBeforeClientHidden;
- }
-
void onStartFreezingScreen() {
mAppFreezing = true;
for (int i = mChildren.size() - 1; i >= 0; --i) {
@@ -2777,48 +2675,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return true;
}
- private boolean shouldSaveSurface() {
- if (mWinAnimator.mSurfaceController == null) {
- // Don't bother if the surface controller is gone for any reason.
- return false;
- }
-
- if (!mWasVisibleBeforeClientHidden) {
- return false;
- }
-
- if ((mAttrs.flags & FLAG_SECURE) != 0) {
- // We don't save secure surfaces since their content shouldn't be shown while the app
- // isn't on screen and content might leak through during the transition animation with
- // saved surface.
- return false;
- }
-
- if (isLowRamDeviceStatic()) {
- // Don't save surfaces on Svelte devices.
- return false;
- }
-
- final Task task = getTask();
- final AppWindowToken taskTop = task.getTopVisibleAppToken();
- if (taskTop != null && taskTop != mAppToken) {
- // Don't save if the window is not the topmost window.
- return false;
- }
-
- if (mResizedWhileGone) {
- // Somebody resized our window while we were gone for layout, which means that the
- // client got an old size, so we have an outdated surface here.
- return false;
- }
-
- if (DEBUG_DISABLE_SAVING_SURFACES) {
- return false;
- }
-
- return mAppToken.shouldSaveSurface();
- }
-
boolean destroySurface(boolean cleanupOnResume, boolean appStopped) {
boolean destroyedSomething = false;
for (int i = mChildren.size() - 1; i >= 0; --i) {
@@ -2840,7 +2696,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
+ " win.mWindowRemovalAllowed=" + mWindowRemovalAllowed
+ " win.mRemoveOnExit=" + mRemoveOnExit);
if (!cleanupOnResume || mRemoveOnExit) {
- destroyOrSaveSurfaceUnchecked();
+ destroySurfaceUnchecked();
}
if (mRemoveOnExit) {
removeImmediately();
@@ -2858,156 +2714,14 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
// Destroy or save the application surface without checking
// various indicators of whether the client has released the surface.
// This is in general unsafe, and most callers should use {@link #destroySurface}
- void destroyOrSaveSurfaceUnchecked() {
- mSurfaceSaved = shouldSaveSurface();
- if (mSurfaceSaved) {
- if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) {
- Slog.v(TAG, "Saving surface: " + this);
- }
- // Previous user of the surface may have set a transparent region signaling a portion
- // doesn't need to be composited, so reset to default empty state.
- mSession.setTransparentRegion(mClient, sEmptyRegion);
-
- mWinAnimator.hide("saved surface");
- mWinAnimator.mDrawState = WindowStateAnimator.NO_SURFACE;
- setHasSurface(false);
- // The client should have disconnected at this point, but if it doesn't,
- // we need to make sure it's disconnected. Otherwise when we reuse the surface
- // the client can't reconnect to the buffer queue, and rendering will fail.
- if (mWinAnimator.mSurfaceController != null) {
- mWinAnimator.mSurfaceController.disconnectInTransaction();
- }
- mAnimatingWithSavedSurface = false;
- } else {
- mWinAnimator.destroySurfaceLocked();
- }
+ void destroySurfaceUnchecked() {
+ mWinAnimator.destroySurfaceLocked();
+
// Clear animating flags now, since the surface is now gone. (Note this is true even
// if the surface is saved, to outside world the surface is still NO_SURFACE.)
mAnimatingExit = false;
}
- void destroySavedSurface() {
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- final WindowState c = mChildren.get(i);
- c.destroySavedSurface();
- }
-
- if (mSurfaceSaved) {
- if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) Slog.v(TAG, "Destroying saved surface: " + this);
- mWinAnimator.destroySurfaceLocked();
- mSurfaceSaved = false;
- }
- mWasVisibleBeforeClientHidden = false;
- }
-
- /** Returns -1 if there are no interesting windows or number of interesting windows not drawn.*/
- int restoreSavedSurfaceForInterestingWindow() {
- int interestingNotDrawn = -1;
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- final WindowState c = mChildren.get(i);
- final int childInterestingNotDrawn = c.restoreSavedSurfaceForInterestingWindow();
- if (childInterestingNotDrawn != -1) {
- if (interestingNotDrawn == -1) {
- interestingNotDrawn = childInterestingNotDrawn;
- } else {
- interestingNotDrawn += childInterestingNotDrawn;
- }
- }
- }
-
- if (mAttrs.type == TYPE_APPLICATION_STARTING
- || mAppDied || !wasVisibleBeforeClientHidden()
- || (mAppToken.mAppAnimator.freezingScreen && mAppFreezing)) {
- // Window isn't interesting...
- return interestingNotDrawn;
- }
-
- restoreSavedSurface();
-
- if (!isDrawnLw()) {
- if (interestingNotDrawn == -1) {
- interestingNotDrawn = 1;
- } else {
- interestingNotDrawn++;
- }
- }
- return interestingNotDrawn;
- }
-
- /** Returns true if the saved surface was restored. */
- boolean restoreSavedSurface() {
- if (!mSurfaceSaved) {
- return false;
- }
-
- // Sometimes we save surfaces due to layout invisible directly after rotation occurs.
- // However this means the surface was never laid out in the new orientation.
- // We can only restore to the last rotation we were laid out as visible in.
- if (mLastVisibleLayoutRotation != getDisplayContent().getRotation()) {
- destroySavedSurface();
- return false;
- }
- mSurfaceSaved = false;
-
- if (mWinAnimator.mSurfaceController != null) {
- setHasSurface(true);
- mWinAnimator.mDrawState = READY_TO_SHOW;
- mAnimatingWithSavedSurface = true;
-
- requestUpdateWallpaperIfNeeded();
-
- if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) {
- Slog.v(TAG, "Restoring saved surface: " + this);
- }
- } else {
- // mSurfaceController shouldn't be null if mSurfaceSaved was still true at
- // this point. Even if we destroyed the saved surface because of rotation
- // or resize, mSurfaceSaved flag should have been cleared. So this is a wtf.
- Slog.wtf(TAG, "Failed to restore saved surface: surface gone! " + this);
- }
-
- return true;
- }
-
- boolean canRestoreSurface() {
- if (mWasVisibleBeforeClientHidden && mSurfaceSaved) {
- return true;
- }
-
- for (int i = mChildren.size() - 1; i >= 0; --i) {
- final WindowState c = mChildren.get(i);
- if (c.canRestoreSurface()) {
- return true;
- }
- }
-
- return false;
- }
-
- boolean hasSavedSurface() {
- return mSurfaceSaved;
- }
-
- void clearHasSavedSurface() {
- mSurfaceSaved = false;
- mAnimatingWithSavedSurface = false;
- if (mWasVisibleBeforeClientHidden) {
- mAppToken.destroySavedSurfaces();
- }
- }
-
- boolean clearAnimatingWithSavedSurface() {
- if (mAnimatingWithSavedSurface) {
- // App has drawn something to its windows, we're no longer animating with
- // the saved surfaces.
- if (DEBUG_ANIM) Slog.d(TAG,
- "clearAnimatingWithSavedSurface(): win=" + this);
- mAnimatingWithSavedSurface = false;
- return true;
- }
- return false;
- }
-
@Override
public boolean isDefaultDisplay() {
final DisplayContent displayContent = getDisplayContent();
@@ -3412,8 +3126,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|| (isChildWindow() && getParentWindow().isDockedResizing());
}
- void writeToProto(ProtoOutputStream proto, long fieldId) {
+ @CallSuper
+ @Override
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
final long token = proto.start(fieldId);
+ super.writeToProto(proto, WINDOW_CONTAINER);
writeIdentifierToProto(proto, IDENTIFIER);
proto.write(DISPLAY_ID, getDisplayId());
proto.write(STACK_ID, getStackId());
@@ -3487,12 +3204,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
if (mAppToken != null) {
pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken);
pw.print(prefix); pw.print(" isAnimatingWithSavedSurface()=");
- pw.print(isAnimatingWithSavedSurface());
pw.print(" mAppDied=");pw.print(mAppDied);
pw.print(prefix); pw.print("drawnStateEvaluated=");
pw.print(getDrawnStateEvaluated());
pw.print(prefix); pw.print("mightAffectAllDrawn=");
- pw.println(mightAffectAllDrawn(false /*visibleOnly*/));
+ pw.println(mightAffectAllDrawn());
}
pw.print(prefix); pw.print("mViewVisibility=0x");
pw.print(Integer.toHexString(mViewVisibility));
@@ -3543,7 +3259,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
pw.print(prefix); pw.print("mHasSurface="); pw.print(mHasSurface);
pw.print(" mShownPosition="); mShownPosition.printShortString(pw);
pw.print(" isReadyForDisplay()="); pw.print(isReadyForDisplay());
- pw.print(" hasSavedSurface()="); pw.print(hasSavedSurface());
pw.print(" mWindowRemovalAllowed="); pw.println(mWindowRemovalAllowed);
if (dumpAll) {
pw.print(prefix); pw.print("mFrame="); mFrame.printShortString(pw);
@@ -4601,11 +4316,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
&& getResizeMode() == DRAG_RESIZE_MODE_DOCKED_DIVIDER;
result |= freeformResizing ? RELAYOUT_RES_DRAG_RESIZING_FREEFORM : 0;
result |= dockedResizing ? RELAYOUT_RES_DRAG_RESIZING_DOCKED : 0;
- if (isAnimatingWithSavedSurface()) {
- // If we're animating with a saved surface now, request client to report draw.
- // We still need to know when the real thing is drawn.
- result |= RELAYOUT_RES_FIRST_TIME;
- }
return result;
}
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index d0b6be6fa133..1b7e52788631 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -16,7 +16,6 @@
package com.android.server.wm;
-import static android.app.ActivityManager.StackId;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
import static android.view.WindowManager.LayoutParams.FLAG_SCALED;
@@ -347,7 +346,7 @@ class WindowStateAnimator {
mAnimation.cancel();
mAnimation = null;
mLocalAnimating = false;
- mWin.destroyOrSaveSurfaceUnchecked();
+ mWin.destroySurfaceUnchecked();
}
}
@@ -507,7 +506,7 @@ class WindowStateAnimator {
+ drawStateToString());
}
- boolean layoutNeeded = mWin.clearAnimatingWithSavedSurface();
+ boolean layoutNeeded = false;
if (mDrawState == DRAW_PENDING) {
if (DEBUG_SURFACE_TRACE || DEBUG_ANIM || SHOW_TRANSACTIONS || DEBUG_ORIENTATION)
@@ -626,11 +625,6 @@ class WindowStateAnimator {
WindowSurfaceController createSurfaceLocked(int windowType, int ownerUid) {
final WindowState w = mWin;
- if (w.restoreSavedSurface()) {
- if (DEBUG_ANIM) Slog.i(TAG,
- "createSurface: " + this + ": called when we had a saved surface");
- return mSurfaceController;
- }
if (mSurfaceController != null) {
return mSurfaceController;
@@ -789,8 +783,7 @@ class WindowStateAnimator {
}
boolean hasSurface() {
- return !mWin.hasSavedSurface()
- && mSurfaceController != null && mSurfaceController.hasSurface();
+ return mSurfaceController != null && mSurfaceController.hasSurface();
}
void destroySurfaceLocked() {
@@ -801,8 +794,6 @@ class WindowStateAnimator {
}
}
- mWin.clearHasSavedSurface();
-
if (mSurfaceController == null) {
return;
}
@@ -1164,11 +1155,10 @@ class WindowStateAnimator {
transform.postScale(spec.scale, spec.scale);
transform.postTranslate(-spec.offsetX, -spec.offsetY);
transform.mapRect(finalCrop);
- finalClipRect.top = (int)finalCrop.top;
- finalClipRect.left = (int)finalCrop.left;
- // TODO: Are the assignments below a mistake?
- finalClipRect.right = (int)finalClipRect.right;
- finalClipRect.bottom = (int)finalClipRect.bottom;
+ finalClipRect.top = (int) finalCrop.top;
+ finalClipRect.left = (int) finalCrop.left;
+ finalClipRect.right = (int) finalCrop.right;
+ finalClipRect.bottom = (int) finalCrop.bottom;
}
return true;
@@ -1662,7 +1652,14 @@ class WindowStateAnimator {
if (mWin.mAppToken != null) {
mWin.mAppToken.setCanTurnScreenOn(false);
}
- mAnimator.mBulkUpdateParams |= SET_TURN_ON_SCREEN;
+
+ // We do not add {@code SET_TURN_ON_SCREEN} when the screen is already
+ // interactive as the value may persist until the next animation, which could
+ // potentially occurring while turning off the screen. This would lead to the
+ // screen incorrectly turning back on.
+ if (!mService.mPowerManager.isInteractive()) {
+ mAnimator.mBulkUpdateParams |= SET_TURN_ON_SCREEN;
+ }
}
}
if (hasSurface()) {
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index 581b0447dafc..88625d35f9b4 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -2,7 +2,6 @@
package com.android.server.wm;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
-import static android.app.ActivityManagerInternal.APP_TRANSITION_SAVED_SURFACE;
import static android.app.ActivityManagerInternal.APP_TRANSITION_SNAPSHOT;
import static android.app.ActivityManagerInternal.APP_TRANSITION_SPLASH_SCREEN;
import static android.app.ActivityManagerInternal.APP_TRANSITION_WINDOWS_DRAWN;
@@ -445,13 +444,6 @@ class WindowSurfacePlacer {
for (int i = 0; i < appsCount; i++) {
AppWindowToken wtoken = mService.mClosingApps.valueAt(i);
- // If we still have some windows animating with saved surfaces that's
- // either invisible or already removed, mark them exiting so that they
- // are disposed of after the exit animation. These are not supposed to
- // be shown, or are delayed removal until app is actually drawn (in which
- // case the window will be removed after the animation).
- wtoken.markSavedSurfaceExiting();
-
final AppWindowAnimator appAnimator = wtoken.mAppAnimator;
if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "Now closing app " + wtoken);
appAnimator.clearThumbnail();
@@ -539,8 +531,6 @@ class WindowSurfacePlacer {
+ wtoken.startingMoved + " isRelaunching()="
+ wtoken.isRelaunching());
- final boolean drawnBeforeRestoring = wtoken.allDrawn;
- wtoken.restoreSavedSurfaceForInterestingWindows();
final boolean allDrawn = wtoken.allDrawn && !wtoken.isRelaunching();
if (!allDrawn && !wtoken.startingDisplayed && !wtoken.startingMoved) {
@@ -549,8 +539,7 @@ class WindowSurfacePlacer {
final TaskStack stack = wtoken.getStack();
final int stackId = stack != null ? stack.mStackId : INVALID_STACK_ID;
if (allDrawn) {
- outReasons.put(stackId, drawnBeforeRestoring ? APP_TRANSITION_WINDOWS_DRAWN
- : APP_TRANSITION_SAVED_SURFACE);
+ outReasons.put(stackId, APP_TRANSITION_WINDOWS_DRAWN);
} else {
outReasons.put(stackId, wtoken.startingData instanceof SplashScreenStartingData
? APP_TRANSITION_SPLASH_SCREEN
diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java
index 422615b10fc1..943448eea2b0 100644
--- a/services/core/java/com/android/server/wm/WindowToken.java
+++ b/services/core/java/com/android/server/wm/WindowToken.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import android.annotation.CallSuper;
import android.util.proto.ProtoOutputStream;
import java.util.Comparator;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
@@ -28,6 +29,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL;
import static com.android.server.wm.proto.WindowTokenProto.HASH_CODE;
import static com.android.server.wm.proto.WindowTokenProto.WINDOWS;
+import static com.android.server.wm.proto.WindowTokenProto.WINDOW_CONTAINER;
import android.os.Debug;
import android.os.IBinder;
@@ -263,8 +265,11 @@ class WindowToken extends WindowContainer<WindowState> {
super.onDisplayChanged(dc);
}
- void writeToProto(ProtoOutputStream proto, long fieldId) {
+ @CallSuper
+ @Override
+ public void writeToProto(ProtoOutputStream proto, long fieldId) {
final long token = proto.start(fieldId);
+ super.writeToProto(proto, WINDOW_CONTAINER);
proto.write(HASH_CODE, System.identityHashCode(this));
for (int i = 0; i < mChildren.size(); i++) {
final WindowState w = mChildren.get(i);
diff --git a/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp b/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp
index 85ec9e07e39e..81d46f39d84a 100644
--- a/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp
+++ b/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp
@@ -48,15 +48,19 @@ void NativeCallbackThread::threadLoop() {
return;
}
- while (!mExiting) {
- ALOGV("Waiting for task...");
+ while (true) {
Task task;
{
unique_lock<mutex> lk(mQueueMutex);
- mQueueCond.wait(lk);
+
if (mExiting) break;
+ if (mQueue.empty()) {
+ ALOGV("Waiting for task...");
+ mQueueCond.wait(lk);
+ if (mExiting) break;
+ if (mQueue.empty()) continue;
+ }
- if (mQueue.empty()) continue;
task = mQueue.front();
mQueue.pop();
}
@@ -74,6 +78,7 @@ void NativeCallbackThread::threadLoop() {
ALOGE_IF(res != JNI_OK, "Couldn't detach thread");
ALOGV("Native callback thread %p finished", this);
+ ALOGD_IF(!mQueue.empty(), "Skipped execution of %zu tasks", mQueue.size());
}
void NativeCallbackThread::enqueue(const Task &task) {
@@ -84,6 +89,7 @@ void NativeCallbackThread::enqueue(const Task &task) {
return;
}
+ ALOGV("Adding task to the queue...");
mQueue.push(task);
mQueueCond.notify_one();
}
diff --git a/services/core/jni/BroadcastRadio/Tuner.cpp b/services/core/jni/BroadcastRadio/Tuner.cpp
index 85603d5e3608..e1ade4dc02da 100644
--- a/services/core/jni/BroadcastRadio/Tuner.cpp
+++ b/services/core/jni/BroadcastRadio/Tuner.cpp
@@ -84,6 +84,7 @@ struct TunerContext {
bool mIsClosed = false;
HalRevision mHalRev;
bool mWithAudio;
+ bool mIsAudioConnected = false;
Band mBand;
wp<V1_0::IBroadcastRadio> mHalModule;
wp<V1_1::IBroadcastRadio> mHalModule11;
@@ -142,6 +143,8 @@ void HalDeathRecipient::serviceDied(uint64_t cookie __unused,
// TODO(b/62713378): implement support for multiple tuners open at the same time
static void notifyAudioService(TunerContext& ctx, bool connected) {
if (!ctx.mWithAudio) return;
+ if (ctx.mIsAudioConnected == connected) return;
+ ctx.mIsAudioConnected = connected;
ALOGD("Notifying AudioService about new state: %d", connected);
auto token = IPCThreadState::self()->clearCallingIdentity();
@@ -265,6 +268,14 @@ static jobject nativeGetConfiguration(JNIEnv *env, jobject obj, jlong nativeCont
return convert::BandConfigFromHal(env, halConfig, region).release();
}
+static void nativeSetMuted(JNIEnv *env, jobject obj, jlong nativeContext, bool mute) {
+ ALOGV("%s(%d)", __func__, mute);
+ lock_guard<mutex> lk(gContextMutex);
+ auto& ctx = getNativeContext(nativeContext);
+
+ notifyAudioService(ctx, !mute);
+}
+
static void nativeStep(JNIEnv *env, jobject obj, jlong nativeContext,
bool directionDown, bool skipSubChannel) {
ALOGV("%s", __func__);
@@ -497,6 +508,7 @@ static const JNINativeMethod gTunerMethods[] = {
(void*)nativeSetConfiguration },
{ "nativeGetConfiguration", "(JI)Landroid/hardware/radio/RadioManager$BandConfig;",
(void*)nativeGetConfiguration },
+ { "nativeSetMuted", "(JZ)V", (void*)nativeSetMuted },
{ "nativeStep", "(JZZ)V", (void*)nativeStep },
{ "nativeScan", "(JZZ)V", (void*)nativeScan },
{ "nativeTune", "(JLandroid/hardware/radio/ProgramSelector;)V", (void*)nativeTune },
diff --git a/services/core/jni/BroadcastRadio/regions.cpp b/services/core/jni/BroadcastRadio/regions.cpp
index e31352107030..b85641992e6c 100644
--- a/services/core/jni/BroadcastRadio/regions.cpp
+++ b/services/core/jni/BroadcastRadio/regions.cpp
@@ -64,7 +64,7 @@ static const RegionalBandDefinition kKnownRegionConfigs[] = {
{
{ Region::ITU_2 },
{ Band::FM, Band::FM_HD },
- 87900,
+ 87700,
107900,
200,
Deemphasis::D75,
@@ -101,14 +101,14 @@ static const RegionalBandDefinition kKnownRegionConfigs[] = {
{ Region::ITU_1, Region::OIRT, Region::JAPAN, Region::KOREA },
{ Band::AM },
153,
- 279,
+ 282,
9,
},
{ // AM MW
{ Region::ITU_1, Region::OIRT, Region::JAPAN, Region::KOREA },
{ Band::AM },
531,
- 1611,
+ 1620,
9,
},
{ // AM SW
@@ -128,8 +128,8 @@ static const RegionalBandDefinition kKnownRegionConfigs[] = {
{ // AM MW ITU2
{ Region::ITU_2 },
{ Band::AM, Band::AM_HD },
- 540,
- 1610,
+ 530,
+ 1700,
10,
},
{ // AM SW ITU2
diff --git a/services/core/jni/com_android_server_VibratorService.cpp b/services/core/jni/com_android_server_VibratorService.cpp
index 0370490668ec..d2f374dd9e08 100644
--- a/services/core/jni/com_android_server_VibratorService.cpp
+++ b/services/core/jni/com_android_server_VibratorService.cpp
@@ -153,9 +153,9 @@ static jlong vibratorPerformEffect(JNIEnv*, jobject, jlong effect, jint strength
if (status == Status::OK) {
return lengthMs;
} else if (status != Status::UNSUPPORTED_OPERATION) {
- // Don't warn on UNSUPPORTED_OPERATION, that's a normal even and just means the motor
- // doesn't have a pre-defined waveform to perform for it, so we should just fall back
- // to the framework waveforms.
+ // Don't warn on UNSUPPORTED_OPERATION, that's a normal event and just means the motor
+ // doesn't have a pre-defined waveform to perform for it, so we should just give the
+ // opportunity to fall back to the framework waveforms.
ALOGE("Failed to perform haptic effect: effect=%" PRId64 ", strength=%" PRId32
", error=%" PRIu32 ").", static_cast<int64_t>(effect),
static_cast<int32_t>(strength), static_cast<uint32_t>(status));
diff --git a/services/core/jni/com_android_server_am_BatteryStatsService.cpp b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
index 2dc388a5873a..ae7d6daa649b 100644
--- a/services/core/jni/com_android_server_am_BatteryStatsService.cpp
+++ b/services/core/jni/com_android_server_am_BatteryStatsService.cpp
@@ -63,6 +63,12 @@ extern sp<android::hardware::power::V1_0::IPower> gPowerHalV1_0;
extern std::mutex gPowerHalMutex;
extern bool getPowerHal();
+// Java methods used in getLowPowerStats
+static jmethodID jgetAndUpdatePlatformState = NULL;
+static jmethodID jgetSubsystem = NULL;
+static jmethodID jputVoter = NULL;
+static jmethodID jputState = NULL;
+
static void wakeup_callback(bool success)
{
ALOGV("In wakeup_callback: %s", success ? "resumed from suspend" : "suspend aborted");
@@ -185,6 +191,97 @@ static jint nativeWaitWakeup(JNIEnv *env, jobject clazz, jobject outBuf)
return mergedreasonpos - mergedreason;
}
+static void getLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject jrpmStats) {
+ if (jrpmStats == NULL) {
+ jniThrowException(env, "java/lang/NullPointerException",
+ "The rpmstats jni input jobject jrpmStats is null.");
+ return;
+ }
+ if (jgetAndUpdatePlatformState == NULL || jgetSubsystem == NULL
+ || jputVoter == NULL || jputState == NULL) {
+ ALOGE("A rpmstats jni jmethodID is null.");
+ return;
+ }
+
+ std::lock_guard<std::mutex> lock(gPowerHalMutex);
+ if (!getPowerHal()) {
+ ALOGE("Power Hal not loaded");
+ return;
+ }
+
+ Return<void> ret = gPowerHalV1_0->getPlatformLowPowerStats(
+ [&env, &jrpmStats](hidl_vec<PowerStatePlatformSleepState> states, Status status) {
+
+ if (status != Status::SUCCESS) return;
+
+ for (size_t i = 0; i < states.size(); i++) {
+ const PowerStatePlatformSleepState& state = states[i];
+
+ jobject jplatformState = env->CallObjectMethod(jrpmStats,
+ jgetAndUpdatePlatformState,
+ env->NewStringUTF(state.name.c_str()),
+ state.residencyInMsecSinceBoot,
+ state.totalTransitions);
+ if (jplatformState == NULL) {
+ ALOGE("The rpmstats jni jobject jplatformState is null.");
+ return;
+ }
+
+ for (size_t j = 0; j < state.voters.size(); j++) {
+ const PowerStateVoter& voter = state.voters[j];
+ env->CallVoidMethod(jplatformState, jputVoter,
+ env->NewStringUTF(voter.name.c_str()),
+ voter.totalTimeInMsecVotedForSinceBoot,
+ voter.totalNumberOfTimesVotedSinceBoot);
+ }
+ }
+ });
+ if (!ret.isOk()) {
+ ALOGE("getLowPowerStats() failed: power HAL service not available");
+ gPowerHalV1_0 = nullptr;
+ return;
+ }
+
+ //Trying to cast to IPower 1.1, this will succeed only for devices supporting 1.1
+ sp<android::hardware::power::V1_1::IPower> gPowerHal_1_1
+ = android::hardware::power::V1_1::IPower::castFrom(gPowerHalV1_0);
+ if (gPowerHal_1_1 == nullptr) {
+ //This device does not support IPower@1.1, exiting gracefully
+ return;
+ }
+ ret = gPowerHal_1_1->getSubsystemLowPowerStats(
+ [&env, &jrpmStats](hidl_vec<PowerStateSubsystem> subsystems, Status status) {
+
+ if (status != Status::SUCCESS) return;
+
+ if (subsystems.size() > 0) {
+ for (size_t i = 0; i < subsystems.size(); i++) {
+ const PowerStateSubsystem &subsystem = subsystems[i];
+
+ jobject jsubsystem = env->CallObjectMethod(jrpmStats, jgetSubsystem,
+ env->NewStringUTF(subsystem.name.c_str()));
+ if (jsubsystem == NULL) {
+ ALOGE("The rpmstats jni jobject jsubsystem is null.");
+ return;
+ }
+
+ for (size_t j = 0; j < subsystem.states.size(); j++) {
+ const PowerStateSubsystemSleepState& state = subsystem.states[j];
+ env->CallVoidMethod(jsubsystem, jputState,
+ env->NewStringUTF(state.name.c_str()),
+ state.residencyInMsecSinceBoot,
+ state.totalTransitions);
+ }
+ }
+ }
+ });
+ if (!ret.isOk()) {
+ ALOGE("getSubsystemLowPowerStats() failed: power HAL service not available");
+ gPowerHalV1_0 = nullptr;
+ }
+ // gPowerHalMutex released here
+}
+
static jint getPlatformLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject outBuf) {
char *output = (char*)env->GetDirectBufferAddress(outBuf);
char *offset = output;
@@ -369,12 +466,33 @@ static jint getSubsystemLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject
static const JNINativeMethod method_table[] = {
{ "nativeWaitWakeup", "(Ljava/nio/ByteBuffer;)I", (void*)nativeWaitWakeup },
+ { "getLowPowerStats", "(Lcom/android/internal/os/RpmStats;)V", (void*)getLowPowerStats },
{ "getPlatformLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getPlatformLowPowerStats },
{ "getSubsystemLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getSubsystemLowPowerStats },
};
int register_android_server_BatteryStatsService(JNIEnv *env)
{
+ // get java classes and methods
+ jclass clsRpmStats = env->FindClass("com/android/internal/os/RpmStats");
+ jclass clsPowerStatePlatformSleepState =
+ env->FindClass("com/android/internal/os/RpmStats$PowerStatePlatformSleepState");
+ jclass clsPowerStateSubsystem =
+ env->FindClass("com/android/internal/os/RpmStats$PowerStateSubsystem");
+ if (clsRpmStats == NULL || clsPowerStatePlatformSleepState == NULL
+ || clsPowerStateSubsystem == NULL) {
+ ALOGE("A rpmstats jni jclass is null.");
+ } else {
+ jgetAndUpdatePlatformState = env->GetMethodID(clsRpmStats, "getAndUpdatePlatformState",
+ "(Ljava/lang/String;JI)Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;");
+ jgetSubsystem = env->GetMethodID(clsRpmStats, "getSubsystem",
+ "(Ljava/lang/String;)Lcom/android/internal/os/RpmStats$PowerStateSubsystem;");
+ jputVoter = env->GetMethodID(clsPowerStatePlatformSleepState, "putVoter",
+ "(Ljava/lang/String;JI)V");
+ jputState = env->GetMethodID(clsPowerStateSubsystem, "putState",
+ "(Ljava/lang/String;JI)V");
+ }
+
return jniRegisterNativeMethods(env, "com/android/server/am/BatteryStatsService",
method_table, NELEM(method_table));
}
diff --git a/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp b/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
index 87312f82d58a..9a17635721b8 100644
--- a/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
+++ b/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
@@ -74,10 +74,9 @@ int conntrackSocket(unsigned groups) {
hidl_handle handleFromFileDescriptor(base::unique_fd fd) {
hidl_handle h;
- NATIVE_HANDLE_DECLARE_STORAGE(storage, 0, 0);
static constexpr int kNumFds = 1;
static constexpr int kNumInts = 0;
- native_handle_t *nh = native_handle_init(storage, kNumFds, kNumInts);
+ native_handle_t *nh = native_handle_create(kNumFds, kNumInts);
nh->data[0] = fd.release();
static constexpr bool kTakeOwnership = true;
@@ -114,7 +113,7 @@ static jboolean android_server_connectivity_tethering_OffloadHardwareInterface_c
hidl_handle h1(handleFromFileDescriptor(std::move(fd1))),
h2(handleFromFileDescriptor(std::move(fd2)));
- bool rval;
+ bool rval(false);
hidl_string msg;
const auto status = configInterface->setHandles(h1, h2,
[&rval, &msg](bool success, const hidl_string& errMsg) {
@@ -124,6 +123,8 @@ static jboolean android_server_connectivity_tethering_OffloadHardwareInterface_c
if (!status.isOk() || !rval) {
ALOGE("IOffloadConfig::setHandles() error: '%s' / '%s'",
status.description().c_str(), msg.c_str());
+ // If status is somehow not ok, make sure rval captures this too.
+ rval = false;
}
return rval;
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index eb9683e1a470..6c859f76c906 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -43,11 +43,11 @@ import static android.app.admin.DevicePolicyManager.DELEGATION_PACKAGE_ACCESS;
import static android.app.admin.DevicePolicyManager.DELEGATION_PERMISSION_GRANT;
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_COMPLEX;
import static android.app.admin.DevicePolicyManager.PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER;
+import static android.app.admin.DevicePolicyManager.START_USER_IN_BACKGROUND;
import static android.app.admin.DevicePolicyManager.WIPE_EUICC;
import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE;
import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA;
import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES;
-
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PROVISIONING_ENTRY_POINT_ADB;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW;
import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
@@ -80,9 +80,9 @@ import android.app.admin.DevicePolicyManagerInternal;
import android.app.admin.IDevicePolicyManager;
import android.app.admin.NetworkEvent;
import android.app.admin.PasswordMetrics;
-import android.app.admin.SystemUpdateInfo;
import android.app.admin.SecurityLog;
import android.app.admin.SecurityLog.SecurityEvent;
+import android.app.admin.SystemUpdateInfo;
import android.app.admin.SystemUpdatePolicy;
import android.app.backup.IBackupManager;
import android.app.trust.TrustManager;
@@ -93,6 +93,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageDataObserver;
import android.content.pm.IPackageManager;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -614,11 +615,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
} else if (Intent.ACTION_USER_STARTED.equals(action)) {
synchronized (DevicePolicyManagerService.this) {
+ maybeSendAdminEnabledBroadcastLocked(userHandle);
// Reset the policy data
mUserData.remove(userHandle);
- sendAdminEnabledBroadcastLocked(userHandle);
}
handlePackagesChanged(null /* check all admins */, userHandle);
+ } else if (Intent.ACTION_USER_UNLOCKED.equals(action)) {
+ synchronized (DevicePolicyManagerService.this) {
+ maybeSendAdminEnabledBroadcastLocked(userHandle);
+ }
} else if (Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE.equals(action)) {
handlePackagesChanged(null /* check all admins */, userHandle);
} else if (Intent.ACTION_PACKAGE_CHANGED.equals(action)
@@ -1854,6 +1859,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
filter.addAction(Intent.ACTION_USER_ADDED);
filter.addAction(Intent.ACTION_USER_REMOVED);
filter.addAction(Intent.ACTION_USER_STARTED);
+ filter.addAction(Intent.ACTION_USER_UNLOCKED);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
mContext.registerReceiverAsUser(mReceiver, UserHandle.ALL, filter, null, mHandler);
filter = new IntentFilter();
@@ -2372,11 +2378,18 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
sendAdminCommandLocked(admin, action, null, result);
}
+ void sendAdminCommandLocked(ActiveAdmin admin, String action, Bundle adminExtras,
+ BroadcastReceiver result) {
+ sendAdminCommandLocked(admin, action, adminExtras, result, false);
+ }
+
/**
* Send an update to one specific admin, get notified when that admin returns a result.
+ *
+ * @return whether the broadcast was successfully sent
*/
- void sendAdminCommandLocked(ActiveAdmin admin, String action, Bundle adminExtras,
- BroadcastReceiver result) {
+ boolean sendAdminCommandLocked(ActiveAdmin admin, String action, Bundle adminExtras,
+ BroadcastReceiver result, boolean inForeground) {
Intent intent = new Intent(action);
intent.setComponent(admin.info.getComponent());
if (UserManager.isDeviceInDemoMode(mContext)) {
@@ -2385,15 +2398,25 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
if (action.equals(DeviceAdminReceiver.ACTION_PASSWORD_EXPIRING)) {
intent.putExtra("expiration", admin.passwordExpirationDate);
}
+ if (inForeground) {
+ intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ }
if (adminExtras != null) {
intent.putExtras(adminExtras);
}
+ if (mInjector.getPackageManager().queryBroadcastReceiversAsUser(
+ intent,
+ PackageManager.MATCH_DEBUG_TRIAGED_MISSING,
+ admin.getUserHandle()).isEmpty()) {
+ return false;
+ }
if (result != null) {
mContext.sendOrderedBroadcastAsUser(intent, admin.getUserHandle(),
null, result, mHandler, Activity.RESULT_OK, null, null);
} else {
mContext.sendBroadcastAsUser(intent, admin.getUserHandle());
}
+ return true;
}
/**
@@ -4078,6 +4101,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return true;
}
enforceFullCrossUsersPermission(userHandle);
+ enforceUserUnlocked(userHandle, parent);
synchronized (this) {
// This API can only be called by an active device admin,
@@ -4097,7 +4121,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
enforceManagedProfile(userHandle, "call APIs refering to the parent profile");
synchronized (this) {
- int targetUser = getProfileParentId(userHandle);
+ final int targetUser = getProfileParentId(userHandle);
+ enforceUserUnlocked(targetUser, false);
DevicePolicyData policy = getUserDataUnchecked(getCredentialOwner(userHandle, false));
return isActivePasswordSufficientForUserLocked(policy, targetUser, false);
}
@@ -4105,7 +4130,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
private boolean isActivePasswordSufficientForUserLocked(
DevicePolicyData policy, int userHandle, boolean parent) {
- enforceUserUnlocked(userHandle, parent);
+ final int requiredPasswordQuality = getPasswordQuality(null, userHandle, parent);
+ if (requiredPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
+ // A special case is when there is no required password quality, then we just return
+ // true since any password would be sufficient. This is for the scenario when a work
+ // profile is first created so there is no information about the current password but
+ // it should be considered sufficient as there is no password requirement either.
+ // This is useful since it short-circuits the password checkpoint for FDE device below.
+ return true;
+ }
if (!mInjector.storageManagerIsFileBasedEncryptionEnabled()
&& !policy.mPasswordStateHasBeenSetSinceBoot) {
@@ -4117,7 +4150,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return policy.mPasswordValidAtLastCheckpoint;
}
- final int requiredPasswordQuality = getPasswordQuality(null, userHandle, parent);
if (policy.mActivePasswordMetrics.quality < requiredPasswordQuality) {
return false;
}
@@ -4439,7 +4471,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
result = mLockPatternUtils.setLockCredentialWithToken(password,
TextUtils.isEmpty(password) ? LockPatternUtils.CREDENTIAL_TYPE_NONE
: LockPatternUtils.CREDENTIAL_TYPE_PASSWORD,
- tokenHandle, token, userHandle);
+ quality, tokenHandle, token, userHandle);
}
boolean requireEntry = (flags & DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY) != 0;
if (requireEntry) {
@@ -5443,6 +5475,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
+ /**
+ * Notify DPMS regarding the metric of the current password. This happens when the user changes
+ * the password, but also when the user just unlocks the keyguard. In comparison,
+ * reportPasswordChanged() is only called when the user changes the password.
+ */
@Override
public void setActivePasswordState(PasswordMetrics metrics, int userHandle) {
if (!mHasFeature) {
@@ -8099,20 +8136,27 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
}
}
-
- private void sendAdminEnabledBroadcastLocked(int userHandle) {
+ private void maybeSendAdminEnabledBroadcastLocked(int userHandle) {
DevicePolicyData policyData = getUserData(userHandle);
if (policyData.mAdminBroadcastPending) {
// Send the initialization data to profile owner and delete the data
ActiveAdmin admin = getProfileOwnerAdminLocked(userHandle);
+ boolean clearInitBundle = true;
if (admin != null) {
PersistableBundle initBundle = policyData.mInitBundle;
- sendAdminCommandLocked(admin, DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED,
- initBundle == null ? null : new Bundle(initBundle), null);
+ clearInitBundle = sendAdminCommandLocked(admin,
+ DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED,
+ initBundle == null ? null : new Bundle(initBundle),
+ null /* result receiver */,
+ true /* send in foreground */);
+ }
+ if (clearInitBundle) {
+ // If there's no admin or we've successfully called the admin, clear the init bundle
+ // otherwise, keep it around
+ policyData.mInitBundle = null;
+ policyData.mAdminBroadcastPending = false;
+ saveSettingsLocked(userHandle);
}
- policyData.mInitBundle = null;
- policyData.mAdminBroadcastPending = false;
- saveSettingsLocked(userHandle);
}
}
@@ -8158,7 +8202,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
if (user == null) {
return null;
}
- // Set admin.
final long id = mInjector.binderClearCallingIdentity();
try {
final String adminPkg = admin.getPackageName();
@@ -8171,30 +8214,38 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
0 /*installFlags*/, PackageManager.INSTALL_REASON_POLICY);
}
} catch (RemoteException e) {
- Slog.e(LOG_TAG, "Failed to make remote calls for createAndManageUser, "
- + "removing created user", e);
- mUserManager.removeUser(user.getIdentifier());
- return null;
+ // Does not happen, same process
}
+ // Set admin.
setActiveAdmin(profileOwner, true, userHandle);
- // User is not started yet, the broadcast by setActiveAdmin will not be received.
- // So we store adminExtras for broadcasting when the user starts for first time.
- synchronized(this) {
+ final String ownerName = getProfileOwnerName(Process.myUserHandle().getIdentifier());
+ setProfileOwner(profileOwner, ownerName, userHandle);
+
+ synchronized (this) {
DevicePolicyData policyData = getUserData(userHandle);
policyData.mInitBundle = adminExtras;
policyData.mAdminBroadcastPending = true;
saveSettingsLocked(userHandle);
}
- final String ownerName = getProfileOwnerName(Process.myUserHandle().getIdentifier());
- setProfileOwner(profileOwner, ownerName, userHandle);
if ((flags & DevicePolicyManager.SKIP_SETUP_WIZARD) != 0) {
Settings.Secure.putIntForUser(mContext.getContentResolver(),
Settings.Secure.USER_SETUP_COMPLETE, 1, userHandle);
}
+ if ((flags & START_USER_IN_BACKGROUND) != 0) {
+ try {
+ mInjector.getIActivityManager().startUserInBackground(user.getIdentifier());
+ } catch (RemoteException re) {
+ // Does not happen, same process
+ }
+ }
+
return user;
+ } catch (Throwable re) {
+ mUserManager.removeUser(user.getIdentifier());
+ return null;
} finally {
mInjector.binderRestoreCallingIdentity(id);
}
@@ -9077,6 +9128,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
return false;
}
mLockPatternUtils.setLockScreenDisabled(disabled, userId);
+ mInjector.getIWindowManager().dismissKeyguard(null);
+ } catch (RemoteException e) {
+ // Same process, does not happen.
} finally {
mInjector.binderRestoreCallingIdentity(ident);
}
@@ -11146,4 +11200,40 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
new ArrayList<>(getUserData(userId).mOwnerInstalledCaCerts));
}
}
+
+ @Override
+ public boolean clearApplicationUserData(ComponentName admin, String packageName,
+ IPackageDataObserver callback) {
+ Preconditions.checkNotNull(admin, "ComponentName is null");
+ synchronized (this) {
+ getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
+ }
+ final int userId = UserHandle.getCallingUserId();
+
+ long ident = mInjector.binderClearCallingIdentity();
+ try {
+ return ActivityManager.getService().clearApplicationUserData(packageName, callback,
+ userId);
+ } catch(RemoteException re) {
+ // Same process, should not happen.
+ } catch (SecurityException se) {
+ // This can happen e.g. for device admin packages, do not throw out the exception,
+ // because callers have no means to know beforehand for which packages this might
+ // happen.
+ Slog.w(LOG_TAG, "Not allowed to clear application user data for package " + packageName,
+ se);
+ } finally {
+ mInjector.binderRestoreCallingIdentity(ident);
+ }
+
+ if (callback != null) {
+ try {
+ // If there was a throw above, we send back that removal failed
+ callback.onRemoveCompleted(packageName, false);
+ } catch (RemoteException re) {
+ // Caller is no longer available, ignore
+ }
+ }
+ return false;
+ }
}
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 569b3265e997..948c028d46ca 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -103,6 +103,7 @@ import com.android.server.restrictions.RestrictionsManagerService;
import com.android.server.security.KeyAttestationApplicationIdProviderService;
import com.android.server.security.KeyChainSystemService;
import com.android.server.soundtrigger.SoundTriggerService;
+import com.android.server.stats.StatsCompanionService;
import com.android.server.statusbar.StatusBarManagerService;
import com.android.server.storage.DeviceStorageMonitorService;
import com.android.server.telecom.TelecomLoaderService;
@@ -828,9 +829,11 @@ public final class SystemServer {
// because it need to connect to SensorManager. This have to start
// after START_SENSOR_SERVICE is done.
SystemServerInitThreadPool.get().submit(() -> {
- traceBeginAndSlog(START_HIDL_SERVICES);
+ TimingsTraceLog traceLog = new TimingsTraceLog(
+ SYSTEM_SERVER_TIMING_ASYNC_TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
+ traceLog.traceBegin(START_HIDL_SERVICES);
startHidlServices();
- traceEnd();
+ traceLog.traceEnd();
}, START_HIDL_SERVICES);
if (!disableVrManager) {
@@ -1144,20 +1147,6 @@ public final class SystemServer {
traceEnd();
}
- /*
- * StorageManagerService has a few dependencies: Notification Manager and
- * AppWidget Provider. Make sure StorageManagerService is completely started
- * first before continuing.
- */
- if (storageManager != null && !mOnlyCore) {
- traceBeginAndSlog("WaitForAsecScan");
- try {
- storageManager.waitForAsecScan();
- } catch (RemoteException ignored) {
- }
- traceEnd();
- }
-
traceBeginAndSlog("StartNotificationManager");
mSystemServiceManager.startService(NotificationManagerService.class);
SystemNotificationChannels.createAll(context);
@@ -1207,18 +1196,6 @@ public final class SystemServer {
traceEnd();
}
- // timezone.RulesManagerService will prevent a device starting up if the chain of trust
- // required for safe time zone updates might be broken. RuleManagerService cannot do
- // this check when mOnlyCore == true, so we don't enable the service in this case.
- final boolean startRulesManagerService =
- !mOnlyCore && context.getResources().getBoolean(
- R.bool.config_enableUpdateableTimeZoneRules);
- if (startRulesManagerService) {
- traceBeginAndSlog("StartTimeZoneRulesManagerService");
- mSystemServiceManager.startService(TIME_ZONE_RULES_MANAGER_SERVICE_CLASS);
- traceEnd();
- }
-
traceBeginAndSlog("StartAudioService");
mSystemServiceManager.startService(AudioService.Lifecycle.class);
traceEnd();
@@ -1329,11 +1306,13 @@ public final class SystemServer {
traceEnd();
}
- if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_VOICE_RECOGNIZERS)) {
- traceBeginAndSlog("StartVoiceRecognitionManager");
- mSystemServiceManager.startService(VOICE_RECOGNITION_MANAGER_SERVICE_CLASS);
- traceEnd();
- }
+ // We need to always start this service, regardless of whether the
+ // FEATURE_VOICE_RECOGNIZERS feature is set, because it needs to take care
+ // of initializing various settings. It will internally modify its behavior
+ // based on that feature.
+ traceBeginAndSlog("StartVoiceRecognitionManager");
+ mSystemServiceManager.startService(VOICE_RECOGNITION_MANAGER_SERVICE_CLASS);
+ traceEnd();
if (GestureLauncherService.isGestureLauncherEnabled(context.getResources())) {
traceBeginAndSlog("StartGestureLauncher");
@@ -1357,6 +1336,19 @@ public final class SystemServer {
}
traceEnd();
+ // timezone.RulesManagerService will prevent a device starting up if the chain of trust
+ // required for safe time zone updates might be broken. RuleManagerService cannot do
+ // this check when mOnlyCore == true, so we don't enable the service in this case.
+ // This service requires that JobSchedulerService is already started when it starts.
+ final boolean startRulesManagerService =
+ !mOnlyCore && context.getResources().getBoolean(
+ R.bool.config_enableUpdateableTimeZoneRules);
+ if (startRulesManagerService) {
+ traceBeginAndSlog("StartTimeZoneRulesManagerService");
+ mSystemServiceManager.startService(TIME_ZONE_RULES_MANAGER_SERVICE_CLASS);
+ traceEnd();
+ }
+
if (!disableNetwork && !disableNetworkTime) {
traceBeginAndSlog("StartNetworkTimeUpdateService");
try {
@@ -1532,6 +1524,11 @@ public final class SystemServer {
traceEnd();
}
+ // Statsd helper
+ traceBeginAndSlog("StartStatsCompanionService");
+ mSystemServiceManager.startService(StatsCompanionService.Lifecycle.class);
+ traceEnd();
+
// Before things start rolling, be sure we have decided whether
// we are in safe mode.
final boolean safeMode = wm.detectSafeMode();
diff --git a/services/net/java/android/net/ip/InterfaceController.java b/services/net/java/android/net/ip/InterfaceController.java
new file mode 100644
index 000000000000..02e4f875230a
--- /dev/null
+++ b/services/net/java/android/net/ip/InterfaceController.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2017 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.net.ip;
+
+import android.net.INetd;
+import android.net.InterfaceConfiguration;
+import android.net.LinkAddress;
+import android.net.util.NetdService;
+import android.net.util.SharedLog;
+import android.os.INetworkManagementService;
+import android.os.RemoteException;
+import android.os.ServiceSpecificException;
+import android.system.OsConstants;
+
+import java.net.InetAddress;
+
+
+/**
+ * Encapsulates the multiple IP configuration operations performed on an interface.
+ *
+ * TODO: refactor/eliminate the redundant ways to set and clear addresses.
+ *
+ * @hide
+ */
+public class InterfaceController {
+ private final static boolean DBG = false;
+
+ private final String mIfName;
+ private final INetworkManagementService mNMS;
+ private final INetd mNetd;
+ private final SharedLog mLog;
+
+ public InterfaceController(String ifname, INetworkManagementService nms, INetd netd,
+ SharedLog log) {
+ mIfName = ifname;
+ mNMS = nms;
+ mNetd = netd;
+ mLog = log;
+ }
+
+ public boolean setIPv4Address(LinkAddress address) {
+ final InterfaceConfiguration ifcg = new InterfaceConfiguration();
+ ifcg.setLinkAddress(address);
+ try {
+ mNMS.setInterfaceConfig(mIfName, ifcg);
+ if (DBG) mLog.log("IPv4 configuration succeeded");
+ } catch (IllegalStateException | RemoteException e) {
+ logError("IPv4 configuration failed: %s", e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean clearIPv4Address() {
+ try {
+ final InterfaceConfiguration ifcg = new InterfaceConfiguration();
+ ifcg.setLinkAddress(new LinkAddress("0.0.0.0/0"));
+ mNMS.setInterfaceConfig(mIfName, ifcg);
+ } catch (IllegalStateException | RemoteException e) {
+ logError("Failed to clear IPv4 address on interface %s: %s", mIfName, e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean enableIPv6() {
+ try {
+ mNMS.enableIpv6(mIfName);
+ } catch (IllegalStateException | RemoteException e) {
+ logError("enabling IPv6 failed: %s", e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean disableIPv6() {
+ try {
+ mNMS.disableIpv6(mIfName);
+ } catch (IllegalStateException | RemoteException e) {
+ logError("disabling IPv6 failed: %s", e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean setIPv6PrivacyExtensions(boolean enabled) {
+ try {
+ mNMS.setInterfaceIpv6PrivacyExtensions(mIfName, enabled);
+ } catch (IllegalStateException | RemoteException e) {
+ logError("error setting IPv6 privacy extensions: %s", e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean setIPv6AddrGenModeIfSupported(int mode) {
+ try {
+ mNMS.setIPv6AddrGenMode(mIfName, mode);
+ } catch (RemoteException e) {
+ logError("Unable to set IPv6 addrgen mode: %s", e);
+ return false;
+ } catch (ServiceSpecificException e) {
+ if (e.errorCode != OsConstants.EOPNOTSUPP) {
+ logError("Unable to set IPv6 addrgen mode: %s", e);
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean addAddress(LinkAddress addr) {
+ return addAddress(addr.getAddress(), addr.getPrefixLength());
+ }
+
+ public boolean addAddress(InetAddress ip, int prefixLen) {
+ try {
+ mNetd.interfaceAddAddress(mIfName, ip.getHostAddress(), prefixLen);
+ } catch (ServiceSpecificException | RemoteException e) {
+ logError("failed to add %s/%d: %s", ip, prefixLen, e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean removeAddress(InetAddress ip, int prefixLen) {
+ try {
+ mNetd.interfaceDelAddress(mIfName, ip.getHostAddress(), prefixLen);
+ } catch (ServiceSpecificException | RemoteException e) {
+ logError("failed to remove %s/%d: %s", ip, prefixLen, e);
+ return false;
+ }
+ return true;
+ }
+
+ public boolean clearAllAddresses() {
+ try {
+ mNMS.clearInterfaceAddresses(mIfName);
+ } catch (Exception e) {
+ logError("Failed to clear addresses: %s", e);
+ return false;
+ }
+ return true;
+ }
+
+ private void logError(String fmt, Object... args) {
+ mLog.e(String.format(fmt, args));
+ }
+}
diff --git a/services/net/java/android/net/ip/IpManager.java b/services/net/java/android/net/ip/IpManager.java
index 2d8fcf80e467..b1eb0854e334 100644
--- a/services/net/java/android/net/ip/IpManager.java
+++ b/services/net/java/android/net/ip/IpManager.java
@@ -22,7 +22,6 @@ import com.android.internal.util.WakeupMessage;
import android.content.Context;
import android.net.DhcpResults;
import android.net.INetd;
-import android.net.InterfaceConfiguration;
import android.net.IpPrefix;
import android.net.LinkAddress;
import android.net.LinkProperties.ProvisioningChange;
@@ -43,9 +42,7 @@ import android.os.INetworkManagementService;
import android.os.Message;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.os.ServiceSpecificException;
import android.os.SystemClock;
-import android.system.OsConstants;
import android.text.TextUtils;
import android.util.LocalLog;
import android.util.Log;
@@ -94,7 +91,6 @@ import java.util.stream.Collectors;
*/
public class IpManager extends StateMachine {
private static final boolean DBG = false;
- private static final boolean VDBG = false;
// For message logging.
private static final Class[] sMessageClasses = { IpManager.class, DhcpClient.class };
@@ -526,17 +522,18 @@ public class IpManager extends StateMachine {
public static final String DUMP_ARG = "ipmanager";
public static final String DUMP_ARG_CONFIRM = "confirm";
- private static final int CMD_STOP = 1;
- private static final int CMD_START = 2;
- private static final int CMD_CONFIRM = 3;
- private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 4;
+ private static final int CMD_TERMINATE_AFTER_STOP = 1;
+ private static final int CMD_STOP = 2;
+ private static final int CMD_START = 3;
+ private static final int CMD_CONFIRM = 4;
+ private static final int EVENT_PRE_DHCP_ACTION_COMPLETE = 5;
// Sent by NetlinkTracker to communicate netlink events.
- private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 5;
- private static final int CMD_UPDATE_TCP_BUFFER_SIZES = 6;
- private static final int CMD_UPDATE_HTTP_PROXY = 7;
- private static final int CMD_SET_MULTICAST_FILTER = 8;
- private static final int EVENT_PROVISIONING_TIMEOUT = 9;
- private static final int EVENT_DHCPACTION_TIMEOUT = 10;
+ private static final int EVENT_NETLINK_LINKPROPERTIES_CHANGED = 6;
+ private static final int CMD_UPDATE_TCP_BUFFER_SIZES = 7;
+ private static final int CMD_UPDATE_HTTP_PROXY = 8;
+ private static final int CMD_SET_MULTICAST_FILTER = 9;
+ private static final int EVENT_PROVISIONING_TIMEOUT = 10;
+ private static final int EVENT_DHCPACTION_TIMEOUT = 11;
private static final int MAX_LOG_RECORDS = 500;
private static final int MAX_PACKET_RECORDS = 100;
@@ -568,7 +565,7 @@ public class IpManager extends StateMachine {
private final LocalLog mConnectivityPacketLog;
private final MessageHandlingLogger mMsgStateLogger;
private final IpConnectivityLog mMetricsLog = new IpConnectivityLog();
- private final INetd mNetd;
+ private final InterfaceController mInterfaceCtrl;
private NetworkInterface mNetworkInterface;
@@ -612,12 +609,13 @@ public class IpManager extends StateMachine {
mClatInterfaceName = CLAT_PREFIX + ifName;
mCallback = new LoggingCallbackWrapper(callback);
mNwService = nwService;
- mNetd = netd;
mLog = new SharedLog(MAX_LOG_RECORDS, mTag);
mConnectivityPacketLog = new LocalLog(MAX_PACKET_RECORDS);
mMsgStateLogger = new MessageHandlingLogger();
+ mInterfaceCtrl = new InterfaceController(mInterfaceName, mNwService, netd, mLog);
+
mNetlinkTracker = new NetlinkTracker(
mInterfaceName,
new NetlinkTracker.Callback() {
@@ -704,6 +702,16 @@ public class IpManager extends StateMachine {
mMultinetworkPolicyTracker.start();
}
+ private void stopStateMachineUpdaters() {
+ try {
+ mNwService.unregisterObserver(mNetlinkTracker);
+ } catch (RemoteException e) {
+ logError("Couldn't unregister NetlinkTracker: %s", e);
+ }
+
+ mMultinetworkPolicyTracker.shutdown();
+ }
+
@Override
protected void onQuitting() {
mCallback.onQuit();
@@ -712,8 +720,7 @@ public class IpManager extends StateMachine {
// Shut down this IpManager instance altogether.
public void shutdown() {
stop();
- mMultinetworkPolicyTracker.shutdown();
- quit();
+ sendMessage(CMD_TERMINATE_AFTER_STOP);
}
public static ProvisioningConfiguration.Builder buildProvisioningConfiguration() {
@@ -858,7 +865,7 @@ public class IpManager extends StateMachine {
final String richerLogLine = getWhatToString(msg.what) + " " + logLine;
mLog.log(richerLogLine);
- if (VDBG) {
+ if (DBG) {
Log.d(mTag, richerLogLine);
}
@@ -1013,19 +1020,19 @@ public class IpManager extends StateMachine {
private void dispatchCallback(ProvisioningChange delta, LinkProperties newLp) {
switch (delta) {
case GAINED_PROVISIONING:
- if (VDBG) { Log.d(mTag, "onProvisioningSuccess()"); }
+ if (DBG) { Log.d(mTag, "onProvisioningSuccess()"); }
recordMetric(IpManagerEvent.PROVISIONING_OK);
mCallback.onProvisioningSuccess(newLp);
break;
case LOST_PROVISIONING:
- if (VDBG) { Log.d(mTag, "onProvisioningFailure()"); }
+ if (DBG) { Log.d(mTag, "onProvisioningFailure()"); }
recordMetric(IpManagerEvent.PROVISIONING_FAIL);
mCallback.onProvisioningFailure(newLp);
break;
default:
- if (VDBG) { Log.d(mTag, "onLinkPropertiesChange()"); }
+ if (DBG) { Log.d(mTag, "onLinkPropertiesChange()"); }
mCallback.onLinkPropertiesChange(newLp);
break;
}
@@ -1113,7 +1120,7 @@ public class IpManager extends StateMachine {
addAllReachableDnsServers(newLp, config.dnsServers);
}
final LinkProperties oldLp = mLinkProperties;
- if (VDBG) {
+ if (DBG) {
Log.d(mTag, String.format("Netlink-seen LPs: %s, new LPs: %s; old LPs: %s",
netlinkLinkProperties, newLp, oldLp));
}
@@ -1148,35 +1155,12 @@ public class IpManager extends StateMachine {
return (delta != ProvisioningChange.LOST_PROVISIONING);
}
- private boolean setIPv4Address(LinkAddress address) {
- final InterfaceConfiguration ifcg = new InterfaceConfiguration();
- ifcg.setLinkAddress(address);
- try {
- mNwService.setInterfaceConfig(mInterfaceName, ifcg);
- if (VDBG) Log.d(mTag, "IPv4 configuration succeeded");
- } catch (IllegalStateException | RemoteException e) {
- logError("IPv4 configuration failed: %s", e);
- return false;
- }
- return true;
- }
-
- private void clearIPv4Address() {
- try {
- final InterfaceConfiguration ifcg = new InterfaceConfiguration();
- ifcg.setLinkAddress(new LinkAddress("0.0.0.0/0"));
- mNwService.setInterfaceConfig(mInterfaceName, ifcg);
- } catch (IllegalStateException | RemoteException e) {
- logError("Failed to clear IPv4 address on interface %s: %s", mInterfaceName, e);
- }
- }
-
private void handleIPv4Success(DhcpResults dhcpResults) {
mDhcpResults = new DhcpResults(dhcpResults);
final LinkProperties newLp = assembleLinkProperties();
final ProvisioningChange delta = setLinkProperties(newLp);
- if (VDBG) {
+ if (DBG) {
Log.d(mTag, "onNewDhcpResults(" + Objects.toString(dhcpResults) + ")");
}
mCallback.onNewDhcpResults(dhcpResults);
@@ -1190,9 +1174,9 @@ public class IpManager extends StateMachine {
// that could trigger a call to this function. If we missed handling
// that message in StartedState for some reason we would still clear
// any addresses upon entry to StoppedState.
- clearIPv4Address();
+ mInterfaceCtrl.clearIPv4Address();
mDhcpResults = null;
- if (VDBG) { Log.d(mTag, "onNewDhcpResults(null)"); }
+ if (DBG) { Log.d(mTag, "onNewDhcpResults(null)"); }
mCallback.onNewDhcpResults(null);
handleProvisioningFailure();
@@ -1229,7 +1213,7 @@ public class IpManager extends StateMachine {
// If we have a StaticIpConfiguration attempt to apply it and
// handle the result accordingly.
if (mConfiguration.mStaticIpConfig != null) {
- if (setIPv4Address(mConfiguration.mStaticIpConfig.ipAddress)) {
+ if (mInterfaceCtrl.setIPv4Address(mConfiguration.mStaticIpConfig.ipAddress)) {
handleIPv4Success(new DhcpResults(mConfiguration.mStaticIpConfig));
} else {
return false;
@@ -1244,46 +1228,16 @@ public class IpManager extends StateMachine {
return true;
}
- private void setIPv6AddrGenModeIfSupported() throws RemoteException {
- try {
- mNwService.setIPv6AddrGenMode(mInterfaceName, mConfiguration.mIPv6AddrGenMode);
- } catch (ServiceSpecificException e) {
- if (e.errorCode != OsConstants.EOPNOTSUPP) {
- logError("Unable to set IPv6 addrgen mode: %s", e);
- }
- }
- }
-
private boolean startIPv6() {
- // Set privacy extensions.
- try {
- mNwService.setInterfaceIpv6PrivacyExtensions(mInterfaceName, true);
-
- setIPv6AddrGenModeIfSupported();
- mNwService.enableIpv6(mInterfaceName);
- } catch (IllegalStateException | RemoteException | ServiceSpecificException e) {
- logError("Unable to change interface settings: %s", e);
- return false;
- }
-
- return true;
+ return mInterfaceCtrl.setIPv6PrivacyExtensions(true) &&
+ mInterfaceCtrl.setIPv6AddrGenModeIfSupported(mConfiguration.mIPv6AddrGenMode) &&
+ mInterfaceCtrl.enableIPv6();
}
private boolean applyInitialConfig(InitialConfiguration config) {
- if (mNetd == null) {
- logError("tried to add %s to %s but INetd was null", config, mInterfaceName);
- return false;
- }
-
// TODO: also support specifying a static IPv4 configuration in InitialConfiguration.
for (LinkAddress addr : findAll(config.ipAddresses, LinkAddress::isIPv6)) {
- try {
- mNetd.interfaceAddAddress(
- mInterfaceName, addr.getAddress().getHostAddress(), addr.getPrefixLength());
- } catch (ServiceSpecificException | RemoteException e) {
- logError("failed to add %s to %s: %s", addr, mInterfaceName, e);
- return false;
- }
+ if (!mInterfaceCtrl.addAddress(addr)) return false;
}
return true;
@@ -1320,17 +1274,8 @@ public class IpManager extends StateMachine {
// - we don't get IPv4 routes from netlink
// so we neither react to nor need to wait for changes in either.
- try {
- mNwService.disableIpv6(mInterfaceName);
- } catch (Exception e) {
- logError("Failed to disable IPv6: %s", e);
- }
-
- try {
- mNwService.clearInterfaceAddresses(mInterfaceName);
- } catch (Exception e) {
- logError("Failed to clear addresses: %s", e);
- }
+ mInterfaceCtrl.disableIPv6();
+ mInterfaceCtrl.clearAllAddresses();
}
class StoppedState extends State {
@@ -1348,6 +1293,11 @@ public class IpManager extends StateMachine {
@Override
public boolean processMessage(Message msg) {
switch (msg.what) {
+ case CMD_TERMINATE_AFTER_STOP:
+ stopStateMachineUpdaters();
+ quit();
+ break;
+
case CMD_STOP:
break;
@@ -1404,7 +1354,7 @@ public class IpManager extends StateMachine {
break;
case DhcpClient.CMD_CLEAR_LINKADDRESS:
- clearIPv4Address();
+ mInterfaceCtrl.clearIPv4Address();
break;
case DhcpClient.CMD_ON_QUIT:
@@ -1660,12 +1610,12 @@ public class IpManager extends StateMachine {
break;
case DhcpClient.CMD_CLEAR_LINKADDRESS:
- clearIPv4Address();
+ mInterfaceCtrl.clearIPv4Address();
break;
case DhcpClient.CMD_CONFIGURE_LINKADDRESS: {
final LinkAddress ipAddress = (LinkAddress) msg.obj;
- if (setIPv4Address(ipAddress)) {
+ if (mInterfaceCtrl.setIPv4Address(ipAddress)) {
mDhcpClient.sendMessage(DhcpClient.EVENT_LINKADDRESS_CONFIGURED);
} else {
logError("Failed to set IPv4 address.");
diff --git a/services/net/java/android/net/ip/IpReachabilityMonitor.java b/services/net/java/android/net/ip/IpReachabilityMonitor.java
index e833f6a03bce..714b35a03396 100644
--- a/services/net/java/android/net/ip/IpReachabilityMonitor.java
+++ b/services/net/java/android/net/ip/IpReachabilityMonitor.java
@@ -205,44 +205,14 @@ public class IpReachabilityMonitor {
final byte[] msg = RtNetlinkNeighborMessage.newNewNeighborMessage(
1, ip, StructNdMsg.NUD_PROBE, ifIndex, null);
- int errno = -OsConstants.EPROTO;
- try (NetlinkSocket nlSocket = new NetlinkSocket(OsConstants.NETLINK_ROUTE)) {
- final long IO_TIMEOUT = 300L;
- nlSocket.connectToKernel();
- nlSocket.sendMessage(msg, 0, msg.length, IO_TIMEOUT);
- final ByteBuffer bytes = nlSocket.recvMessage(IO_TIMEOUT);
- // recvMessage() guaranteed to not return null if it did not throw.
- final NetlinkMessage response = NetlinkMessage.parse(bytes);
- if (response != null && response instanceof NetlinkErrorMessage &&
- (((NetlinkErrorMessage) response).getNlMsgError() != null)) {
- errno = ((NetlinkErrorMessage) response).getNlMsgError().error;
- if (errno != 0) {
- // TODO: consider ignoring EINVAL (-22), which appears to be
- // normal when probing a neighbor for which the kernel does
- // not already have / no longer has a link layer address.
- Log.e(TAG, "Error " + msgSnippet + ", errmsg=" + response.toString());
- }
- } else {
- String errmsg;
- if (response == null) {
- bytes.position(0);
- errmsg = "raw bytes: " + NetlinkConstants.hexify(bytes);
- } else {
- errmsg = response.toString();
- }
- Log.e(TAG, "Error " + msgSnippet + ", errmsg=" + errmsg);
- }
+ try {
+ NetlinkSocket.sendOneShotKernelMessage(OsConstants.NETLINK_ROUTE, msg);
} catch (ErrnoException e) {
- Log.e(TAG, "Error " + msgSnippet, e);
- errno = -e.errno;
- } catch (InterruptedIOException e) {
- Log.e(TAG, "Error " + msgSnippet, e);
- errno = -OsConstants.ETIMEDOUT;
- } catch (SocketException e) {
- Log.e(TAG, "Error " + msgSnippet, e);
- errno = -OsConstants.EIO;
+ Log.e(TAG, "Error " + msgSnippet + ": " + e);
+ return -e.errno;
}
- return errno;
+
+ return 0;
}
public IpReachabilityMonitor(Context context, String ifName, SharedLog log, Callback callback) {
diff --git a/services/net/java/android/net/netlink/ConntrackMessage.java b/services/net/java/android/net/netlink/ConntrackMessage.java
new file mode 100644
index 000000000000..605c46b3b4e0
--- /dev/null
+++ b/services/net/java/android/net/netlink/ConntrackMessage.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2017 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.net.netlink;
+
+import static android.net.netlink.NetlinkConstants.alignedLengthOf;
+import static android.net.netlink.StructNlAttr.makeNestedType;
+import static android.net.netlink.StructNlAttr.NLA_HEADERLEN;
+import static android.net.netlink.StructNlMsgHdr.NLM_F_ACK;
+import static android.net.netlink.StructNlMsgHdr.NLM_F_DUMP;
+import static android.net.netlink.StructNlMsgHdr.NLM_F_REPLACE;
+import static android.net.netlink.StructNlMsgHdr.NLM_F_REQUEST;
+import static android.net.util.NetworkConstants.IPV4_ADDR_LEN;
+import static java.nio.ByteOrder.BIG_ENDIAN;
+
+import android.system.OsConstants;
+import android.util.Log;
+import libcore.io.SizeOf;
+
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+
+/**
+ * A NetlinkMessage subclass for netlink conntrack messages.
+ *
+ * see also: &lt;linux_src&gt;/include/uapi/linux/netfilter/nfnetlink_conntrack.h
+ *
+ * @hide
+ */
+public class ConntrackMessage extends NetlinkMessage {
+ public static final int STRUCT_SIZE = StructNlMsgHdr.STRUCT_SIZE + StructNfGenMsg.STRUCT_SIZE;
+
+ public static final short NFNL_SUBSYS_CTNETLINK = 1;
+ public static final short IPCTNL_MSG_CT_NEW = 0;
+
+ // enum ctattr_type
+ public static final short CTA_TUPLE_ORIG = 1;
+ public static final short CTA_TUPLE_REPLY = 2;
+ public static final short CTA_TIMEOUT = 7;
+
+ // enum ctattr_tuple
+ public static final short CTA_TUPLE_IP = 1;
+ public static final short CTA_TUPLE_PROTO = 2;
+
+ // enum ctattr_ip
+ public static final short CTA_IP_V4_SRC = 1;
+ public static final short CTA_IP_V4_DST = 2;
+
+ // enum ctattr_l4proto
+ public static final short CTA_PROTO_NUM = 1;
+ public static final short CTA_PROTO_SRC_PORT = 2;
+ public static final short CTA_PROTO_DST_PORT = 3;
+
+ public static byte[] newIPv4TimeoutUpdateRequest(
+ int proto, Inet4Address src, int sport, Inet4Address dst, int dport, int timeoutSec) {
+ // *** STYLE WARNING ***
+ //
+ // Code below this point uses extra block indentation to highlight the
+ // packing of nested tuple netlink attribute types.
+ final StructNlAttr ctaTupleOrig = new StructNlAttr(CTA_TUPLE_ORIG,
+ new StructNlAttr(CTA_TUPLE_IP,
+ new StructNlAttr(CTA_IP_V4_SRC, src),
+ new StructNlAttr(CTA_IP_V4_DST, dst)),
+ new StructNlAttr(CTA_TUPLE_PROTO,
+ new StructNlAttr(CTA_PROTO_NUM, (byte) proto),
+ new StructNlAttr(CTA_PROTO_SRC_PORT, (short) sport, BIG_ENDIAN),
+ new StructNlAttr(CTA_PROTO_DST_PORT, (short) dport, BIG_ENDIAN)));
+
+ final StructNlAttr ctaTimeout = new StructNlAttr(CTA_TIMEOUT, timeoutSec, BIG_ENDIAN);
+
+ final int payloadLength = ctaTupleOrig.getAlignedLength() + ctaTimeout.getAlignedLength();
+ final byte[] bytes = new byte[STRUCT_SIZE + payloadLength];
+ final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
+ byteBuffer.order(ByteOrder.nativeOrder());
+
+ final ConntrackMessage ctmsg = new ConntrackMessage();
+ ctmsg.mHeader.nlmsg_len = bytes.length;
+ ctmsg.mHeader.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | IPCTNL_MSG_CT_NEW;
+ ctmsg.mHeader.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_REPLACE;
+ ctmsg.mHeader.nlmsg_seq = 1;
+ ctmsg.pack(byteBuffer);
+
+ ctaTupleOrig.pack(byteBuffer);
+ ctaTimeout.pack(byteBuffer);
+
+ return bytes;
+ }
+
+ protected StructNfGenMsg mNfGenMsg;
+
+ private ConntrackMessage() {
+ super(new StructNlMsgHdr());
+ mNfGenMsg = new StructNfGenMsg((byte) OsConstants.AF_INET);
+ }
+
+ public void pack(ByteBuffer byteBuffer) {
+ mHeader.pack(byteBuffer);
+ mNfGenMsg.pack(byteBuffer);
+ }
+}
diff --git a/services/net/java/android/net/netlink/NetlinkSocket.java b/services/net/java/android/net/netlink/NetlinkSocket.java
index 657d48c15250..a9e0cd996fbd 100644
--- a/services/net/java/android/net/netlink/NetlinkSocket.java
+++ b/services/net/java/android/net/netlink/NetlinkSocket.java
@@ -51,6 +51,47 @@ public class NetlinkSocket implements Closeable {
private long mLastRecvTimeoutMs;
private long mLastSendTimeoutMs;
+ public static void sendOneShotKernelMessage(int nlProto, byte[] msg) throws ErrnoException {
+ final String errPrefix = "Error in NetlinkSocket.sendOneShotKernelMessage";
+
+ try (NetlinkSocket nlSocket = new NetlinkSocket(nlProto)) {
+ final long IO_TIMEOUT = 300L;
+ nlSocket.connectToKernel();
+ nlSocket.sendMessage(msg, 0, msg.length, IO_TIMEOUT);
+ final ByteBuffer bytes = nlSocket.recvMessage(IO_TIMEOUT);
+ // recvMessage() guaranteed to not return null if it did not throw.
+ final NetlinkMessage response = NetlinkMessage.parse(bytes);
+ if (response != null && response instanceof NetlinkErrorMessage &&
+ (((NetlinkErrorMessage) response).getNlMsgError() != null)) {
+ final int errno = ((NetlinkErrorMessage) response).getNlMsgError().error;
+ if (errno != 0) {
+ // TODO: consider ignoring EINVAL (-22), which appears to be
+ // normal when probing a neighbor for which the kernel does
+ // not already have / no longer has a link layer address.
+ Log.e(TAG, errPrefix + ", errmsg=" + response.toString());
+ // Note: convert kernel errnos (negative) into userspace errnos (positive).
+ throw new ErrnoException(response.toString(), Math.abs(errno));
+ }
+ } else {
+ final String errmsg;
+ if (response == null) {
+ bytes.position(0);
+ errmsg = "raw bytes: " + NetlinkConstants.hexify(bytes);
+ } else {
+ errmsg = response.toString();
+ }
+ Log.e(TAG, errPrefix + ", errmsg=" + errmsg);
+ throw new ErrnoException(errmsg, OsConstants.EPROTO);
+ }
+ } catch (InterruptedIOException e) {
+ Log.e(TAG, errPrefix, e);
+ throw new ErrnoException(errPrefix, OsConstants.ETIMEDOUT, e);
+ } catch (SocketException e) {
+ Log.e(TAG, errPrefix, e);
+ throw new ErrnoException(errPrefix, OsConstants.EIO, e);
+ }
+ }
+
public NetlinkSocket(int nlProto) throws ErrnoException {
mDescriptor = Os.socket(
OsConstants.AF_NETLINK, OsConstants.SOCK_DGRAM, nlProto);
diff --git a/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java b/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java
index 02df1313c43f..e784fbb5e0dc 100644
--- a/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java
+++ b/services/net/java/android/net/netlink/RtNetlinkNeighborMessage.java
@@ -36,7 +36,7 @@ import java.nio.ByteOrder;
/**
- * A NetlinkMessage subclass for netlink error messages.
+ * A NetlinkMessage subclass for rtnetlink neighbor messages.
*
* see also: &lt;linux_src&gt;/include/uapi/linux/neighbour.h
*
diff --git a/services/net/java/android/net/netlink/StructNfGenMsg.java b/services/net/java/android/net/netlink/StructNfGenMsg.java
new file mode 100644
index 000000000000..99695e23b248
--- /dev/null
+++ b/services/net/java/android/net/netlink/StructNfGenMsg.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2017 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.net.netlink;
+
+import libcore.io.SizeOf;
+
+import java.nio.ByteBuffer;
+
+
+/**
+ * struct nfgenmsg
+ *
+ * see &lt;linux_src&gt;/include/uapi/linux/netfilter/nfnetlink.h
+ *
+ * @hide
+ */
+public class StructNfGenMsg {
+ public static final int STRUCT_SIZE = 2 + SizeOf.SHORT;
+
+ public static final int NFNETLINK_V0 = 0;
+
+ final public byte nfgen_family;
+ final public byte version;
+ final public short res_id; // N.B.: this is big endian in the kernel
+
+ public StructNfGenMsg(byte family) {
+ nfgen_family = family;
+ version = (byte) NFNETLINK_V0;
+ res_id = (short) 0;
+ }
+
+ public void pack(ByteBuffer byteBuffer) {
+ byteBuffer.put(nfgen_family);
+ byteBuffer.put(version);
+ byteBuffer.putShort(res_id);
+ }
+}
diff --git a/services/net/java/android/net/netlink/StructNlAttr.java b/services/net/java/android/net/netlink/StructNlAttr.java
index 597a6aa1c9eb..811bdbbe821a 100644
--- a/services/net/java/android/net/netlink/StructNlAttr.java
+++ b/services/net/java/android/net/netlink/StructNlAttr.java
@@ -34,7 +34,12 @@ import java.nio.ByteBuffer;
*/
public class StructNlAttr {
// Already aligned.
- public static final int NLA_HEADERLEN = 4;
+ public static final int NLA_HEADERLEN = 4;
+ public static final int NLA_F_NESTED = (1 << 15);
+
+ public static short makeNestedType(short type) {
+ return (short) (type | NLA_F_NESTED);
+ }
// Return a (length, type) object only, without consuming any bytes in
// |byteBuffer| and without copying or interpreting any value bytes.
@@ -46,10 +51,17 @@ public class StructNlAttr {
}
final int baseOffset = byteBuffer.position();
- final StructNlAttr struct = new StructNlAttr();
- struct.nla_len = byteBuffer.getShort();
- struct.nla_type = byteBuffer.getShort();
- struct.mByteOrder = byteBuffer.order();
+ // Assume the byte order of the buffer is the expected byte order of the value.
+ final StructNlAttr struct = new StructNlAttr(byteBuffer.order());
+ // The byte order of nla_len and nla_type is always native.
+ final ByteOrder originalOrder = byteBuffer.order();
+ byteBuffer.order(ByteOrder.nativeOrder());
+ try {
+ struct.nla_len = byteBuffer.getShort();
+ struct.nla_type = byteBuffer.getShort();
+ } finally {
+ byteBuffer.order(originalOrder);
+ }
byteBuffer.position(baseOffset);
if (struct.nla_len < NLA_HEADERLEN) {
@@ -78,13 +90,65 @@ public class StructNlAttr {
return struct;
}
- public short nla_len;
+ public short nla_len = (short) NLA_HEADERLEN;
public short nla_type;
public byte[] nla_value;
- public ByteOrder mByteOrder;
- public StructNlAttr() {
- mByteOrder = ByteOrder.nativeOrder();
+ // The byte order used to read/write the value member. Netlink length and
+ // type members are always read/written in native order.
+ private ByteOrder mByteOrder = ByteOrder.nativeOrder();
+
+ public StructNlAttr() {}
+
+ public StructNlAttr(ByteOrder byteOrder) {
+ mByteOrder = byteOrder;
+ }
+
+ public StructNlAttr(short type, byte value) {
+ nla_type = type;
+ setValue(new byte[1]);
+ nla_value[0] = value;
+ }
+
+ public StructNlAttr(short type, short value) {
+ this(type, value, ByteOrder.nativeOrder());
+ }
+
+ public StructNlAttr(short type, short value, ByteOrder order) {
+ this(order);
+ nla_type = type;
+ setValue(new byte[SizeOf.SHORT]);
+ getValueAsByteBuffer().putShort(value);
+ }
+
+ public StructNlAttr(short type, int value) {
+ this(type, value, ByteOrder.nativeOrder());
+ }
+
+ public StructNlAttr(short type, int value, ByteOrder order) {
+ this(order);
+ nla_type = type;
+ setValue(new byte[SizeOf.INT]);
+ getValueAsByteBuffer().putInt(value);
+ }
+
+ public StructNlAttr(short type, InetAddress ip) {
+ nla_type = type;
+ setValue(ip.getAddress());
+ }
+
+ public StructNlAttr(short type, StructNlAttr... nested) {
+ this();
+ nla_type = makeNestedType(type);
+
+ int payloadLength = 0;
+ for (StructNlAttr nla : nested) payloadLength += nla.getAlignedLength();
+ setValue(new byte[payloadLength]);
+
+ final ByteBuffer buf = getValueAsByteBuffer();
+ for (StructNlAttr nla : nested) {
+ nla.pack(buf);
+ }
}
public int getAlignedLength() {
@@ -117,13 +181,25 @@ public class StructNlAttr {
}
public void pack(ByteBuffer byteBuffer) {
+ final ByteOrder originalOrder = byteBuffer.order();
final int originalPosition = byteBuffer.position();
- byteBuffer.putShort(nla_len);
- byteBuffer.putShort(nla_type);
- byteBuffer.put(nla_value);
+
+ byteBuffer.order(ByteOrder.nativeOrder());
+ try {
+ byteBuffer.putShort(nla_len);
+ byteBuffer.putShort(nla_type);
+ if (nla_value != null) byteBuffer.put(nla_value);
+ } finally {
+ byteBuffer.order(originalOrder);
+ }
byteBuffer.position(originalPosition + getAlignedLength());
}
+ private void setValue(byte[] value) {
+ nla_value = value;
+ nla_len = (short) (NLA_HEADERLEN + ((nla_value != null) ? nla_value.length : 0));
+ }
+
@Override
public String toString() {
return "StructNlAttr{ "
diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java
index 6a6b542f9bb6..71ba685b99c9 100644
--- a/services/print/java/com/android/server/print/PrintManagerService.java
+++ b/services/print/java/com/android/server/print/PrintManagerService.java
@@ -63,6 +63,7 @@ import com.android.server.SystemService;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -645,7 +646,6 @@ public final class PrintManagerService extends SystemService {
int opti = 0;
boolean dumpAsProto = false;
- int user = UserHandle.USER_ALL;
while (opti < args.length) {
String opt = args[opti];
if (opt == null || opt.length() <= 0 || opt.charAt(0) != '-') {
@@ -659,48 +659,47 @@ public final class PrintManagerService extends SystemService {
}
}
+ ArrayList<UserState> userStatesToDump = new ArrayList<>();
synchronized (mLock) {
- final long identity = Binder.clearCallingIdentity();
- try {
- if (dumpAsProto) {
- dumpLocked(new ProtoOutputStream(fd), UserHandle.of(user));
- } else {
- dumpLocked(fd, pw, UserHandle.of(user));
- }
- } finally {
- Binder.restoreCallingIdentity(identity);
+ int numUserStates = mUserStates.size();
+ for (int i = 0; i < numUserStates; i++) {
+ userStatesToDump.add(mUserStates.valueAt(i));
+ }
+ }
+
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ if (dumpAsProto) {
+ dump(new ProtoOutputStream(fd), userStatesToDump);
+ } else {
+ dump(fd, pw, userStatesToDump);
}
+ } finally {
+ Binder.restoreCallingIdentity(identity);
}
}
- private void dumpLocked(@NonNull ProtoOutputStream proto, @NonNull UserHandle user) {
- final int userStateCount = mUserStates.size();
+ private void dump(@NonNull ProtoOutputStream proto,
+ @NonNull ArrayList<UserState> userStatesToDump) {
+ final int userStateCount = userStatesToDump.size();
for (int i = 0; i < userStateCount; i++) {
- UserState userState = mUserStates.valueAt(i);
-
- if (user.equals(UserHandle.ALL) || mUserStates.keyAt(i) == user.getIdentifier()) {
- long token = proto.start(PrintServiceDumpProto.USER_STATES);
- userState.dump(proto);
- proto.end(token);
- }
+ long token = proto.start(PrintServiceDumpProto.USER_STATES);
+ userStatesToDump.get(i).dump(proto);
+ proto.end(token);
}
proto.flush();
}
- private void dumpLocked(@NonNull FileDescriptor fd, @NonNull PrintWriter pw,
- @NonNull UserHandle user) {
+ private void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw,
+ @NonNull ArrayList<UserState> userStatesToDump) {
pw = Preconditions.checkNotNull(pw);
pw.println("PRINT MANAGER STATE (dumpsys print)");
- final int userStateCount = mUserStates.size();
+ final int userStateCount = userStatesToDump.size();
for (int i = 0; i < userStateCount; i++) {
- UserState userState = mUserStates.valueAt(i);
-
- if (user.equals(UserHandle.ALL) || mUserStates.keyAt(i) == user.getIdentifier()) {
- userState.dump(fd, pw, "");
- pw.println();
- }
+ userStatesToDump.get(i).dump(fd, pw, "");
+ pw.println();
}
}
diff --git a/services/robotests/Android.mk b/services/robotests/Android.mk
new file mode 100644
index 000000000000..322b891116d9
--- /dev/null
+++ b/services/robotests/Android.mk
@@ -0,0 +1,77 @@
+# Copyright (C) 2016 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.
+
+
+############################################################
+# FrameworksServicesLib app just for Robolectric test target. #
+############################################################
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_PACKAGE_NAME := FrameworksServicesLib
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_PRIVILEGED_MODULE := true
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ frameworks-base-testutils \
+ services.backup \
+ services.core \
+ android-support-test \
+ mockito-target-minus-junit4 \
+ platform-test-annotations \
+ truth-prebuilt
+
+include $(BUILD_PACKAGE)
+
+#############################################
+# FrameworksServices Robolectric test target. #
+#############################################
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+# Include the testing libraries (JUnit4 + Robolectric libs).
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ truth-prebuilt
+
+LOCAL_JAVA_LIBRARIES := \
+ junit \
+ platform-robolectric-prebuilt
+
+LOCAL_INSTRUMENTATION_FOR := FrameworksServicesLib
+LOCAL_MODULE := FrameworksServicesRoboTests
+
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+#############################################################
+# FrameworksServices runner target to run the previous target. #
+#############################################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := RunFrameworksServicesRoboTests
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ FrameworksServicesRoboTests
+
+LOCAL_TEST_PACKAGE := FrameworksServicesLib
+
+LOCAL_INSTRUMENT_SOURCE_DIRS := $(dir $(LOCAL_PATH))backup/java
+
+include prebuilts/misc/common/robolectric/run_robotests.mk
diff --git a/services/robotests/src/com/android/server/backup/TransportManagerTest.java b/services/robotests/src/com/android/server/backup/TransportManagerTest.java
new file mode 100644
index 000000000000..2824b35636b7
--- /dev/null
+++ b/services/robotests/src/com/android/server/backup/TransportManagerTest.java
@@ -0,0 +1,571 @@
+/*
+ * Copyright (C) 2017 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.backup;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+
+import android.app.backup.BackupManager;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.os.IBinder;
+import android.platform.test.annotations.Presubmit;
+
+import com.android.server.backup.testing.BackupTransportStub;
+import com.android.server.backup.testing.DefaultPackageManagerWithQueryIntentServicesAsUser;
+import com.android.server.backup.testing.ShadowBackupTransportStub;
+import com.android.server.backup.testing.ShadowContextImplForBackup;
+import com.android.server.backup.testing.TransportBoundListenerStub;
+import com.android.server.backup.testing.TransportReadyCallbackStub;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.res.builder.RobolectricPackageManager;
+import org.robolectric.shadows.ShadowLog;
+import org.robolectric.shadows.ShadowLooper;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(
+ manifest = Config.NONE,
+ sdk = 23,
+ shadows = {
+ ShadowContextImplForBackup.class,
+ ShadowBackupTransportStub.class
+ }
+)
+@Presubmit
+public class TransportManagerTest {
+ private static final String PACKAGE_NAME = "some.package.name";
+ private static final String ANOTHER_PACKAGE_NAME = "another.package.name";
+
+ private TransportInfo mTransport1;
+ private TransportInfo mTransport2;
+
+ private RobolectricPackageManager mPackageManager;
+
+ private final TransportBoundListenerStub mTransportBoundListenerStub =
+ new TransportBoundListenerStub(true);
+
+ private final TransportReadyCallbackStub mTransportReadyCallbackStub =
+ new TransportReadyCallbackStub();
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+
+ ShadowLog.stream = System.out;
+ mPackageManager = new DefaultPackageManagerWithQueryIntentServicesAsUser(
+ RuntimeEnvironment.getAppResourceLoader());
+ RuntimeEnvironment.setRobolectricPackageManager(mPackageManager);
+
+ mTransport1 = new TransportInfo(PACKAGE_NAME, "transport1.name");
+ mTransport2 = new TransportInfo(PACKAGE_NAME, "transport2.name");
+
+ ShadowContextImplForBackup.sComponentBinderMap.put(mTransport1.componentName,
+ mTransport1.binder);
+ ShadowContextImplForBackup.sComponentBinderMap.put(mTransport2.componentName,
+ mTransport2.binder);
+ ShadowBackupTransportStub.sBinderTransportMap.put(mTransport1.binder, mTransport1.stub);
+ ShadowBackupTransportStub.sBinderTransportMap.put(mTransport2.binder, mTransport2.stub);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ ShadowContextImplForBackup.resetBackupShadowState();
+ }
+
+ @Test
+ public void onPackageAdded_bindsToAllTransports() throws Exception {
+ setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2),
+ ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
+
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ new HashSet<>(Arrays.asList(
+ mTransport1.componentName, mTransport2.componentName)),
+ null /* defaultTransport */,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+ transportManager.onPackageAdded(PACKAGE_NAME);
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.componentName, mTransport2.componentName));
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.name, mTransport2.name));
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isTrue();
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue();
+ }
+
+ @Test
+ public void onPackageAdded_oneTransportUnavailable_bindsToOnlyOneTransport() throws Exception {
+ setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2),
+ ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
+
+ ShadowContextImplForBackup.sUnbindableComponents.add(mTransport1.componentName);
+
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ new HashSet<>(Arrays.asList(
+ mTransport1.componentName, mTransport2.componentName)),
+ null /* defaultTransport */,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+ transportManager.onPackageAdded(PACKAGE_NAME);
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ Collections.singleton(mTransport2.componentName));
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ Collections.singleton(mTransport2.name));
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse();
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue();
+ }
+
+ @Test
+ public void onPackageAdded_whitelistIsNull_doesNotBindToTransports() throws Exception {
+ setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2),
+ ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
+
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ null /* whitelist */,
+ null /* defaultTransport */,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+ transportManager.onPackageAdded(PACKAGE_NAME);
+
+ assertThat(transportManager.getAllTransportComponents()).isEmpty();
+ assertThat(transportManager.getBoundTransportNames()).isEmpty();
+ assertThat(mTransportBoundListenerStub.isCalled()).isFalse();
+ }
+
+ @Test
+ public void onPackageAdded_onlyOneTransportWhitelisted_onlyConnectsToWhitelistedTransport()
+ throws Exception {
+ setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2),
+ ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
+
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ new HashSet<>(Collections.singleton(mTransport2.componentName)),
+ null /* defaultTransport */,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+ transportManager.onPackageAdded(PACKAGE_NAME);
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ Collections.singleton(mTransport2.componentName));
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ Collections.singleton(mTransport2.name));
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse();
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue();
+ }
+
+ @Test
+ public void onPackageAdded_appIsNotPrivileged_doesNotBindToTransports() throws Exception {
+ setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2), 0);
+
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ new HashSet<>(Arrays.asList(
+ mTransport1.componentName, mTransport2.componentName)),
+ null /* defaultTransport */,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+ transportManager.onPackageAdded(PACKAGE_NAME);
+
+ assertThat(transportManager.getAllTransportComponents()).isEmpty();
+ assertThat(transportManager.getBoundTransportNames()).isEmpty();
+ assertThat(mTransportBoundListenerStub.isCalled()).isFalse();
+ }
+
+ @Test
+ public void onPackageRemoved_transportsUnbound() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ transportManager.onPackageRemoved(PACKAGE_NAME);
+
+ assertThat(transportManager.getAllTransportComponents()).isEmpty();
+ assertThat(transportManager.getBoundTransportNames()).isEmpty();
+ }
+
+ @Test
+ public void onPackageRemoved_incorrectPackageName_nothingHappens() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ transportManager.onPackageRemoved(ANOTHER_PACKAGE_NAME);
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.componentName, mTransport2.componentName));
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.name, mTransport2.name));
+ }
+
+ @Test
+ public void onPackageChanged_oneComponentChanged_onlyOneTransportRebound() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ transportManager.onPackageChanged(PACKAGE_NAME, new String[]{mTransport2.name});
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.componentName, mTransport2.componentName));
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.name, mTransport2.name));
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse();
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue();
+ }
+
+ @Test
+ public void onPackageChanged_nothingChanged_noTransportsRebound() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ transportManager.onPackageChanged(PACKAGE_NAME, new String[0]);
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.componentName, mTransport2.componentName));
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.name, mTransport2.name));
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse();
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isFalse();
+ }
+
+ @Test
+ public void onPackageChanged_unexpectedComponentChanged_noTransportsRebound() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ transportManager.onPackageChanged(PACKAGE_NAME, new String[]{"unexpected.component"});
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.componentName, mTransport2.componentName));
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.name, mTransport2.name));
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse();
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isFalse();
+ }
+
+ @Test
+ public void onPackageChanged_transportsRebound() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ transportManager.onPackageChanged(PACKAGE_NAME, new String[]{mTransport2.name});
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.componentName, mTransport2.componentName));
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ Arrays.asList(mTransport1.name, mTransport2.name));
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport1.stub)).isFalse();
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(mTransport2.stub)).isTrue();
+ }
+
+ @Test
+ public void getTransportBinder_returnsCorrectBinder() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ assertThat(transportManager.getTransportBinder(mTransport1.name)).isEqualTo(
+ mTransport1.stub);
+ assertThat(transportManager.getTransportBinder(mTransport2.name)).isEqualTo(
+ mTransport2.stub);
+ }
+
+ @Test
+ public void getTransportBinder_incorrectTransportName_returnsNull() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ assertThat(transportManager.getTransportBinder("incorrect.transport")).isNull();
+ }
+
+ @Test
+ public void getTransportBinder_oneTransportUnavailable_returnsCorrectBinder() throws Exception {
+ TransportManager transportManager =
+ createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2),
+ Collections.singletonList(mTransport1), mTransport1.name);
+
+ assertThat(transportManager.getTransportBinder(mTransport1.name)).isNull();
+ assertThat(transportManager.getTransportBinder(mTransport2.name)).isEqualTo(
+ mTransport2.stub);
+ }
+
+ @Test
+ public void getCurrentTransport_selectTransportNotCalled_returnsDefaultTransport()
+ throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ assertThat(transportManager.getCurrentTransportName()).isEqualTo(mTransport1.name);
+ }
+
+ @Test
+ public void getCurrentTransport_selectTransportCalled_returnsCorrectTransport()
+ throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ assertThat(transportManager.getCurrentTransportName()).isEqualTo(mTransport1.name);
+
+ transportManager.selectTransport(mTransport2.name);
+
+ assertThat(transportManager.getCurrentTransportName()).isEqualTo(mTransport2.name);
+ }
+
+ @Test
+ public void getCurrentTransportBinder_returnsCorrectBinder() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ assertThat(transportManager.getCurrentTransportBinder()).isEqualTo(mTransport1.stub);
+ }
+
+ @Test
+ public void getCurrentTransportBinder_transportNotBound_returnsNull() throws Exception {
+ TransportManager transportManager =
+ createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2),
+ Collections.singletonList(mTransport1), mTransport2.name);
+
+ transportManager.selectTransport(mTransport1.name);
+
+ assertThat(transportManager.getCurrentTransportBinder()).isNull();
+ }
+
+ @Test
+ public void getTransportName_returnsCorrectTransportName() throws Exception {
+ TransportManager transportManager = createTransportManagerAndSetUpTransports(
+ Arrays.asList(mTransport1, mTransport2), mTransport1.name);
+
+ assertThat(transportManager.getTransportName(mTransport1.stub)).isEqualTo(mTransport1.name);
+ assertThat(transportManager.getTransportName(mTransport2.stub)).isEqualTo(mTransport2.name);
+ }
+
+ @Test
+ public void getTransportName_transportNotBound_returnsNull() throws Exception {
+ TransportManager transportManager =
+ createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2),
+ Collections.singletonList(mTransport1), mTransport1.name);
+
+ assertThat(transportManager.getTransportName(mTransport1.stub)).isNull();
+ assertThat(transportManager.getTransportName(mTransport2.stub)).isEqualTo(mTransport2.name);
+ }
+
+ @Test
+ public void getTransportWhitelist_returnsCorrectWhiteList() throws Exception {
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ new HashSet<>(Arrays.asList(mTransport1.componentName, mTransport2.componentName)),
+ mTransport1.name,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+
+ assertThat(transportManager.getTransportWhitelist()).containsExactlyElementsIn(
+ Arrays.asList(mTransport1.componentName, mTransport2.componentName));
+ }
+
+ @Test
+ public void getTransportWhitelist_whiteListIsNull_returnsEmptyArray() throws Exception {
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ null /* whitelist */,
+ mTransport1.name,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+
+ assertThat(transportManager.getTransportWhitelist()).isEmpty();
+ }
+
+ @Test
+ public void selectTransport_setsTransportCorrectlyAndReturnsPreviousTransport()
+ throws Exception {
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ null /* whitelist */,
+ mTransport1.name,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+
+ assertThat(transportManager.selectTransport(mTransport2.name)).isEqualTo(mTransport1.name);
+ assertThat(transportManager.selectTransport(mTransport1.name)).isEqualTo(mTransport2.name);
+ }
+
+ @Test
+ public void ensureTransportReady_transportNotYetBound_callsListenerOnFailure()
+ throws Exception {
+ setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2),
+ ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
+
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ new HashSet<>(Arrays.asList(mTransport1.componentName, mTransport2.componentName)),
+ mTransport1.name,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+
+ transportManager.ensureTransportReady(mTransport1.componentName,
+ mTransportReadyCallbackStub);
+
+ assertThat(mTransportReadyCallbackStub.getSuccessCalls()).isEmpty();
+ assertThat(mTransportReadyCallbackStub.getFailureCalls()).containsExactlyElementsIn(
+ Collections.singleton(
+ BackupManager.ERROR_TRANSPORT_UNAVAILABLE));
+ }
+
+ @Test
+ public void ensureTransportReady_transportCannotBeBound_callsListenerOnFailure()
+ throws Exception {
+ TransportManager transportManager =
+ createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2),
+ Collections.singletonList(mTransport1), mTransport1.name);
+
+ transportManager.ensureTransportReady(mTransport1.componentName,
+ mTransportReadyCallbackStub);
+
+ assertThat(mTransportReadyCallbackStub.getSuccessCalls()).isEmpty();
+ assertThat(mTransportReadyCallbackStub.getFailureCalls()).containsExactlyElementsIn(
+ Collections.singleton(
+ BackupManager.ERROR_TRANSPORT_UNAVAILABLE));
+ }
+
+ @Test
+ public void ensureTransportReady_transportsAlreadyBound_callsListenerOnSuccess()
+ throws Exception {
+ TransportManager transportManager =
+ createTransportManagerAndSetUpTransports(Collections.singletonList(mTransport2),
+ Collections.singletonList(mTransport1), mTransport1.name);
+
+ transportManager.ensureTransportReady(mTransport2.componentName,
+ mTransportReadyCallbackStub);
+
+ assertThat(mTransportReadyCallbackStub.getSuccessCalls()).containsExactlyElementsIn(
+ Collections.singleton(mTransport2.name));
+ assertThat(mTransportReadyCallbackStub.getFailureCalls()).isEmpty();
+ }
+
+ private void setUpPackageWithTransports(String packageName, List<TransportInfo> transports,
+ int flags) throws Exception {
+ PackageInfo packageInfo = new PackageInfo();
+ packageInfo.packageName = packageName;
+ packageInfo.applicationInfo = new ApplicationInfo();
+ packageInfo.applicationInfo.privateFlags = flags;
+
+ mPackageManager.addPackage(packageInfo);
+
+ List<ResolveInfo> transportsInfo = new ArrayList<>();
+ for (TransportInfo transport : transports) {
+ ResolveInfo info = new ResolveInfo();
+ info.serviceInfo = new ServiceInfo();
+ info.serviceInfo.packageName = packageName;
+ info.serviceInfo.name = transport.name;
+ transportsInfo.add(info);
+ }
+
+ Intent intent = new Intent(TransportManager.SERVICE_ACTION_TRANSPORT_HOST);
+ intent.setPackage(packageName);
+
+ mPackageManager.addResolveInfoForIntent(intent, transportsInfo);
+ }
+
+ private TransportManager createTransportManagerAndSetUpTransports(
+ List<TransportInfo> availableTransports, String defaultTransportName) throws Exception {
+ return createTransportManagerAndSetUpTransports(availableTransports,
+ Collections.<TransportInfo>emptyList(), defaultTransportName);
+ }
+
+ private TransportManager createTransportManagerAndSetUpTransports(
+ List<TransportInfo> availableTransports, List<TransportInfo> unavailableTransports,
+ String defaultTransportName)
+ throws Exception {
+ List<String> availableTransportsNames = new ArrayList<>();
+ List<ComponentName> availableTransportsComponentNames = new ArrayList<>();
+ for (TransportInfo transport : availableTransports) {
+ availableTransportsNames.add(transport.name);
+ availableTransportsComponentNames.add(transport.componentName);
+ }
+
+ List<ComponentName> allTransportsComponentNames = new ArrayList<>();
+ allTransportsComponentNames.addAll(availableTransportsComponentNames);
+ for (TransportInfo transport : unavailableTransports) {
+ allTransportsComponentNames.add(transport.componentName);
+ }
+
+ for (TransportInfo transport : unavailableTransports) {
+ ShadowContextImplForBackup.sUnbindableComponents.add(transport.componentName);
+ }
+
+ setUpPackageWithTransports(PACKAGE_NAME, Arrays.asList(mTransport1, mTransport2),
+ ApplicationInfo.PRIVATE_FLAG_PRIVILEGED);
+
+ TransportManager transportManager = new TransportManager(
+ RuntimeEnvironment.application.getApplicationContext(),
+ new HashSet<>(allTransportsComponentNames),
+ defaultTransportName,
+ mTransportBoundListenerStub,
+ ShadowLooper.getMainLooper());
+ transportManager.onPackageAdded(PACKAGE_NAME);
+
+ assertThat(transportManager.getAllTransportComponents()).asList().containsExactlyElementsIn(
+ availableTransportsComponentNames);
+ assertThat(transportManager.getBoundTransportNames()).asList().containsExactlyElementsIn(
+ availableTransportsNames);
+ for (TransportInfo transport : availableTransports) {
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(transport.stub)).isTrue();
+ }
+ for (TransportInfo transport : unavailableTransports) {
+ assertThat(mTransportBoundListenerStub.isCalledForTransport(transport.stub)).isFalse();
+ }
+
+ mTransportBoundListenerStub.resetState();
+
+ return transportManager;
+ }
+
+ private static class TransportInfo {
+ public final String packageName;
+ public final String name;
+ public final ComponentName componentName;
+ public final BackupTransportStub stub;
+ public final IBinder binder;
+
+ TransportInfo(String packageName, String name) {
+ this.packageName = packageName;
+ this.name = name;
+ this.componentName = new ComponentName(packageName, name);
+ this.stub = new BackupTransportStub(name);
+ this.binder = mock(IBinder.class);
+ }
+ }
+}
diff --git a/services/robotests/src/com/android/server/backup/testing/BackupTransportStub.java b/services/robotests/src/com/android/server/backup/testing/BackupTransportStub.java
new file mode 100644
index 000000000000..ec09f908c90d
--- /dev/null
+++ b/services/robotests/src/com/android/server/backup/testing/BackupTransportStub.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2017 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.backup.testing;
+
+import android.app.backup.RestoreDescription;
+import android.app.backup.RestoreSet;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+
+import com.android.internal.backup.IBackupTransport;
+
+/**
+ * Stub backup transport, doing nothing and returning default values.
+ */
+public class BackupTransportStub implements IBackupTransport {
+
+ private final String mName;
+
+ public BackupTransportStub(String name) {
+ mName = name;
+ }
+
+ @Override
+ public IBinder asBinder() {
+ return null;
+ }
+
+ @Override
+ public String name() throws RemoteException {
+ return mName;
+ }
+
+ @Override
+ public Intent configurationIntent() throws RemoteException {
+ return null;
+ }
+
+ @Override
+ public String currentDestinationString() throws RemoteException {
+ return null;
+ }
+
+ @Override
+ public Intent dataManagementIntent() throws RemoteException {
+ return null;
+ }
+
+ @Override
+ public String dataManagementLabel() throws RemoteException {
+ return null;
+ }
+
+ @Override
+ public String transportDirName() throws RemoteException {
+ return null;
+ }
+
+ @Override
+ public long requestBackupTime() throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int initializeDevice() throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int performBackup(PackageInfo packageInfo, ParcelFileDescriptor inFd, int flags)
+ throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int clearBackupData(PackageInfo packageInfo) throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int finishBackup() throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public RestoreSet[] getAvailableRestoreSets() throws RemoteException {
+ return new RestoreSet[0];
+ }
+
+ @Override
+ public long getCurrentRestoreSet() throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int startRestore(long token, PackageInfo[] packages) throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public RestoreDescription nextRestorePackage() throws RemoteException {
+ return null;
+ }
+
+ @Override
+ public int getRestoreData(ParcelFileDescriptor outFd) throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public void finishRestore() throws RemoteException {
+
+ }
+
+ @Override
+ public long requestFullBackupTime() throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int performFullBackup(PackageInfo targetPackage, ParcelFileDescriptor socket,
+ int flags)
+ throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int checkFullBackupSize(long size) throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int sendBackupData(int numBytes) throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public void cancelFullBackup() throws RemoteException {
+
+ }
+
+ @Override
+ public boolean isAppEligibleForBackup(PackageInfo targetPackage, boolean isFullBackup)
+ throws RemoteException {
+ return false;
+ }
+
+ @Override
+ public long getBackupQuota(String packageName, boolean isFullBackup)
+ throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int getNextFullRestoreDataChunk(ParcelFileDescriptor socket) throws RemoteException {
+ return 0;
+ }
+
+ @Override
+ public int abortFullRestore() throws RemoteException {
+ return 0;
+ }
+}
diff --git a/services/robotests/src/com/android/server/backup/testing/DefaultPackageManagerWithQueryIntentServicesAsUser.java b/services/robotests/src/com/android/server/backup/testing/DefaultPackageManagerWithQueryIntentServicesAsUser.java
new file mode 100644
index 000000000000..5a0967ba2420
--- /dev/null
+++ b/services/robotests/src/com/android/server/backup/testing/DefaultPackageManagerWithQueryIntentServicesAsUser.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 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.backup.testing;
+
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+
+import org.robolectric.res.ResourceLoader;
+import org.robolectric.res.builder.DefaultPackageManager;
+
+import java.util.List;
+
+/**
+ * Implementation of PackageManager for Robolectric which handles queryIntentServicesAsUser().
+ */
+public class DefaultPackageManagerWithQueryIntentServicesAsUser extends
+ DefaultPackageManager {
+
+ /* package */
+ public DefaultPackageManagerWithQueryIntentServicesAsUser(
+ ResourceLoader appResourceLoader) {
+ super(appResourceLoader);
+ }
+
+ @Override
+ public List<ResolveInfo> queryIntentServicesAsUser(Intent intent, int flags, int userId) {
+ return super.queryIntentServices(intent, flags);
+ }
+}
diff --git a/services/robotests/src/com/android/server/backup/testing/ShadowBackupTransportStub.java b/services/robotests/src/com/android/server/backup/testing/ShadowBackupTransportStub.java
new file mode 100644
index 000000000000..48a12f0f5435
--- /dev/null
+++ b/services/robotests/src/com/android/server/backup/testing/ShadowBackupTransportStub.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 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.backup.testing;
+
+import android.os.IBinder;
+
+import com.android.internal.backup.IBackupTransport;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Shadow IBackupTransport.Stub, returns a transport corresponding to the binder.
+ */
+@Implements(IBackupTransport.Stub.class)
+public class ShadowBackupTransportStub {
+ public static Map<IBinder, IBackupTransport> sBinderTransportMap = new HashMap<>();
+
+ @Implementation
+ public static IBackupTransport asInterface(IBinder obj) {
+ return sBinderTransportMap.get(obj);
+ }
+}
diff --git a/services/robotests/src/com/android/server/backup/testing/ShadowContextImplForBackup.java b/services/robotests/src/com/android/server/backup/testing/ShadowContextImplForBackup.java
new file mode 100644
index 000000000000..c3975db3057f
--- /dev/null
+++ b/services/robotests/src/com/android/server/backup/testing/ShadowContextImplForBackup.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 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.backup.testing;
+
+import android.annotation.RequiresPermission;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.os.UserHandle;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.shadows.ShadowContextImpl;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Implementation of ContextImpl shadow, handling bindServiceAsUser().
+ */
+@Implements(className = ShadowContextImpl.CLASS_NAME)
+public class ShadowContextImplForBackup extends ShadowContextImpl {
+ public static Map<ComponentName, IBinder> sComponentBinderMap = new HashMap<>();
+ public static Set<ComponentName> sUnbindableComponents = new HashSet<>();
+
+ @Implementation
+ public boolean bindServiceAsUser(@RequiresPermission Intent service, ServiceConnection conn,
+ int flags, UserHandle user) {
+ if (sUnbindableComponents.contains(service.getComponent())) {
+ return false;
+ }
+
+ ShadowApplication.getInstance().setComponentNameAndServiceForBindService(
+ service.getComponent(), sComponentBinderMap.get(service.getComponent()));
+ return bindService(service, conn, flags);
+ }
+
+
+ /**
+ * Resets backup-related shadow state.
+ */
+ public static void resetBackupShadowState() {
+ sComponentBinderMap.clear();
+ sUnbindableComponents.clear();
+ }
+}
diff --git a/services/robotests/src/com/android/server/backup/testing/TransportBoundListenerStub.java b/services/robotests/src/com/android/server/backup/testing/TransportBoundListenerStub.java
new file mode 100644
index 000000000000..84ac2c212854
--- /dev/null
+++ b/services/robotests/src/com/android/server/backup/testing/TransportBoundListenerStub.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 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.backup.testing;
+
+import com.android.internal.backup.IBackupTransport;
+import com.android.server.backup.TransportManager;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Stub implementation of TransportBoundListener, which returns given result and can tell whether
+ * it was called for given transport.
+ */
+public class TransportBoundListenerStub implements
+ TransportManager.TransportBoundListener {
+ private boolean mAlwaysReturnSuccess;
+ private Set<IBackupTransport> mTransportsCalledFor = new HashSet<>();
+
+ public TransportBoundListenerStub(boolean alwaysReturnSuccess) {
+ this.mAlwaysReturnSuccess = alwaysReturnSuccess;
+ }
+
+ @Override
+ public boolean onTransportBound(IBackupTransport binder) {
+ mTransportsCalledFor.add(binder);
+ return mAlwaysReturnSuccess;
+ }
+
+ /**
+ * Returns whether the listener was called for the specified transport at least once.
+ */
+ public boolean isCalledForTransport(IBackupTransport binder) {
+ return mTransportsCalledFor.contains(binder);
+ }
+
+ /**
+ * Returns whether the listener was called at least once.
+ */
+ public boolean isCalled() {
+ return !mTransportsCalledFor.isEmpty();
+ }
+
+ /**
+ * Resets listener calls.
+ */
+ public void resetState() {
+ mTransportsCalledFor.clear();
+ }
+}
diff --git a/services/robotests/src/com/android/server/backup/testing/TransportReadyCallbackStub.java b/services/robotests/src/com/android/server/backup/testing/TransportReadyCallbackStub.java
new file mode 100644
index 000000000000..bbe7eba149c6
--- /dev/null
+++ b/services/robotests/src/com/android/server/backup/testing/TransportReadyCallbackStub.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2017 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.backup.testing;
+
+import com.android.server.backup.TransportManager;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Stub implementation of TransportReadyCallback, which can tell which calls were made.
+ */
+public class TransportReadyCallbackStub implements
+ TransportManager.TransportReadyCallback {
+ private final Set<String> mSuccessCalls = new HashSet<>();
+ private final Set<Integer> mFailureCalls = new HashSet<>();
+
+ @Override
+ public void onSuccess(String transportName) {
+ mSuccessCalls.add(transportName);
+ }
+
+ @Override
+ public void onFailure(int reason) {
+ mFailureCalls.add(reason);
+ }
+
+ /**
+ * Returns set of transport names for which {@link #onSuccess(String)} was called.
+ */
+ public Set<String> getSuccessCalls() {
+ return mSuccessCalls;
+ }
+
+ /**
+ * Returns set of reasons for which {@link #onFailure(int)} } was called.
+ */
+ public Set<Integer> getFailureCalls() {
+ return mFailureCalls;
+ }
+}
diff --git a/services/tests/notification/AndroidTest.xml b/services/tests/notification/AndroidTest.xml
index fa77407262b8..448bc3de5a0e 100644
--- a/services/tests/notification/AndroidTest.xml
+++ b/services/tests/notification/AndroidTest.xml
@@ -23,6 +23,6 @@
<option name="test-tag" value="FrameworksNotificationTests" />
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="com.android.frameworks.tests.notification" />
- <option name="runner" value="android.support.test.runner.AndroidJUnitRunner" />
+ <option name="runner" value="android.testing.TestableInstrumentation" />
</test>
</configuration>
diff --git a/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java b/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java
index 8242149d61be..a4b9b256aa07 100644
--- a/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java
+++ b/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java
@@ -91,6 +91,7 @@ public class ManagedServicesTest extends NotificationTestCase {
private ArrayMap<Integer, String> mExpectedSecondaryPackages;
private ArrayMap<Integer, String> mExpectedSecondaryComponentNames;
+ // type : user : list of approved
private ArrayMap<Integer, ArrayMap<Integer, String>> mExpectedPrimary = new ArrayMap<>();
private ArrayMap<Integer, ArrayMap<Integer, String>> mExpectedSecondary = new ArrayMap<>();
@@ -253,6 +254,14 @@ public class ManagedServicesTest extends NotificationTestCase {
loadXml(service);
verifyExpectedApprovedEntries(service);
+
+ int[] invalidUsers = new int[] {98, 99};
+ for (int invalidUser : invalidUsers) {
+ assertFalse("service type " + service.mApprovalLevel + ":"
+ + invalidUser + " is allowed for user " + invalidUser,
+ service.isPackageOrComponentAllowed(
+ String.valueOf(invalidUser), invalidUser));
+ }
}
}
@@ -578,6 +587,32 @@ public class ManagedServicesTest extends NotificationTestCase {
assertEquals(0, service.getAllowedComponents(10).size());
}
+ @Test
+ public void testOnUserRemoved() throws Exception {
+ for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) {
+ ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles,
+ mIpm, approvalLevel);
+ loadXml(service);
+
+ ArrayMap<Integer, String> verifyMap = mExpectedPrimary.get(service.mApprovalLevel);
+ String user0 = verifyMap.remove(0);
+ verifyMap = mExpectedSecondary.get(service.mApprovalLevel);
+ user0 = user0 + ":" + verifyMap.remove(0);
+
+ service.onUserRemoved(0);
+
+ for (String verifyValue : user0.split(":")) {
+ if (!TextUtils.isEmpty(verifyValue)) {
+ assertFalse("service type " + service.mApprovalLevel + ":" + verifyValue
+ + " is still allowed",
+ service.isPackageOrComponentAllowed(verifyValue, 0));
+ }
+ }
+
+ verifyExpectedApprovedEntries(service);
+ }
+ }
+
private void loadXml(ManagedServices service) throws Exception {
final StringBuffer xml = new StringBuffer();
xml.append("<" + service.getConfig().xmlTag + ">\n");
@@ -589,6 +624,14 @@ public class ManagedServicesTest extends NotificationTestCase {
xml.append(getXmlEntry(
mExpectedSecondary.get(service.mApprovalLevel).get(userId), userId, false));
}
+ xml.append("<" + ManagedServices.TAG_MANAGED_SERVICES + " "
+ + ManagedServices.ATT_USER_ID + "=\"99\" "
+ + ManagedServices.ATT_IS_PRIMARY + "=\"true\" "
+ + ManagedServices.ATT_APPROVED_LIST + "=\"99\" />\n");
+ xml.append("<" + ManagedServices.TAG_MANAGED_SERVICES + " "
+ + ManagedServices.ATT_USER_ID + "=\"98\" "
+ + ManagedServices.ATT_IS_PRIMARY + "=\"false\" "
+ + ManagedServices.ATT_APPROVED_LIST + "=\"98\" />\n");
xml.append("</" + service.getConfig().xmlTag + ">");
XmlPullParser parser = Xml.newPullParser();
@@ -657,7 +700,8 @@ public class ManagedServicesTest extends NotificationTestCase {
for (String packageOrComponent : verifyMap.get(userId).split(":")) {
if (!TextUtils.isEmpty(packageOrComponent)) {
if (service.mApprovalLevel == APPROVAL_BY_PACKAGE) {
- assertTrue(packageOrComponent, service.isComponentEnabledForPackage(packageOrComponent));
+ assertTrue(packageOrComponent,
+ service.isComponentEnabledForPackage(packageOrComponent));
for (int i = 1; i <= 3; i ++) {
ComponentName componentName = ComponentName.unflattenFromString(
packageOrComponent +"/C" + i);
diff --git a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java
index 04b42f1ee312..71a024c5be07 100644
--- a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -16,12 +16,15 @@
package com.android.server.notification;
+import static android.app.NotificationManager.IMPORTANCE_HIGH;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_NONE;
+import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertNull;
import static junit.framework.Assert.assertTrue;
import static junit.framework.Assert.fail;
@@ -56,6 +59,7 @@ import android.content.pm.ParceledListSlice;
import android.graphics.Color;
import android.media.AudioManager;
import android.os.Binder;
+import android.os.Build;
import android.os.Process;
import android.os.UserHandle;
import android.provider.Settings.Secure;
@@ -241,6 +245,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
nb.build(), new UserHandle(mUid), null, 0);
return new NotificationRecord(mContext, sbn, channel);
}
+
private NotificationRecord generateNotificationRecord(NotificationChannel channel) {
return generateNotificationRecord(channel, null);
}
@@ -342,7 +347,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
// Recreating the channel doesn't throw, but ignores importance.
final NotificationChannel dupeChannel =
- new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH);
+ new NotificationChannel("id", "name", IMPORTANCE_HIGH);
mBinderService.createNotificationChannels(PKG,
new ParceledListSlice(Arrays.asList(dupeChannel)));
final NotificationChannel createdChannel =
@@ -378,7 +383,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
// The user modifies importance directly, can no longer be changed by the app.
final NotificationChannel updatedChannel =
- new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH);
+ new NotificationChannel("id", "name", IMPORTANCE_HIGH);
mBinderService.updateNotificationChannelForPackage(PKG, mUid, updatedChannel);
// Recreating with a lower importance leaves channel unchanged.
@@ -388,7 +393,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
new ParceledListSlice(Arrays.asList(dupeChannel)));
final NotificationChannel createdChannel =
mBinderService.getNotificationChannel(PKG, "id");
- assertEquals(NotificationManager.IMPORTANCE_HIGH, createdChannel.getImportance());
+ assertEquals(IMPORTANCE_HIGH, createdChannel.getImportance());
}
@Test
@@ -397,7 +402,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
final NotificationChannel channel1 =
new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT);
final NotificationChannel channel2 =
- new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH);
+ new NotificationChannel("id", "name", IMPORTANCE_HIGH);
mBinderService.createNotificationChannels(PKG,
new ParceledListSlice(Arrays.asList(channel1, channel2)));
final NotificationChannel createdChannel =
@@ -410,7 +415,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(true);
NotificationChannel channel = new NotificationChannel("id", "name",
- NotificationManager.IMPORTANCE_HIGH);
+ IMPORTANCE_HIGH);
NotificationRecord r = generateNotificationRecord(channel);
assertTrue(mNotificationManagerService.isBlocked(r, mUsageStats));
verify(mUsageStats, times(1)).registerSuspendedByAdmin(eq(r));
@@ -421,8 +426,79 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false);
NotificationChannel channel = new NotificationChannel("id", "name",
+ NotificationManager.IMPORTANCE_NONE);
+ NotificationRecord r = generateNotificationRecord(channel);
+ assertTrue(mNotificationManagerService.isBlocked(r, mUsageStats));
+ verify(mUsageStats, times(1)).registerBlocked(eq(r));
+
+ mBinderService.createNotificationChannels(
+ PKG, new ParceledListSlice(Arrays.asList(channel)));
+ final StatusBarNotification sbn = generateNotificationRecord(channel).sbn;
+ mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag",
+ sbn.getId(), sbn.getNotification(), sbn.getUserId());
+ waitForIdle();
+ assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length);
+ }
+
+ @Test
+ public void testEnqueuedBlockedNotifications_appBlockedChannelForegroundService()
+ throws Exception {
+ when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false);
+
+ NotificationChannel channel = new NotificationChannel("blocked", "name",
+ NotificationManager.IMPORTANCE_NONE);
+ mBinderService.createNotificationChannels(
+ PKG, new ParceledListSlice(Arrays.asList(channel)));
+
+ final StatusBarNotification sbn = generateNotificationRecord(channel).sbn;
+ sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE;
+ mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag",
+ sbn.getId(), sbn.getNotification(), sbn.getUserId());
+ waitForIdle();
+ assertEquals(1, mBinderService.getActiveNotifications(sbn.getPackageName()).length);
+ assertEquals(IMPORTANCE_LOW,
+ mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance());
+ assertEquals(IMPORTANCE_LOW,
+ mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance());
+ }
+
+ @Test
+ public void testEnqueuedBlockedNotifications_userBlockedChannelForegroundService()
+ throws Exception {
+ when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false);
+
+ NotificationChannel channel =
+ new NotificationChannel("blockedbyuser", "name", IMPORTANCE_HIGH);
+ mBinderService.createNotificationChannels(
+ PKG, new ParceledListSlice(Arrays.asList(channel)));
+
+ NotificationChannel update =
+ new NotificationChannel("blockedbyuser", "name", IMPORTANCE_NONE);
+ mBinderService.updateNotificationChannelForPackage(PKG, mUid, update);
+ waitForIdle();
+ assertEquals(IMPORTANCE_NONE,
+ mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance());
+
+ final StatusBarNotification sbn = generateNotificationRecord(channel).sbn;
+ sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE;
+ mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag",
+ sbn.getId(), sbn.getNotification(), sbn.getUserId());
+ waitForIdle();
+ assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length);
+ assertNull(mNotificationManagerService.getNotificationRecord(sbn.getKey()));
+ assertEquals(IMPORTANCE_NONE,
+ mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance());
+ }
+
+ @Test
+ public void testBlockedNotifications_blockedChannelGroup() throws Exception {
+ when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false);
+ mNotificationManagerService.setRankingHelper(mRankingHelper);
+ when(mRankingHelper.isGroupBlocked(anyString(), anyInt(), anyString())).thenReturn(true);
+
+ NotificationChannel channel = new NotificationChannel("id", "name",
NotificationManager.IMPORTANCE_HIGH);
- channel.setImportance(IMPORTANCE_NONE);
+ channel.setGroup("something");
NotificationRecord r = generateNotificationRecord(channel);
assertTrue(mNotificationManagerService.isBlocked(r, mUsageStats));
verify(mUsageStats, times(1)).registerBlocked(eq(r));
@@ -442,6 +518,21 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
}
@Test
+ public void testEnqueuedBlockedNotifications_blockedAppForegroundService() throws Exception {
+ when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false);
+
+ mBinderService.setNotificationsEnabledForPackage(PKG, mUid, false);
+
+ final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+ sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE;
+ mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag",
+ sbn.getId(), sbn.getNotification(), sbn.getUserId());
+ waitForIdle();
+ assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length);
+ assertNull(mNotificationManagerService.getNotificationRecord(sbn.getKey()));
+ }
+
+ @Test
public void testEnqueueNotificationWithTag_PopulatesGetActiveNotifications() throws Exception {
mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", 0,
generateNotificationRecord(null).getNotification(), 0);
@@ -798,7 +889,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
mNotificationManagerService.setRankingHelper(mRankingHelper);
when(mRankingHelper.getNotificationChannel(
anyString(), anyInt(), eq("foo"), anyBoolean())).thenReturn(
- new NotificationChannel("foo", "foo", NotificationManager.IMPORTANCE_HIGH));
+ new NotificationChannel("foo", "foo", IMPORTANCE_HIGH));
Notification.TvExtender tv = new Notification.TvExtender().setChannelId("foo");
mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", 0,
@@ -927,7 +1018,8 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
mBinderService.updateNotificationChannelFromPrivilegedListener(
null, PKG, Process.myUserHandle(), mTestNotificationChannel);
- verify(mRankingHelper, times(1)).updateNotificationChannel(anyString(), anyInt(), any());
+ verify(mRankingHelper, times(1)).updateNotificationChannel(
+ anyString(), anyInt(), any(), anyBoolean());
verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG),
eq(Process.myUserHandle()), eq(mTestNotificationChannel),
@@ -948,7 +1040,8 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
// pass
}
- verify(mRankingHelper, never()).updateNotificationChannel(anyString(), anyInt(), any());
+ verify(mRankingHelper, never()).updateNotificationChannel(
+ anyString(), anyInt(), any(), anyBoolean());
verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG),
eq(Process.myUserHandle()), eq(mTestNotificationChannel),
@@ -974,7 +1067,8 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
// pass
}
- verify(mRankingHelper, never()).updateNotificationChannel(anyString(), anyInt(), any());
+ verify(mRankingHelper, never()).updateNotificationChannel(
+ anyString(), anyInt(), any(), anyBoolean());
verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG),
eq(Process.myUserHandle()), eq(mTestNotificationChannel),
@@ -1345,7 +1439,8 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
@Test
public void testOnlyAutogroupIfGroupChanged_groupChanged_autogroups()
throws Exception {
- NotificationRecord r = generateNotificationRecord(mTestNotificationChannel, 0, "group", false);
+ NotificationRecord r =
+ generateNotificationRecord(mTestNotificationChannel, 0, "group", false);
mNotificationManagerService.addNotification(r);
r = generateNotificationRecord(mTestNotificationChannel, 0, null, false);
@@ -1425,12 +1520,16 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
// Same notifications are enqueued as posted, everything counts b/c id and tag don't match
int userId = new UserHandle(mUid).getIdentifier();
- assertEquals(40, mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, null));
- assertEquals(40, mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag2"));
- assertEquals(2, mNotificationManagerService.getNotificationCountLocked("a", userId, 0, "banana"));
+ assertEquals(40,
+ mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, null));
+ assertEquals(40,
+ mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag2"));
+ assertEquals(2,
+ mNotificationManagerService.getNotificationCountLocked("a", userId, 0, "banana"));
// exclude a known notification - it's excluded from only the posted list, not enqueued
- assertEquals(39, mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag"));
+ assertEquals(39,
+ mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag"));
}
@Test
@@ -1560,4 +1659,51 @@ public class NotificationManagerServiceTest extends NotificationTestCase {
verify(mZenModeHelper, times(1)).updateDefaultZenRules();
}
+
+ @Test
+ public void testBumpFGImportance_noChannelChangePreOApp() throws Exception {
+ String preOPkg = "preO";
+ int preOUid = 145;
+ final ApplicationInfo legacy = new ApplicationInfo();
+ legacy.targetSdkVersion = Build.VERSION_CODES.N_MR1;
+ when(mPackageManagerClient.getApplicationInfoAsUser(eq(preOPkg), anyInt(), anyInt()))
+ .thenReturn(legacy);
+ when(mPackageManagerClient.getPackageUidAsUser(eq(preOPkg), anyInt())).thenReturn(preOUid);
+ getContext().setMockPackageManager(mPackageManagerClient);
+
+ Notification.Builder nb = new Notification.Builder(mContext,
+ NotificationChannel.DEFAULT_CHANNEL_ID)
+ .setContentTitle("foo")
+ .setSmallIcon(android.R.drawable.sym_def_app_icon)
+ .setFlag(Notification.FLAG_FOREGROUND_SERVICE, true)
+ .setPriority(Notification.PRIORITY_MIN);
+
+ StatusBarNotification sbn = new StatusBarNotification(preOPkg, preOPkg, 9, "tag", preOUid,
+ 0, nb.build(), new UserHandle(preOUid), null, 0);
+
+ mBinderService.enqueueNotificationWithTag(preOPkg, preOPkg, "tag",
+ sbn.getId(), sbn.getNotification(), sbn.getUserId());
+ waitForIdle();
+ assertEquals(IMPORTANCE_LOW,
+ mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance());
+
+ nb = new Notification.Builder(mContext)
+ .setContentTitle("foo")
+ .setSmallIcon(android.R.drawable.sym_def_app_icon)
+ .setFlag(Notification.FLAG_FOREGROUND_SERVICE, true)
+ .setPriority(Notification.PRIORITY_MIN);
+
+ sbn = new StatusBarNotification(preOPkg, preOPkg, 9, "tag", preOUid,
+ 0, nb.build(), new UserHandle(preOUid), null, 0);
+
+ mBinderService.enqueueNotificationWithTag(preOPkg, preOPkg, "tag",
+ sbn.getId(), sbn.getNotification(), sbn.getUserId());
+ waitForIdle();
+ assertEquals(IMPORTANCE_LOW,
+ mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance());
+
+ NotificationChannel defaultChannel = mBinderService.getNotificationChannel(
+ preOPkg, NotificationChannel.DEFAULT_CHANNEL_ID);
+ assertEquals(IMPORTANCE_UNSPECIFIED, defaultChannel.getImportance());
+ }
}
diff --git a/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java b/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java
index 65bf33084bb4..2249ff0ce448 100644
--- a/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java
+++ b/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java
@@ -240,12 +240,23 @@ public class RankingHelperTest extends NotificationTestCase {
private void compareGroups(NotificationChannelGroup expected, NotificationChannelGroup actual) {
assertEquals(expected.getId(), actual.getId());
assertEquals(expected.getName(), actual.getName());
+ assertEquals(expected.getDescription(), actual.getDescription());
+ assertEquals(expected.isBlocked(), actual.isBlocked());
}
private NotificationChannel getChannel() {
return new NotificationChannel("id", "name", IMPORTANCE_LOW);
}
+ private NotificationChannel findChannel(List<NotificationChannel> channels, String id) {
+ for (NotificationChannel channel : channels) {
+ if (channel.getId().equals(id)) {
+ return channel;
+ }
+ }
+ return null;
+ }
+
@Test
public void testFindAfterRankingWithASplitGroup() throws Exception {
ArrayList<NotificationRecord> notificationList = new ArrayList<NotificationRecord>(3);
@@ -299,6 +310,8 @@ public class RankingHelperTest extends NotificationTestCase {
@Test
public void testChannelXml() throws Exception {
NotificationChannelGroup ncg = new NotificationChannelGroup("1", "bye");
+ ncg.setBlocked(true);
+ ncg.setDescription("group desc");
NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "hello");
NotificationChannel channel1 =
new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH);
@@ -484,7 +497,7 @@ public class RankingHelperTest extends NotificationTestCase {
final NotificationChannel defaultChannel = mHelper.getNotificationChannel(PKG, UID,
NotificationChannel.DEFAULT_CHANNEL_ID, false);
defaultChannel.setImportance(NotificationManager.IMPORTANCE_LOW);
- mHelper.updateNotificationChannel(PKG, UID, defaultChannel);
+ mHelper.updateNotificationChannel(PKG, UID, defaultChannel, true);
ByteArrayOutputStream baos = writeXmlAndPurge(PKG, UID, false,
NotificationChannel.DEFAULT_CHANNEL_ID);
@@ -633,7 +646,7 @@ public class RankingHelperTest extends NotificationTestCase {
channel2.setBypassDnd(false);
channel2.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
- mHelper.updateNotificationChannel(PKG, UID, channel2);
+ mHelper.updateNotificationChannel(PKG, UID, channel2, true);
// all fields should be changed
assertEquals(channel2, mHelper.getNotificationChannel(PKG, UID, channel.getId(), false));
@@ -657,7 +670,7 @@ public class RankingHelperTest extends NotificationTestCase {
defaultChannel.setBypassDnd(true);
defaultChannel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
- mHelper.updateNotificationChannel(PKG, UID, defaultChannel);
+ mHelper.updateNotificationChannel(PKG, UID, defaultChannel, true);
// ensure app level fields are changed
assertFalse(mHelper.canShowBadge(PKG, UID));
@@ -681,7 +694,7 @@ public class RankingHelperTest extends NotificationTestCase {
channel.setBypassDnd(true);
channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
- mHelper.updateNotificationChannel(PKG, UID, channel);
+ mHelper.updateNotificationChannel(PKG, UID, channel, true);
// ensure app level fields are not changed
assertTrue(mHelper.canShowBadge(PKG, UID));
@@ -772,14 +785,14 @@ public class RankingHelperTest extends NotificationTestCase {
update1.setSound(new Uri.Builder().scheme("test").build(),
new AudioAttributes.Builder().build());
update1.lockFields(NotificationChannel.USER_LOCKED_PRIORITY); // should be ignored
- mHelper.updateNotificationChannel(PKG, UID, update1);
+ mHelper.updateNotificationChannel(PKG, UID, update1, true);
assertEquals(NotificationChannel.USER_LOCKED_SOUND,
mHelper.getNotificationChannel(PKG, UID, update1.getId(), false)
.getUserLockedFields());
NotificationChannel update2 = getChannel();
update2.enableVibration(true);
- mHelper.updateNotificationChannel(PKG, UID, update2);
+ mHelper.updateNotificationChannel(PKG, UID, update2, true);
assertEquals(NotificationChannel.USER_LOCKED_SOUND
| NotificationChannel.USER_LOCKED_VIBRATION,
mHelper.getNotificationChannel(PKG, UID, update2.getId(), false)
@@ -792,14 +805,14 @@ public class RankingHelperTest extends NotificationTestCase {
final NotificationChannel update1 = getChannel();
update1.setVibrationPattern(new long[]{7945, 46 ,246});
- mHelper.updateNotificationChannel(PKG, UID, update1);
+ mHelper.updateNotificationChannel(PKG, UID, update1, true);
assertEquals(NotificationChannel.USER_LOCKED_VIBRATION,
mHelper.getNotificationChannel(PKG, UID, update1.getId(), false)
.getUserLockedFields());
final NotificationChannel update2 = getChannel();
update2.enableLights(true);
- mHelper.updateNotificationChannel(PKG, UID, update2);
+ mHelper.updateNotificationChannel(PKG, UID, update2, true);
assertEquals(NotificationChannel.USER_LOCKED_VIBRATION
| NotificationChannel.USER_LOCKED_LIGHTS,
mHelper.getNotificationChannel(PKG, UID, update2.getId(), false)
@@ -812,14 +825,14 @@ public class RankingHelperTest extends NotificationTestCase {
final NotificationChannel update1 = getChannel();
update1.setLightColor(Color.GREEN);
- mHelper.updateNotificationChannel(PKG, UID, update1);
+ mHelper.updateNotificationChannel(PKG, UID, update1, true);
assertEquals(NotificationChannel.USER_LOCKED_LIGHTS,
mHelper.getNotificationChannel(PKG, UID, update1.getId(), false)
.getUserLockedFields());
final NotificationChannel update2 = getChannel();
update2.setImportance(IMPORTANCE_DEFAULT);
- mHelper.updateNotificationChannel(PKG, UID, update2);
+ mHelper.updateNotificationChannel(PKG, UID, update2, true);
assertEquals(NotificationChannel.USER_LOCKED_LIGHTS
| NotificationChannel.USER_LOCKED_IMPORTANCE,
mHelper.getNotificationChannel(PKG, UID, update2.getId(), false)
@@ -835,14 +848,14 @@ public class RankingHelperTest extends NotificationTestCase {
final NotificationChannel update1 = getChannel();
update1.setBypassDnd(true);
- mHelper.updateNotificationChannel(PKG, UID, update1);
+ mHelper.updateNotificationChannel(PKG, UID, update1, true);
assertEquals(NotificationChannel.USER_LOCKED_PRIORITY,
mHelper.getNotificationChannel(PKG, UID, update1.getId(), false)
.getUserLockedFields());
final NotificationChannel update2 = getChannel();
update2.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
- mHelper.updateNotificationChannel(PKG, UID, update2);
+ mHelper.updateNotificationChannel(PKG, UID, update2, true);
assertEquals(NotificationChannel.USER_LOCKED_PRIORITY
| NotificationChannel.USER_LOCKED_VISIBILITY,
mHelper.getNotificationChannel(PKG, UID, update2.getId(), false)
@@ -850,7 +863,7 @@ public class RankingHelperTest extends NotificationTestCase {
final NotificationChannel update3 = getChannel();
update3.setShowBadge(false);
- mHelper.updateNotificationChannel(PKG, UID, update3);
+ mHelper.updateNotificationChannel(PKG, UID, update3, true);
assertEquals(NotificationChannel.USER_LOCKED_PRIORITY
| NotificationChannel.USER_LOCKED_VISIBILITY
| NotificationChannel.USER_LOCKED_SHOW_BADGE,
@@ -1263,7 +1276,7 @@ public class RankingHelperTest extends NotificationTestCase {
mHelper.getNotificationChannelGroups(PKG, UID, true).getList();
channel1.setImportance(IMPORTANCE_LOW);
- mHelper.updateNotificationChannel(PKG, UID, channel1);
+ mHelper.updateNotificationChannel(PKG, UID, channel1, true);
List<NotificationChannelGroup> actual =
mHelper.getNotificationChannelGroups(PKG, UID, true).getList();
@@ -1294,6 +1307,26 @@ public class RankingHelperTest extends NotificationTestCase {
}
@Test
+ public void testCreateChannel_addToGroup() throws Exception {
+ NotificationChannelGroup group = new NotificationChannelGroup("group", "");
+ mHelper.createNotificationChannelGroup(PKG, UID, group, true);
+ NotificationChannel nc = new NotificationChannel("id", "hello", IMPORTANCE_DEFAULT);
+ mHelper.createNotificationChannel(PKG, UID, nc, true);
+ NotificationChannel actual = mHelper.getNotificationChannel(PKG, UID, "id", false);
+ assertNull(actual.getGroup());
+
+ nc = new NotificationChannel("id", "hello", IMPORTANCE_HIGH);
+ nc.setGroup(group.getId());
+ mHelper.createNotificationChannel(PKG, UID, nc, true);
+
+ actual = mHelper.getNotificationChannel(PKG, UID, "id", false);
+ assertNotNull(actual.getGroup());
+ assertEquals(IMPORTANCE_DEFAULT, actual.getImportance());
+
+ verify(mHandler, times(1)).requestSort();
+ }
+
+ @Test
public void testDumpChannelsJson() throws Exception {
final ApplicationInfo upgrade = new ApplicationInfo();
upgrade.targetSdkVersion = Build.VERSION_CODES.O;
@@ -1388,4 +1421,77 @@ public class RankingHelperTest extends NotificationTestCase {
assertEquals(newLabel, mHelper.getNotificationChannel(PKG, UID,
NotificationChannel.DEFAULT_CHANNEL_ID, false).getName());
}
+
+ @Test
+ public void testIsGroupBlocked_noGroup() throws Exception {
+ assertFalse(mHelper.isGroupBlocked(PKG, UID, null));
+
+ assertFalse(mHelper.isGroupBlocked(PKG, UID, "non existent group"));
+ }
+
+ @Test
+ public void testIsGroupBlocked_notBlocked() throws Exception {
+ NotificationChannelGroup group = new NotificationChannelGroup("id", "name");
+ mHelper.createNotificationChannelGroup(PKG, UID, group, true);
+
+ assertFalse(mHelper.isGroupBlocked(PKG, UID, group.getId()));
+ }
+
+ @Test
+ public void testIsGroupBlocked_blocked() throws Exception {
+ NotificationChannelGroup group = new NotificationChannelGroup("id", "name");
+ mHelper.createNotificationChannelGroup(PKG, UID, group, true);
+ group.setBlocked(true);
+ mHelper.createNotificationChannelGroup(PKG, UID, group, false);
+
+ assertTrue(mHelper.isGroupBlocked(PKG, UID, group.getId()));
+ }
+
+ @Test
+ public void testIsGroup_appCannotResetBlock() throws Exception {
+ NotificationChannelGroup group = new NotificationChannelGroup("id", "name");
+ mHelper.createNotificationChannelGroup(PKG, UID, group, true);
+ NotificationChannelGroup group2 = group.clone();
+ group2.setBlocked(true);
+ mHelper.createNotificationChannelGroup(PKG, UID, group2, false);
+ assertTrue(mHelper.isGroupBlocked(PKG, UID, group.getId()));
+
+ NotificationChannelGroup group3 = group.clone();
+ group3.setBlocked(false);
+ mHelper.createNotificationChannelGroup(PKG, UID, group3, true);
+ assertTrue(mHelper.isGroupBlocked(PKG, UID, group.getId()));
+ }
+
+ @Test
+ public void testGetNotificationChannelGroupWithChannels() throws Exception {
+ NotificationChannelGroup group = new NotificationChannelGroup("group", "");
+ NotificationChannelGroup other = new NotificationChannelGroup("something else", "");
+ mHelper.createNotificationChannelGroup(PKG, UID, group, true);
+ mHelper.createNotificationChannelGroup(PKG, UID, other, true);
+
+ NotificationChannel a = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT);
+ a.setGroup(group.getId());
+ NotificationChannel b = new NotificationChannel("b", "b", IMPORTANCE_DEFAULT);
+ b.setGroup(other.getId());
+ NotificationChannel c = new NotificationChannel("c", "c", IMPORTANCE_DEFAULT);
+ c.setGroup(group.getId());
+ NotificationChannel d = new NotificationChannel("d", "d", IMPORTANCE_DEFAULT);
+
+ mHelper.createNotificationChannel(PKG, UID, a, true);
+ mHelper.createNotificationChannel(PKG, UID, b, true);
+ mHelper.createNotificationChannel(PKG, UID, c, true);
+ mHelper.createNotificationChannel(PKG, UID, d, true);
+ mHelper.deleteNotificationChannel(PKG, UID, c.getId());
+
+ NotificationChannelGroup retrieved = mHelper.getNotificationChannelGroupWithChannels(
+ PKG, UID, group.getId(), true);
+ assertEquals(2, retrieved.getChannels().size());
+ compareChannels(a, findChannel(retrieved.getChannels(), a.getId()));
+ compareChannels(c, findChannel(retrieved.getChannels(), c.getId()));
+
+ retrieved = mHelper.getNotificationChannelGroupWithChannels(
+ PKG, UID, group.getId(), false);
+ assertEquals(1, retrieved.getChannels().size());
+ compareChannels(a, findChannel(retrieved.getChannels(), a.getId()));
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java b/services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java
index 58a4456ff4d7..3a92d638fb02 100644
--- a/services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/NightDisplayServiceTest.java
@@ -30,13 +30,14 @@ import android.support.test.runner.AndroidJUnit4;
import android.test.mock.MockContentResolver;
import com.android.internal.app.NightDisplayController;
-import com.android.internal.app.NightDisplayController.LocalTime;
import com.android.internal.util.test.FakeSettingsProvider;
import com.android.server.display.DisplayTransformManager;
import com.android.server.display.NightDisplayService;
import com.android.server.twilight.TwilightListener;
import com.android.server.twilight.TwilightManager;
import com.android.server.twilight.TwilightState;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -45,6 +46,7 @@ import org.mockito.Mockito;
import java.util.Calendar;
import java.util.HashMap;
+import java.time.LocalTime;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -926,11 +928,10 @@ public class NightDisplayServiceTest {
*/
private void setActivated(boolean activated, int lastActivatedTimeOffset) {
mNightDisplayController.setActivated(activated);
-
- final Calendar c = Calendar.getInstance();
- c.add(Calendar.MINUTE, lastActivatedTimeOffset);
- Secure.putLongForUser(mContext.getContentResolver(),
- Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, c.getTimeInMillis(), mUserId);
+ Secure.putStringForUser(mContext.getContentResolver(),
+ Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME,
+ LocalDateTime.now().plusMinutes(lastActivatedTimeOffset).toString(),
+ mUserId);
}
/**
@@ -969,7 +970,7 @@ public class NightDisplayServiceTest {
private static LocalTime getLocalTimeRelativeToNow(int offsetMinutes) {
final Calendar c = Calendar.getInstance();
c.add(Calendar.MINUTE, offsetMinutes);
- return new LocalTime(c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE));
+ return LocalTime.of(c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE));
}
/**
@@ -984,13 +985,27 @@ public class NightDisplayServiceTest {
final LocalTime sunset = getLocalTimeRelativeToNow(sunsetOffset);
final LocalTime sunrise = getLocalTimeRelativeToNow(sunriseOffset);
- final Calendar now = Calendar.getInstance();
- long sunsetMillis = sunset.getDateTimeBefore(now).getTimeInMillis();
- long sunriseMillis = sunrise.getDateTimeBefore(now).getTimeInMillis();
+ final LocalDateTime now = LocalDateTime.now();
+ final ZoneId zoneId = ZoneId.systemDefault();
+
+ long sunsetMillis = NightDisplayService.getDateTimeBefore(sunset, now)
+ .atZone(zoneId)
+ .toInstant()
+ .toEpochMilli();
+ long sunriseMillis = NightDisplayService.getDateTimeBefore(sunrise, now)
+ .atZone(zoneId)
+ .toInstant()
+ .toEpochMilli();
if (sunsetMillis < sunriseMillis) {
- sunsetMillis = sunset.getDateTimeAfter(now).getTimeInMillis();
+ sunsetMillis = NightDisplayService.getDateTimeAfter(sunset, now)
+ .atZone(zoneId)
+ .toInstant()
+ .toEpochMilli();
} else {
- sunriseMillis = sunrise.getDateTimeAfter(now).getTimeInMillis();
+ sunriseMillis = NightDisplayService.getDateTimeAfter(sunrise, now)
+ .atZone(zoneId)
+ .toInstant()
+ .toEpochMilli();
}
return new TwilightState(sunriseMillis, sunsetMillis);
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/MagnificationGestureHandlerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/MagnificationGestureHandlerTest.java
new file mode 100644
index 000000000000..50824e32e50d
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/MagnificationGestureHandlerTest.java
@@ -0,0 +1,535 @@
+/*
+ * Copyright (C) 2017 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.accessibility;
+
+import static android.util.ExceptionUtils.propagate;
+import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_MOVE;
+import static android.view.MotionEvent.ACTION_POINTER_DOWN;
+import static android.view.MotionEvent.ACTION_POINTER_UP;
+
+import static com.android.server.testutils.TestUtils.strictMock;
+
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+import android.util.DebugUtils;
+import android.view.InputDevice;
+import android.view.MotionEvent;
+
+import com.android.server.testutils.OffsettableClock;
+import com.android.server.testutils.TestHandler;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.function.IntConsumer;
+
+
+@RunWith(AndroidJUnit4.class)
+public class MagnificationGestureHandlerTest {
+
+ public static final int STATE_IDLE = 1;
+ public static final int STATE_ZOOMED = 2;
+ public static final int STATE_2TAPS = 3;
+ public static final int STATE_ZOOMED_2TAPS = 4;
+ public static final int STATE_SHORTCUT_TRIGGERED = 5;
+ public static final int STATE_DRAGGING_TMP = 6;
+ public static final int STATE_DRAGGING = 7;
+ public static final int STATE_PANNING = 8;
+ public static final int STATE_SCALING_AND_PANNING = 9;
+
+
+ public static final int FIRST_STATE = STATE_IDLE;
+ public static final int LAST_STATE = STATE_SCALING_AND_PANNING;
+
+ // Co-prime x and y, to potentially catch x-y-swapped errors
+ public static final float DEFAULT_X = 301;
+ public static final float DEFAULT_Y = 299;
+
+ private Context mContext;
+ private AccessibilityManagerService mAms;
+ private MagnificationController mMagnificationController;
+ private OffsettableClock mClock;
+ private MagnificationGestureHandler mMgh;
+ private TestHandler mHandler;
+
+ @Before
+ public void setUp() {
+ mContext = InstrumentationRegistry.getContext();
+ mAms = new AccessibilityManagerService(mContext);
+ mMagnificationController = new MagnificationController(
+ mContext, mAms, /* lock */ new Object()) {
+ @Override
+ public boolean magnificationRegionContains(float x, float y) {
+ return true;
+ }
+
+ @Override
+ void setForceShowMagnifiableBounds(boolean show) {}
+ };
+ mMagnificationController.mRegistered = true;
+ mClock = new OffsettableClock.Stopped();
+
+ boolean detectTripleTap = true;
+ boolean detectShortcutTrigger = true;
+ mMgh = newInstance(detectTripleTap, detectShortcutTrigger);
+ }
+
+ @NonNull
+ public MagnificationGestureHandler newInstance(boolean detectTripleTap,
+ boolean detectShortcutTrigger) {
+ MagnificationGestureHandler h = new MagnificationGestureHandler(
+ mContext, mMagnificationController,
+ detectTripleTap, detectShortcutTrigger);
+ mHandler = new TestHandler(h.mDetectingStateHandler, mClock);
+ h.mDetectingStateHandler.mHandler = mHandler;
+ h.setNext(strictMock(EventStreamTransformation.class));
+ return h;
+ }
+
+ @Test
+ public void testInitialState_isIdle() {
+ assertIn(STATE_IDLE);
+ }
+
+ /**
+ * Covers paths to get to and back between each state and {@link #STATE_IDLE}
+ * This navigates between states using "canonical" paths, specified in
+ * {@link #goFromStateIdleTo} (for traversing away from {@link #STATE_IDLE}) and
+ * {@link #returnToNormalFrom} (for navigating back to {@link #STATE_IDLE})
+ */
+ @Test
+ public void testEachState_isReachableAndRecoverable() {
+ forEachState(state -> {
+ goFromStateIdleTo(state);
+ assertIn(state);
+
+ returnToNormalFrom(state);
+ try {
+ assertIn(STATE_IDLE);
+ } catch (AssertionError e) {
+ throw new AssertionError("Failed while testing state " + stateToString(state), e);
+ }
+ });
+ }
+
+ @Test
+ public void testStates_areMutuallyExclusive() {
+ forEachState(state1 -> {
+ forEachState(state2 -> {
+ if (state1 < state2) {
+ goFromStateIdleTo(state1);
+ try {
+ assertIn(state2);
+ fail("State " + stateToString(state1) + " also implies state "
+ + stateToString(state2) + stateDump());
+ } catch (AssertionError e) {
+ // expected
+ returnToNormalFrom(state1);
+ }
+ }
+ });
+ });
+ }
+
+ /**
+ * Covers edges of the graph not covered by "canonical" transitions specified in
+ * {@link #goFromStateIdleTo} and {@link #returnToNormalFrom}
+ */
+ @SuppressWarnings("Convert2MethodRef")
+ @Test
+ public void testAlternativeTransitions_areWorking() {
+ // A11y button followed by a tap&hold turns temporary "viewport dragging" zoom on
+ assertTransition(STATE_SHORTCUT_TRIGGERED, () -> {
+ send(downEvent());
+ fastForward1sec();
+ }, STATE_DRAGGING_TMP);
+
+ // A11y button followed by a tap turns zoom on
+ assertTransition(STATE_SHORTCUT_TRIGGERED, () -> tap(), STATE_ZOOMED);
+
+ // A11y button pressed second time negates the 1st press
+ assertTransition(STATE_SHORTCUT_TRIGGERED, () -> triggerShortcut(), STATE_IDLE);
+
+ // A11y button turns zoom off
+ assertTransition(STATE_ZOOMED, () -> triggerShortcut(), STATE_IDLE);
+
+
+ // Double tap times out while zoomed
+ assertTransition(STATE_ZOOMED_2TAPS, () -> {
+ allowEventDelegation();
+ fastForward1sec();
+ }, STATE_ZOOMED);
+
+ // tap+tap+swipe gets delegated
+ assertTransition(STATE_2TAPS, () -> {
+ allowEventDelegation();
+ swipe();
+ }, STATE_IDLE);
+ }
+
+ @Test
+ public void testNonTransitions_dontChangeState() {
+ // ACTION_POINTER_DOWN triggers event delegation if not magnifying
+ assertStaysIn(STATE_IDLE, () -> {
+ allowEventDelegation();
+ send(downEvent());
+ send(pointerEvent(ACTION_POINTER_DOWN, DEFAULT_X * 2, DEFAULT_Y));
+ });
+
+ // Long tap breaks the triple-tap detection sequence
+ Runnable tapAndLongTap = () -> {
+ allowEventDelegation();
+ tap();
+ longTap();
+ };
+ assertStaysIn(STATE_IDLE, tapAndLongTap);
+ assertStaysIn(STATE_ZOOMED, tapAndLongTap);
+
+ // Triple tap with delays in between doesn't count
+ Runnable slow3tap = () -> {
+ tap();
+ fastForward1sec();
+ tap();
+ fastForward1sec();
+ tap();
+ };
+ assertStaysIn(STATE_IDLE, slow3tap);
+ assertStaysIn(STATE_ZOOMED, slow3tap);
+ }
+
+ @Test
+ public void testDisablingTripleTap_removesInputLag() {
+ mMgh = newInstance(/* detect3tap */ false, /* detectShortcut */ true);
+ goFromStateIdleTo(STATE_IDLE);
+ allowEventDelegation();
+ tap();
+ // no fast forward
+ verify(mMgh.mNext, times(2)).onMotionEvent(any(), any(), anyInt());
+ }
+
+ private void assertTransition(int fromState, Runnable transitionAction, int toState) {
+ goFromStateIdleTo(fromState);
+ transitionAction.run();
+ assertIn(toState);
+ returnToNormalFrom(toState);
+ }
+
+ private void assertStaysIn(int state, Runnable action) {
+ assertTransition(state, action, state);
+ }
+
+ private void forEachState(IntConsumer action) {
+ for (int state = FIRST_STATE; state <= LAST_STATE; state++) {
+ action.accept(state);
+ }
+ }
+
+ private void allowEventDelegation() {
+ doNothing().when(mMgh.mNext).onMotionEvent(any(), any(), anyInt());
+ }
+
+ private void fastForward1sec() {
+ fastForward(1000);
+ }
+
+ private void fastForward(int ms) {
+ mClock.fastForward(ms);
+ mHandler.timeAdvance();
+ }
+
+ /**
+ * Asserts that {@link #mMgh the handler} is in the given {@code state}
+ */
+ private void assertIn(int state) {
+ switch (state) {
+
+ // Asserts on separate lines for accurate stack traces
+
+ case STATE_IDLE: {
+ check(tapCount() < 2, state);
+ check(!mMgh.mShortcutTriggered, state);
+ check(!isZoomed(), state);
+ } break;
+ case STATE_ZOOMED: {
+ check(isZoomed(), state);
+ check(tapCount() < 2, state);
+ } break;
+ case STATE_2TAPS: {
+ check(!isZoomed(), state);
+ check(tapCount() == 2, state);
+ } break;
+ case STATE_ZOOMED_2TAPS: {
+ check(isZoomed(), state);
+ check(tapCount() == 2, state);
+ } break;
+ case STATE_DRAGGING: {
+ check(mMgh.mCurrentState == MagnificationGestureHandler.STATE_VIEWPORT_DRAGGING,
+ state);
+ check(mMgh.mViewportDraggingStateHandler.mZoomedInBeforeDrag, state);
+ } break;
+ case STATE_DRAGGING_TMP: {
+ check(mMgh.mCurrentState == MagnificationGestureHandler.STATE_VIEWPORT_DRAGGING,
+ state);
+ check(!mMgh.mViewportDraggingStateHandler.mZoomedInBeforeDrag, state);
+ } break;
+ case STATE_SHORTCUT_TRIGGERED: {
+ check(mMgh.mShortcutTriggered, state);
+ check(!isZoomed(), state);
+ } break;
+ case STATE_PANNING: {
+ check(mMgh.mCurrentState == MagnificationGestureHandler.STATE_PANNING_SCALING,
+ state);
+ check(!mMgh.mPanningScalingStateHandler.mScaling, state);
+ } break;
+ case STATE_SCALING_AND_PANNING: {
+ check(mMgh.mCurrentState == MagnificationGestureHandler.STATE_PANNING_SCALING,
+ state);
+ check(mMgh.mPanningScalingStateHandler.mScaling, state);
+ } break;
+ default: throw new IllegalArgumentException("Illegal state: " + state);
+ }
+ }
+
+ /**
+ * Defines a "canonical" path from {@link #STATE_IDLE} to {@code state}
+ */
+ private void goFromStateIdleTo(int state) {
+ try {
+ switch (state) {
+ case STATE_IDLE: {
+ mMgh.clearAndTransitionToStateDetecting();
+ } break;
+ case STATE_2TAPS: {
+ goFromStateIdleTo(STATE_IDLE);
+ tap();
+ tap();
+ } break;
+ case STATE_ZOOMED: {
+ if (mMgh.mDetectTripleTap) {
+ goFromStateIdleTo(STATE_2TAPS);
+ tap();
+ } else {
+ goFromStateIdleTo(STATE_SHORTCUT_TRIGGERED);
+ tap();
+ }
+ } break;
+ case STATE_ZOOMED_2TAPS: {
+ goFromStateIdleTo(STATE_ZOOMED);
+ tap();
+ tap();
+ } break;
+ case STATE_DRAGGING: {
+ goFromStateIdleTo(STATE_ZOOMED_2TAPS);
+ send(downEvent());
+ fastForward1sec();
+ } break;
+ case STATE_DRAGGING_TMP: {
+ goFromStateIdleTo(STATE_2TAPS);
+ send(downEvent());
+ fastForward1sec();
+ } break;
+ case STATE_SHORTCUT_TRIGGERED: {
+ goFromStateIdleTo(STATE_IDLE);
+ triggerShortcut();
+ } break;
+ case STATE_PANNING: {
+ goFromStateIdleTo(STATE_ZOOMED);
+ send(downEvent());
+ send(pointerEvent(ACTION_POINTER_DOWN, DEFAULT_X * 2, DEFAULT_Y));
+ } break;
+ case STATE_SCALING_AND_PANNING: {
+ goFromStateIdleTo(STATE_PANNING);
+ send(pointerEvent(ACTION_MOVE, DEFAULT_X * 2, DEFAULT_Y * 3));
+ send(pointerEvent(ACTION_MOVE, DEFAULT_X * 2, DEFAULT_Y * 4));
+ } break;
+ default:
+ throw new IllegalArgumentException("Illegal state: " + state);
+ }
+ } catch (Throwable t) {
+ throw new RuntimeException("Failed to go to state " + stateToString(state), t);
+ }
+ }
+
+ /**
+ * Defines a "canonical" path from {@code state} to {@link #STATE_IDLE}
+ */
+ private void returnToNormalFrom(int state) {
+ switch (state) {
+ case STATE_IDLE: {
+ // no op
+ } break;
+ case STATE_2TAPS: {
+ allowEventDelegation();
+ fastForward1sec();
+ } break;
+ case STATE_ZOOMED: {
+ if (mMgh.mDetectTripleTap) {
+ tap();
+ tap();
+ returnToNormalFrom(STATE_ZOOMED_2TAPS);
+ } else {
+ triggerShortcut();
+ }
+ } break;
+ case STATE_ZOOMED_2TAPS: {
+ tap();
+ } break;
+ case STATE_DRAGGING: {
+ send(upEvent());
+ returnToNormalFrom(STATE_ZOOMED);
+ } break;
+ case STATE_DRAGGING_TMP: {
+ send(upEvent());
+ } break;
+ case STATE_SHORTCUT_TRIGGERED: {
+ triggerShortcut();
+ } break;
+ case STATE_PANNING: {
+ send(pointerEvent(ACTION_POINTER_UP, DEFAULT_X * 2, DEFAULT_Y));
+ send(upEvent());
+ returnToNormalFrom(STATE_ZOOMED);
+ } break;
+ case STATE_SCALING_AND_PANNING: {
+ returnToNormalFrom(STATE_PANNING);
+ } break;
+ default: throw new IllegalArgumentException("Illegal state: " + state);
+ }
+ }
+
+ private void check(boolean condition, int expectedState) {
+ if (!condition) {
+ fail("Expected to be in state " + stateToString(expectedState) + stateDump());
+ }
+ }
+
+ private boolean isZoomed() {
+ return mMgh.mMagnificationController.isMagnifying();
+ }
+
+ private int tapCount() {
+ return mMgh.mDetectingStateHandler.tapCount();
+ }
+
+ private static String stateToString(int state) {
+ return DebugUtils.valueToString(MagnificationGestureHandlerTest.class, "STATE_", state);
+ }
+
+ private void tap() {
+ MotionEvent downEvent = downEvent();
+ send(downEvent);
+ send(upEvent(downEvent.getDownTime()));
+ }
+
+ private void swipe() {
+ MotionEvent downEvent = downEvent();
+ send(downEvent);
+ send(moveEvent(DEFAULT_X * 2, DEFAULT_Y * 2));
+ send(upEvent(downEvent.getDownTime()));
+ }
+
+ private void longTap() {
+ MotionEvent downEvent = downEvent();
+ send(downEvent);
+ fastForward(2000);
+ send(upEvent(downEvent.getDownTime()));
+ }
+
+ private void triggerShortcut() {
+ mMgh.notifyShortcutTriggered();
+ }
+
+ private void send(MotionEvent event) {
+ event.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+ try {
+ mMgh.onMotionEvent(event, event, /* policyFlags */ 0);
+ } catch (Throwable t) {
+ throw new RuntimeException("Exception while handling " + event, t);
+ }
+ fastForward(1);
+ }
+
+ private MotionEvent moveEvent(float x, float y) {
+ return MotionEvent.obtain(defaultDownTime(), mClock.now(), ACTION_MOVE, x, y, 0);
+ }
+
+ private MotionEvent downEvent() {
+ return MotionEvent.obtain(mClock.now(), mClock.now(),
+ ACTION_DOWN, DEFAULT_X, DEFAULT_Y, 0);
+ }
+
+ private MotionEvent upEvent() {
+ return upEvent(defaultDownTime());
+ }
+
+ private MotionEvent upEvent(long downTime) {
+ return MotionEvent.obtain(downTime, mClock.now(),
+ MotionEvent.ACTION_UP, DEFAULT_X, DEFAULT_Y, 0);
+ }
+
+ private long defaultDownTime() {
+ MotionEvent lastDown = mMgh.mDetectingStateHandler.mLastDown;
+ return lastDown == null ? mClock.now() - 1 : lastDown.getDownTime();
+ }
+
+ private MotionEvent pointerEvent(int action, float x, float y) {
+ MotionEvent.PointerProperties defPointerProperties = new MotionEvent.PointerProperties();
+ defPointerProperties.id = 0;
+ defPointerProperties.toolType = MotionEvent.TOOL_TYPE_FINGER;
+ MotionEvent.PointerProperties pointerProperties = new MotionEvent.PointerProperties();
+ pointerProperties.id = 1;
+ pointerProperties.toolType = MotionEvent.TOOL_TYPE_FINGER;
+
+ MotionEvent.PointerCoords defPointerCoords = new MotionEvent.PointerCoords();
+ defPointerCoords.x = DEFAULT_X;
+ defPointerCoords.y = DEFAULT_Y;
+ MotionEvent.PointerCoords pointerCoords = new MotionEvent.PointerCoords();
+ pointerCoords.x = x;
+ pointerCoords.y = y;
+
+ return MotionEvent.obtain(
+ /* downTime */ mClock.now(),
+ /* eventTime */ mClock.now(),
+ /* action */ action,
+ /* pointerCount */ 2,
+ /* pointerProperties */ new MotionEvent.PointerProperties[] {
+ defPointerProperties, pointerProperties },
+ /* pointerCoords */ new MotionEvent.PointerCoords[] { defPointerCoords, pointerCoords },
+ /* metaState */ 0,
+ /* buttonState */ 0,
+ /* xPrecision */ 1.0f,
+ /* yPrecision */ 1.0f,
+ /* deviceId */ 0,
+ /* edgeFlags */ 0,
+ /* source */ InputDevice.SOURCE_TOUCHSCREEN,
+ /* flags */ 0);
+ }
+
+ private String stateDump() {
+ return "\nCurrent state dump:\n" + mMgh + "\n" + mHandler.getPendingMessages();
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java b/services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java
index 0dba35f2a164..e3ee47f3421d 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/MessageCapturingHandler.java
@@ -16,6 +16,7 @@
package com.android.server.accessibility;
+import android.app.Notification;
import android.os.Handler;
import android.os.Message;
import android.util.Pair;
@@ -49,7 +50,7 @@ public class MessageCapturingHandler extends Handler {
public void sendOneMessage() {
Message message = timedMessages.remove(0).first;
removeMessages(message.what, message.obj);
- mCallback.handleMessage(message);
+ dispatchMessage(message);
removeStaleMessages();
}
@@ -62,7 +63,7 @@ public class MessageCapturingHandler extends Handler {
public void sendLastMessage() {
Message message = timedMessages.remove(timedMessages.size() - 1).first;
removeMessages(message.what, message.obj);
- mCallback.handleMessage(message);
+ dispatchMessage(message);
removeStaleMessages();
}
@@ -79,4 +80,12 @@ public class MessageCapturingHandler extends Handler {
}
}
}
+
+ public void dispatchMessage(Message m) {
+ if (mCallback != null) {
+ mCallback.handleMessage(m);
+ return;
+ }
+ super.dispatchMessage(m);
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java
index f63d438fd223..6311d0009258 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java
@@ -19,7 +19,9 @@ package com.android.server.accessibility;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.accessibilityservice.AccessibilityServiceInfo;
@@ -29,7 +31,6 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
-import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.view.WindowManagerInternal;
@@ -38,6 +39,7 @@ import android.view.accessibility.AccessibilityEvent;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@@ -49,6 +51,8 @@ public class UiAutomationManagerTest {
final UiAutomationManager mUiAutomationManager = new UiAutomationManager();
+ MessageCapturingHandler mMessageCapturingHandler;
+
@Mock AccessibilityManagerService.UserState mMockUserState;
@Mock Context mMockContext;
@Mock AccessibilityServiceInfo mMockServiceInfo;
@@ -68,7 +72,6 @@ public class UiAutomationManagerTest {
}
}
-
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
@@ -80,6 +83,8 @@ public class UiAutomationManagerTest {
mMockResolveInfo.serviceInfo.applicationInfo = mock(ApplicationInfo.class);
when(mMockAccessibilityServiceClient.asBinder()).thenReturn(mMockServiceAsBinder);
+
+ mMessageCapturingHandler = new MessageCapturingHandler(null);
}
@Test
@@ -146,10 +151,20 @@ public class UiAutomationManagerTest {
assertEquals(0, mUiAutomationManager.getRequestedEventMaskLocked());
}
+ @Test
+ public void uiAutomationBinderDiesBeforeConnecting_shouldNotCrash() throws Exception {
+ register(0);
+ ArgumentCaptor<IBinder.DeathRecipient> captor = ArgumentCaptor.forClass(
+ IBinder.DeathRecipient.class);
+ verify(mMockOwner).linkToDeath(captor.capture(), anyInt());
+ captor.getValue().binderDied();
+ mMessageCapturingHandler.sendAllMessages();
+ }
+
private void register(int flags) {
mUiAutomationManager.registerUiTestAutomationServiceLocked(mMockOwner,
mMockAccessibilityServiceClient, mMockContext, mMockServiceInfo, SERVICE_ID,
- new Handler(), new Object(), mMockSecurityPolicy, mMockSystemSupport,
+ mMessageCapturingHandler, new Object(), mMockSecurityPolicy, mMockSystemSupport,
mMockWindowManagerInternal, mMockGlobalActionPerformer, flags);
}
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java
index 47a3a7242a44..526f81572b07 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityRecordTests.java
@@ -20,15 +20,19 @@ import static android.view.WindowManagerPolicy.NAV_BAR_BOTTOM;
import static android.view.WindowManagerPolicy.NAV_BAR_LEFT;
import static android.view.WindowManagerPolicy.NAV_BAR_RIGHT;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
import android.content.ComponentName;
+import android.content.pm.ActivityInfo;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
import android.support.test.filters.MediumTest;
import android.support.test.runner.AndroidJUnit4;
+import android.view.Display;
import org.junit.runner.RunWith;
import org.junit.Test;
@@ -46,6 +50,8 @@ public class ActivityRecordTests extends ActivityTestsBase {
private final ComponentName testActivityComponent =
ComponentName.unflattenFromString("com.foo/.BarActivity");
+ private final ComponentName secondaryActivityComponent =
+ ComponentName.unflattenFromString("com.foo/.BarActivity2");
@Test
public void testStackCleanupOnClearingTask() throws Exception {
final ActivityManagerService service = createActivityManagerService();
@@ -131,4 +137,45 @@ public class ActivityRecordTests extends ActivityTestsBase {
record.ensureActivityConfigurationLocked(0 /* globalChanges */, false /* preserveWindow */);
assertEquals(expectedActivityBounds, record.getBounds());
}
+
+
+ @Test
+ public void testCanBeLaunchedOnDisplay() throws Exception {
+ testSupportsLaunchingResizeable(false /*taskPresent*/, true /*taskResizeable*/,
+ true /*activityResizeable*/, true /*expected*/);
+
+ testSupportsLaunchingResizeable(false /*taskPresent*/, true /*taskResizeable*/,
+ false /*activityResizeable*/, false /*expected*/);
+
+ testSupportsLaunchingResizeable(true /*taskPresent*/, false /*taskResizeable*/,
+ true /*activityResizeable*/, false /*expected*/);
+
+ testSupportsLaunchingResizeable(true /*taskPresent*/, true /*taskResizeable*/,
+ false /*activityResizeable*/, true /*expected*/);
+ }
+
+ private void testSupportsLaunchingResizeable(boolean taskPresent, boolean taskResizeable,
+ boolean activityResizeable, boolean expected) {
+ final ActivityManagerService service = createActivityManagerService();
+ service.mSupportsMultiWindow = true;
+
+
+ final TaskRecord task = taskPresent
+ ? createTask(service, testActivityComponent, TEST_STACK_ID) : null;
+
+ if (task != null) {
+ task.setResizeMode(taskResizeable ? ActivityInfo.RESIZE_MODE_RESIZEABLE
+ : ActivityInfo.RESIZE_MODE_UNRESIZEABLE);
+ }
+
+ final ActivityRecord record = createActivity(service, secondaryActivityComponent,
+ task);
+ record.info.resizeMode = activityResizeable ? ActivityInfo.RESIZE_MODE_RESIZEABLE
+ : ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
+
+ record.canBeLaunchedOnDisplay(Display.DEFAULT_DISPLAY);
+
+ assertEquals(((TestActivityStackSupervisor) service.mStackSupervisor)
+ .getLastResizeableFromCanPlaceEntityOnDisplay(), expected);
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java
index fc9ab9635c57..cd1843b37ae2 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java
@@ -17,10 +17,14 @@
package com.android.server.am;
import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID;
+import static android.app.ActivityManager.StackId.HOME_STACK_ID;
import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
import android.content.ComponentName;
import android.graphics.Rect;
@@ -59,7 +63,7 @@ public class ActivityStackSupervisorTests extends ActivityTestsBase {
public void testRestoringInvalidTask() throws Exception {
final ActivityManagerService service = createActivityManagerService();
TaskRecord task = service.mStackSupervisor.anyTaskForIdLocked(0 /*taskId*/,
- MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE, 0 /*stackId*/);
+ MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE, null);
assertNull(task);
}
@@ -117,4 +121,21 @@ public class ActivityStackSupervisorTests extends ActivityTestsBase {
assertTrue(stackTasks.contains(task));
}
}
+
+ /**
+ * Ensures that an activity is removed from the stopping activities list once it is resumed.
+ */
+ @Test
+ public void testStoppingActivityRemovedWhenResumed() throws Exception {
+ final ActivityManagerService service = createActivityManagerService();
+ final TaskRecord firstTask = createTask(service, testActivityComponent,
+ FULLSCREEN_WORKSPACE_STACK_ID);
+ final ActivityRecord firstActivity = createActivity(service, testActivityComponent,
+ firstTask);
+ service.mStackSupervisor.mStoppingActivities.add(firstActivity);
+
+ firstActivity.completeResumeLocked();
+
+ assertFalse(service.mStackSupervisor.mStoppingActivities.contains(firstActivity));
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java
index 80e241c0581f..02fba082ca98 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityStackTests.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertNull;
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
+import android.os.UserHandle;
import android.platform.test.annotations.Presubmit;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
@@ -44,6 +45,8 @@ public class ActivityStackTests extends ActivityTestsBase {
private static final int TEST_STACK_ID = 100;
private static final ComponentName testActivityComponent =
ComponentName.unflattenFromString("com.foo/.BarActivity");
+ private static final ComponentName testOverlayComponent =
+ ComponentName.unflattenFromString("com.foo/.OverlayActivity");
@Test
public void testEmptyTaskCleanupOnRemove() throws Exception {
@@ -98,4 +101,25 @@ public class ActivityStackTests extends ActivityTestsBase {
testStack.stopActivityLocked(activityRecord);
}
+
+ @Test
+ public void testFindTaskWithOverlay() throws Exception {
+ final ActivityManagerService service = createActivityManagerService();
+ final TaskRecord task = createTask(service, testActivityComponent, TEST_STACK_ID);
+ final ActivityRecord activityRecord = createActivity(service, testActivityComponent, task,
+ 0);
+ // Overlay must be for a different user to prevent recognizing a matching top activity
+ final ActivityRecord taskOverlay = createActivity(service, testOverlayComponent, task,
+ UserHandle.PER_USER_RANGE * 2);
+ taskOverlay.mTaskOverlay = true;
+
+ final ActivityStack testStack = service.mStackSupervisor.getStack(TEST_STACK_ID);
+ final ActivityStackSupervisor.FindTaskResult result =
+ new ActivityStackSupervisor.FindTaskResult();
+ testStack.findTaskLocked(activityRecord, result);
+
+ assertEquals(task.getTopActivity(false /* includeOverlays */), activityRecord);
+ assertEquals(task.getTopActivity(true /* includeOverlays */), taskOverlay);
+ assertNotNull(result.r);
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java
index f64de001371d..0cf1df84c073 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java
@@ -87,11 +87,17 @@ public class ActivityTestsBase {
protected static ActivityRecord createActivity(ActivityManagerService service,
ComponentName component, TaskRecord task) {
+ return createActivity(service, component, task, 0 /* userId */);
+ }
+
+ protected static ActivityRecord createActivity(ActivityManagerService service,
+ ComponentName component, TaskRecord task, int uid) {
Intent intent = new Intent();
intent.setComponent(component);
final ActivityInfo aInfo = new ActivityInfo();
aInfo.applicationInfo = new ApplicationInfo();
aInfo.applicationInfo.packageName = component.getPackageName();
+ aInfo.applicationInfo.uid = uid;
AttributeCache.init(service.mContext);
final ActivityRecord activity = new ActivityRecord(service, null /* caller */,
0 /* launchedFromPid */, 0, null, intent, null,
@@ -117,7 +123,7 @@ public class ActivityTestsBase {
intent.setComponent(component);
final TaskRecord task = new TaskRecord(service, 0, aInfo, intent /*intent*/,
- null /*_taskDescription*/, new ActivityManager.TaskThumbnailInfo());
+ null /*_taskDescription*/);
final ActivityStack stack = service.mStackSupervisor.getStack(stackId,
true /*createStaticStackIfNeeded*/, true /*onTop*/);
service.mStackSupervisor.setFocusStackUnchecked("test", stack);
@@ -145,6 +151,10 @@ public class ActivityTestsBase {
protected ActivityStackSupervisor createStackSupervisor() {
return new TestActivityStackSupervisor(this, mHandlerThread.getLooper());
}
+
+ @Override
+ void updateUsageStats(ActivityRecord component, boolean resumed) {
+ }
}
/**
@@ -153,6 +163,7 @@ public class ActivityTestsBase {
*/
protected static class TestActivityStackSupervisor extends ActivityStackSupervisor {
private final ActivityDisplay mDisplay;
+ private boolean mLastResizeable;
public TestActivityStackSupervisor(ActivityManagerService service, Looper looper) {
super(service, looper);
@@ -160,6 +171,22 @@ public class ActivityTestsBase {
mDisplay = new ActivityDisplay();
}
+ // TODO: Use Mockito spy instead. Currently not possible due to TestActivityStackSupervisor
+ // access to ActivityDisplay
+ @Override
+ boolean canPlaceEntityOnDisplay(int displayId, boolean resizeable, int callingPid,
+ int callingUid, ActivityInfo activityInfo) {
+ mLastResizeable = resizeable;
+ return super.canPlaceEntityOnDisplay(displayId, resizeable, callingPid, callingUid,
+ activityInfo);
+ }
+
+ // TODO: remove and use Mockito verify once {@link #canPlaceEntityOnDisplay} override is
+ // removed.
+ public boolean getLastResizeableFromCanPlaceEntityOnDisplay() {
+ return mLastResizeable;
+ }
+
// No home stack is set.
@Override
void moveHomeStackToFront(String reason) {
@@ -271,8 +298,7 @@ public class ActivityTestsBase {
}
@Override
- protected T createStackWindowController(int displayId, boolean onTop, Rect outBounds,
- Configuration outOverrideConfig) {
+ protected T createStackWindowController(int displayId, boolean onTop, Rect outBounds) {
mContainerController = (T) WindowTestUtils.createMockStackWindowContainerController();
return mContainerController;
}
diff --git a/services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java b/services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java
index e98e5bfb110e..f9d7f9d4904a 100644
--- a/services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/LockTaskControllerTest.java
@@ -20,19 +20,13 @@ import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED;
import static android.app.ActivityManager.LOCK_TASK_MODE_NONE;
import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED;
import static android.os.Process.SYSTEM_UID;
+
import static com.android.server.am.LockTaskController.STATUS_BAR_MASK_LOCKED;
import static com.android.server.am.LockTaskController.STATUS_BAR_MASK_PINNED;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.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 static org.junit.Assert.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
import android.app.StatusBarManager;
import android.app.admin.IDevicePolicyManager;
@@ -72,7 +66,8 @@ import org.mockito.verification.VerificationMode;
@SmallTest
public class LockTaskControllerTest {
private static final String TEST_PACKAGE_NAME = "com.test.package";
- private static final String TEST_CLASS_NAME = TEST_PACKAGE_NAME + ".TestClass";
+ private static final String TEST_PACKAGE_NAME_2 = "com.test.package2";
+ private static final String TEST_CLASS_NAME = ".TestClass";
private static final int TEST_USER_ID = 123;
private static final int TEST_UID = 10467;
@@ -309,15 +304,111 @@ public class LockTaskControllerTest {
verify(mLockPatternUtils).requireCredentialEntry(UserHandle.USER_ALL);
}
+ @Test
+ public void testUpdateLockTaskPackages() throws Exception {
+ String[] whitelist1 = {TEST_PACKAGE_NAME, TEST_PACKAGE_NAME_2};
+ String[] whitelist2 = {TEST_PACKAGE_NAME};
+
+ // No package is whitelisted initially
+ for (String pkg : whitelist1) {
+ assertFalse("Package shouldn't be whitelisted: " + pkg,
+ mLockTaskController.isPackageWhitelisted(TEST_USER_ID, pkg));
+ assertFalse("Package shouldn't be whitelisted for user 0: " + pkg,
+ mLockTaskController.isPackageWhitelisted(0, pkg));
+ }
+
+ // Apply whitelist
+ mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist1);
+
+ // Assert the whitelist is applied to the correct user
+ for (String pkg : whitelist1) {
+ assertTrue("Package should be whitelisted: " + pkg,
+ mLockTaskController.isPackageWhitelisted(TEST_USER_ID, pkg));
+ assertFalse("Package shouldn't be whitelisted for user 0: " + pkg,
+ mLockTaskController.isPackageWhitelisted(0, pkg));
+ }
+
+ // Update whitelist
+ mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist2);
+
+ // Assert the new whitelist is applied
+ assertTrue("Package should remain whitelisted: " + TEST_PACKAGE_NAME,
+ mLockTaskController.isPackageWhitelisted(TEST_USER_ID, TEST_PACKAGE_NAME));
+ assertFalse("Package should no longer be whitelisted: " + TEST_PACKAGE_NAME_2,
+ mLockTaskController.isPackageWhitelisted(TEST_USER_ID, TEST_PACKAGE_NAME_2));
+ }
+
+ @Test
+ public void testUpdateLockTaskPackages_taskRemoved() throws Exception {
+ // GIVEN two tasks which are whitelisted initially
+ TaskRecord tr1 = getTaskRecordForUpdate(TEST_PACKAGE_NAME, true);
+ TaskRecord tr2 = getTaskRecordForUpdate(TEST_PACKAGE_NAME_2, false);
+ String[] whitelist = {TEST_PACKAGE_NAME, TEST_PACKAGE_NAME_2};
+ mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist);
+
+ // GIVEN the tasks are launched into LockTask mode
+ mLockTaskController.startLockTaskMode(tr1, false, TEST_UID);
+ mLockTaskController.startLockTaskMode(tr2, false, TEST_UID);
+ assertEquals(LOCK_TASK_MODE_LOCKED, mLockTaskController.getLockTaskModeState());
+ assertTrue(mLockTaskController.checkLockedTask(tr1));
+ assertTrue(mLockTaskController.checkLockedTask(tr2));
+ verifyLockTaskStarted(STATUS_BAR_MASK_LOCKED);
+
+ // WHEN removing one package from whitelist
+ whitelist = new String[] {TEST_PACKAGE_NAME};
+ mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist);
+
+ // THEN the task running that package should be stopped
+ verify(tr2).performClearTaskLocked();
+ assertFalse(mLockTaskController.checkLockedTask(tr2));
+ // THEN the other task should remain locked
+ assertEquals(LOCK_TASK_MODE_LOCKED, mLockTaskController.getLockTaskModeState());
+ assertTrue(mLockTaskController.checkLockedTask(tr1));
+ verifyLockTaskStarted(STATUS_BAR_MASK_LOCKED);
+
+ // WHEN removing the last package from whitelist
+ whitelist = new String[] {};
+ mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist);
+
+ // THEN the last task should be cleared, and the system should quit LockTask mode
+ verify(tr1).performClearTaskLocked();
+ assertFalse(mLockTaskController.checkLockedTask(tr1));
+ assertEquals(LOCK_TASK_MODE_NONE, mLockTaskController.getLockTaskModeState());
+ verifyLockTaskStopped(times(1));
+ }
+
private TaskRecord getTaskRecord(int lockTaskAuth) {
+ return getTaskRecord(TEST_PACKAGE_NAME, lockTaskAuth);
+ }
+
+ private TaskRecord getTaskRecord(String pkg, int lockTaskAuth) {
TaskRecord tr = mock(TaskRecord.class);
tr.mLockTaskAuth = lockTaskAuth;
tr.intent = new Intent()
- .setComponent(new ComponentName(TEST_PACKAGE_NAME, TEST_CLASS_NAME));
+ .setComponent(ComponentName.createRelative(pkg, TEST_CLASS_NAME));
tr.userId = TEST_USER_ID;
return tr;
}
+ /**
+ * @param isAppAware {@code true} if the app has marked if_whitelisted in its manifest
+ */
+ private TaskRecord getTaskRecordForUpdate(String pkg, boolean isAppAware) {
+ final int authIfWhitelisted = isAppAware
+ ? TaskRecord.LOCK_TASK_AUTH_LAUNCHABLE
+ : TaskRecord.LOCK_TASK_AUTH_WHITELISTED;
+ TaskRecord tr = getTaskRecord(pkg, authIfWhitelisted);
+ doAnswer((invocation) -> {
+ boolean isWhitelisted =
+ mLockTaskController.isPackageWhitelisted(TEST_USER_ID, pkg);
+ tr.mLockTaskAuth = isWhitelisted
+ ? authIfWhitelisted
+ : TaskRecord.LOCK_TASK_AUTH_PINNABLE;
+ return null;
+ }).when(tr).setLockTaskAuth();
+ return tr;
+ }
+
private void verifyLockTaskStarted(int statusBarMask) throws Exception {
// THEN the keyguard should have been disabled
verify(mWindowManager).disableKeyguard(any(IBinder.class), anyString());
diff --git a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
index 4475de5aa14e..419a161669aa 100644
--- a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
@@ -48,13 +48,13 @@ import java.util.List;
import java.util.Set;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static com.android.server.am.ActivityManagerService.CONTINUE_USER_SWITCH_MSG;
-import static com.android.server.am.ActivityManagerService.REPORT_LOCKED_BOOT_COMPLETE_MSG;
-import static com.android.server.am.ActivityManagerService.REPORT_USER_SWITCH_COMPLETE_MSG;
-import static com.android.server.am.ActivityManagerService.REPORT_USER_SWITCH_MSG;
-import static com.android.server.am.ActivityManagerService.SYSTEM_USER_CURRENT_MSG;
-import static com.android.server.am.ActivityManagerService.SYSTEM_USER_START_MSG;
-import static com.android.server.am.ActivityManagerService.USER_SWITCH_TIMEOUT_MSG;
+import static com.android.server.am.UserController.CONTINUE_USER_SWITCH_MSG;
+import static com.android.server.am.UserController.REPORT_LOCKED_BOOT_COMPLETE_MSG;
+import static com.android.server.am.UserController.REPORT_USER_SWITCH_COMPLETE_MSG;
+import static com.android.server.am.UserController.REPORT_USER_SWITCH_MSG;
+import static com.android.server.am.UserController.SYSTEM_USER_CURRENT_MSG;
+import static com.android.server.am.UserController.SYSTEM_USER_START_MSG;
+import static com.android.server.am.UserController.USER_SWITCH_TIMEOUT_MSG;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyBoolean;
@@ -309,6 +309,7 @@ public class UserControllerTest extends AndroidTestCase {
private static class TestInjector extends UserController.Injector {
final Object lock = new Object();
TestHandler handler;
+ TestHandler uiHandler;
HandlerThread handlerThread;
UserManagerService userManagerMock;
UserManagerInternal userManagerInternalMock;
@@ -324,6 +325,7 @@ public class UserControllerTest extends AndroidTestCase {
handlerThread = new HandlerThread(TAG);
handlerThread.start();
handler = new TestHandler(handlerThread.getLooper());
+ uiHandler = new TestHandler(handlerThread.getLooper());
userManagerMock = mock(UserManagerService.class);
userManagerInternalMock = mock(UserManagerInternal.class);
windowManagerMock = mock(WindowManagerService.class);
@@ -337,11 +339,16 @@ public class UserControllerTest extends AndroidTestCase {
}
@Override
- protected Handler getHandler() {
+ protected Handler getHandler(Handler.Callback callback) {
return handler;
}
@Override
+ protected Handler getUiHandler(Handler.Callback callback) {
+ return uiHandler;
+ }
+
+ @Override
protected UserManagerService getUserManager() {
return userManagerMock;
}
diff --git a/services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java b/services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java
index 04c02510cb3d..bc162977de2b 100644
--- a/services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/BackupPasswordManagerTest.java
@@ -16,7 +16,7 @@
package com.android.server.backup;
-import static com.android.server.testutis.TestUtils.assertExpectException;
+import static com.android.server.testutils.TestUtils.assertExpectException;
import static com.google.common.truth.Truth.assertThat;
diff --git a/services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java b/services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java
index 0e940f25a62a..f22dfdcadc2c 100644
--- a/services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java
+++ b/services/tests/servicestests/src/com/android/server/backup/testutils/PackageManagerStub.java
@@ -45,6 +45,7 @@ import java.util.List;
*/
public class PackageManagerStub extends PackageManager {
public static PackageInfo sPackageInfo;
+ public static int sApplicationEnabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
@Override
public PackageInfo getPackageInfo(String packageName, int flags)
@@ -820,7 +821,7 @@ public class PackageManagerStub extends PackageManager {
@Override
public int getApplicationEnabledSetting(String packageName) {
- return 0;
+ return sApplicationEnabledSetting;
}
@Override
diff --git a/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java b/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java
index db0ec0702b9f..ed26296ba72a 100644
--- a/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/utils/AppBackupUtilsTest.java
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.os.Process;
import android.platform.test.annotations.Presubmit;
@@ -27,6 +28,7 @@ import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import com.android.server.backup.RefactoredBackupManagerService;
+import com.android.server.backup.testutils.PackageManagerStub;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -43,6 +45,8 @@ public class AppBackupUtilsTest {
private static final Signature SIGNATURE_3 = generateSignature((byte) 3);
private static final Signature SIGNATURE_4 = generateSignature((byte) 4);
+ private final PackageManagerStub mPackageManagerStub = new PackageManagerStub();
+
@Test
public void appIsEligibleForBackup_backupNotAllowed_returnsFalse() throws Exception {
ApplicationInfo applicationInfo = new ApplicationInfo();
@@ -51,7 +55,8 @@ public class AppBackupUtilsTest {
applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
applicationInfo.packageName = TEST_PACKAGE_NAME;
- boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo);
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
assertThat(isEligible).isFalse();
}
@@ -65,7 +70,8 @@ public class AppBackupUtilsTest {
applicationInfo.backupAgentName = null;
applicationInfo.packageName = TEST_PACKAGE_NAME;
- boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo);
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
assertThat(isEligible).isFalse();
}
@@ -78,13 +84,14 @@ public class AppBackupUtilsTest {
applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
applicationInfo.packageName = RefactoredBackupManagerService.SHARED_BACKUP_AGENT_PACKAGE;
- boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo);
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
assertThat(isEligible).isFalse();
}
@Test
- public void appIsEligibleForBackup_systemAppWithCustomBackupAgent_returnsTrue()
+ public void appIsEligibleForBackup_systemAppWithCustomBackupAgentAndEnabled_returnsTrue()
throws Exception {
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP;
@@ -92,13 +99,17 @@ public class AppBackupUtilsTest {
applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
applicationInfo.packageName = TEST_PACKAGE_NAME;
- boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo);
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
assertThat(isEligible).isTrue();
}
@Test
- public void appIsEligibleForBackup_nonSystemAppWithoutCustomBackupAgent_returnsTrue()
+ public void appIsEligibleForBackup_nonSystemAppWithoutCustomBackupAgentAndEnabled_returnsTrue()
throws Exception {
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP;
@@ -106,13 +117,17 @@ public class AppBackupUtilsTest {
applicationInfo.backupAgentName = null;
applicationInfo.packageName = TEST_PACKAGE_NAME;
- boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo);
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
assertThat(isEligible).isTrue();
}
@Test
- public void appIsEligibleForBackup_nonSystemAppWithCustomBackupAgent_returnsTrue()
+ public void appIsEligibleForBackup_nonSystemAppWithCustomBackupAgentAndEnabled_returnsTrue()
throws Exception {
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP;
@@ -120,12 +135,134 @@ public class AppBackupUtilsTest {
applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
applicationInfo.packageName = TEST_PACKAGE_NAME;
- boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo);
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
assertThat(isEligible).isTrue();
}
@Test
+ public void appIsEligibleForBackup_systemAppWithCustomBackupAgentAndDisabled_returnsFalse()
+ throws Exception {
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP;
+ applicationInfo.uid = Process.SYSTEM_UID;
+ applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
+ applicationInfo.packageName = TEST_PACKAGE_NAME;
+
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
+
+ assertThat(isEligible).isFalse();
+ }
+
+ @Test
+ public void appIsEligibleForBackup_nonSystemAppWithoutCustomBackupAgentAndDisabled_returnsFalse()
+ throws Exception {
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP;
+ applicationInfo.uid = Process.FIRST_APPLICATION_UID;
+ applicationInfo.backupAgentName = null;
+ applicationInfo.packageName = TEST_PACKAGE_NAME;
+
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
+
+ assertThat(isEligible).isFalse();
+ }
+
+ @Test
+ public void appIsEligibleForBackup_nonSystemAppWithCustomBackupAgentAndDisbled_returnsFalse()
+ throws Exception {
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.flags |= ApplicationInfo.FLAG_ALLOW_BACKUP;
+ applicationInfo.uid = Process.FIRST_APPLICATION_UID;
+ applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
+ applicationInfo.packageName = TEST_PACKAGE_NAME;
+
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+
+ boolean isEligible = AppBackupUtils.appIsEligibleForBackup(applicationInfo,
+ mPackageManagerStub);
+
+ assertThat(isEligible).isFalse();
+ }
+
+ @Test
+ public void appIsDisabled_stateEnabled_returnsFalse() throws Exception {
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.flags = 0;
+ applicationInfo.uid = Process.FIRST_APPLICATION_UID;
+ applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
+ applicationInfo.packageName = TEST_PACKAGE_NAME;
+
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+
+ boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub);
+
+ assertThat(isDisabled).isFalse();
+ }
+
+ @Test
+ public void appIsDisabled_stateDisabled_returnsTrue() throws Exception {
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.flags = 0;
+ applicationInfo.uid = Process.FIRST_APPLICATION_UID;
+ applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
+ applicationInfo.packageName = TEST_PACKAGE_NAME;
+
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
+
+ boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub);
+
+ assertThat(isDisabled).isTrue();
+ }
+
+ @Test
+ public void appIsDisabled_stateDisabledUser_returnsTrue() throws Exception {
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.flags = 0;
+ applicationInfo.uid = Process.FIRST_APPLICATION_UID;
+ applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
+ applicationInfo.packageName = TEST_PACKAGE_NAME;
+
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
+
+ boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub);
+
+ assertThat(isDisabled).isTrue();
+ }
+
+ @Test
+ public void appIsDisabled_stateDisabledUntilUsed_returnsTrue() throws Exception {
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.flags = 0;
+ applicationInfo.uid = Process.FIRST_APPLICATION_UID;
+ applicationInfo.backupAgentName = CUSTOM_BACKUP_AGENT_NAME;
+ applicationInfo.packageName = TEST_PACKAGE_NAME;
+
+ PackageManagerStub.sApplicationEnabledSetting =
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
+
+ boolean isDisabled = AppBackupUtils.appIsDisabled(applicationInfo, mPackageManagerStub);
+
+ assertThat(isDisabled).isTrue();
+ }
+
+ @Test
public void appIsStopped_returnsTrue() throws Exception {
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.flags |= ApplicationInfo.FLAG_STOPPED;
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index e3faa5280859..87b0db80103a 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -22,7 +22,7 @@ import static android.os.UserManagerInternal.CAMERA_DISABLED_GLOBALLY;
import static android.os.UserManagerInternal.CAMERA_DISABLED_LOCALLY;
import static android.os.UserManagerInternal.CAMERA_NOT_DISABLED;
-import static com.android.server.testutis.TestUtils.assertExpectException;
+import static com.android.server.testutils.TestUtils.assertExpectException;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
@@ -54,11 +54,11 @@ import android.app.admin.DevicePolicyManagerInternal;
import android.app.admin.PasswordMetrics;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
-import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.content.pm.StringParceledListSlice;
import android.content.pm.UserInfo;
import android.graphics.Color;
@@ -167,6 +167,11 @@ public class DevicePolicyManagerTest extends DpmTestBase {
mServiceContext.binder.callingUid = DpmMockContext.CALLER_UID;
when(getServices().packageManager.hasSystemFeature(eq(PackageManager.FEATURE_DEVICE_ADMIN)))
.thenReturn(true);
+ doReturn(Collections.singletonList(new ResolveInfo()))
+ .when(getServices().packageManager).queryBroadcastReceiversAsUser(
+ any(Intent.class),
+ anyInt(),
+ any(UserHandle.class));
// By default, pretend all users are running and unlocked.
when(getServices().userManager.isUserUnlocked(anyInt())).thenReturn(true);
@@ -3653,7 +3658,8 @@ public class DevicePolicyManagerTest extends DpmTestBase {
// test reset password with token
when(getServices().lockPatternUtils.setLockCredentialWithToken(eq(password),
- eq(LockPatternUtils.CREDENTIAL_TYPE_PASSWORD), eq(handle), eq(token),
+ eq(LockPatternUtils.CREDENTIAL_TYPE_PASSWORD),
+ eq(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED), eq(handle), eq(token),
eq(UserHandle.USER_SYSTEM)))
.thenReturn(true);
assertTrue(dpm.resetPasswordWithToken(admin1, password, token, 0));
diff --git a/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java b/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java
index 70d22745b3dc..afe432b96f85 100644
--- a/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java
+++ b/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java
@@ -32,7 +32,6 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.PackageManager;
import android.os.IDeviceIdleController;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -117,7 +116,6 @@ public class BackgroundRestrictionsTest {
intentFilter.addAction(ACTION_JOB_STARTED);
intentFilter.addAction(ACTION_JOB_STOPPED);
mContext.registerReceiver(mJobStateChangeReceiver, intentFilter);
- setGlobalSwitch(true);
setAppOpsModeAllowed(true);
setPowerWhiteListed(false);
}
@@ -133,16 +131,6 @@ public class BackgroundRestrictionsTest {
}
@Test
- public void testGlobalSwitch() throws Exception {
- setGlobalSwitch(false); // Job should not stop now.
- scheduleAndAssertJobStarted();
- setAppOpsModeAllowed(false);
- mIActivityManager.makePackageIdle(TEST_APP_PACKAGE, UserHandle.USER_CURRENT);
- assertFalse("Job stopped even when feature switch is off",
- awaitJobStop(DEFAULT_WAIT_TIMEOUT));
- }
-
- @Test
public void testPowerWhiteList() throws Exception {
scheduleAndAssertJobStarted();
setAppOpsModeAllowed(false);
@@ -164,16 +152,10 @@ public class BackgroundRestrictionsTest {
cancelJobsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(cancelJobsIntent);
mContext.unregisterReceiver(mJobStateChangeReceiver);
- setGlobalSwitch(false);
setAppOpsModeAllowed(true);
setPowerWhiteListed(false);
}
- private void setGlobalSwitch(boolean enabled) {
- Settings.Global.putString(mContext.getContentResolver(),
- Settings.Global.JOB_SCHEDULER_CONSTANTS, "bg_jobs_restricted=" + enabled);
- }
-
private void setPowerWhiteListed(boolean whitelist) throws RemoteException {
if (whitelist) {
mDeviceIdleController.addPowerSaveWhitelistApp(TEST_APP_PACKAGE);
@@ -182,7 +164,7 @@ public class BackgroundRestrictionsTest {
}
}
- private void setAppOpsModeAllowed(boolean allow) throws PackageManager.NameNotFoundException {
+ private void setAppOpsModeAllowed(boolean allow) {
mAppOpsManager.setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mTestPackageUid,
TEST_APP_PACKAGE, allow ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
index 0df834f0469e..0916a335b51e 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
@@ -21,6 +21,7 @@ import static org.mockito.Mockito.mock;
import android.app.IActivityManager;
import android.content.Context;
import android.os.Handler;
+import android.os.Looper;
import android.os.Process;
import android.os.RemoteException;
import android.os.storage.IStorageManager;
@@ -56,7 +57,7 @@ public class LockSettingsServiceTestable extends LockSettingsService {
@Override
public Handler getHandler() {
- return mock(Handler.class);
+ return new Handler(Looper.getMainLooper());
}
@Override
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
index fd77de344aa6..2c9aa9d6a245 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java
@@ -23,8 +23,9 @@ import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PASSWORD;
import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_ENABLED_KEY;
import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_HANDLE_KEY;
+import static org.mockito.Mockito.verify;
-import android.app.admin.DevicePolicyManager;
+import android.app.admin.PasswordMetrics;
import android.os.RemoteException;
import android.os.UserHandle;
@@ -272,14 +273,22 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests {
long handle = mService.addEscrowToken(TOKEN.getBytes(), PRIMARY_USER_ID);
assertFalse(mService.isEscrowTokenActive(handle, PRIMARY_USER_ID));
- mService.verifyCredential(PASSWORD, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, PRIMARY_USER_ID).getResponseCode();
+ mService.verifyCredential(PASSWORD, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0,
+ PRIMARY_USER_ID).getResponseCode();
assertTrue(mService.isEscrowTokenActive(handle, PRIMARY_USER_ID));
mService.setLockCredentialWithToken(PATTERN, LockPatternUtils.CREDENTIAL_TYPE_PATTERN,
handle, TOKEN.getBytes(), PASSWORD_QUALITY_SOMETHING, PRIMARY_USER_ID);
+ // Verify DPM gets notified about new device lock
+ mService.mHandler.runWithScissors(() -> {}, 0 /*now*/); // Flush runnables on handler
+ PasswordMetrics metric = PasswordMetrics.computeForPassword(PATTERN);
+ metric.quality = PASSWORD_QUALITY_SOMETHING;
+ verify(mDevicePolicyManager).setActivePasswordState(metric, PRIMARY_USER_ID);
+
assertEquals(VerifyCredentialResponse.RESPONSE_OK,
- mService.verifyCredential(PATTERN, LockPatternUtils.CREDENTIAL_TYPE_PATTERN, 0, PRIMARY_USER_ID).getResponseCode());
+ mService.verifyCredential(PATTERN, LockPatternUtils.CREDENTIAL_TYPE_PATTERN, 0,
+ PRIMARY_USER_ID).getResponseCode());
assertArrayEquals(storageKey, mStorageManager.getUserUnlockToken(PRIMARY_USER_ID));
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java
index 9f77297b49dd..d1366144d33b 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceTest.java
@@ -55,11 +55,11 @@ public class UserManagerServiceTest extends AndroidTestCase {
public void testWriteReadApplicationRestrictions() throws IOException {
AtomicFile atomicFile = new AtomicFile(restrictionsFile);
Bundle bundle = createBundle();
- UserManagerService.writeApplicationRestrictionsLP(bundle, atomicFile);
+ UserManagerService.writeApplicationRestrictionsLAr(bundle, atomicFile);
assertTrue(atomicFile.getBaseFile().exists());
String s = FileUtils.readTextFile(restrictionsFile, 10000, "");
System.out.println("restrictionsFile: " + s);
- bundle = UserManagerService.readApplicationRestrictionsLP(atomicFile);
+ bundle = UserManagerService.readApplicationRestrictionsLAr(atomicFile);
System.out.println("readApplicationRestrictionsLocked bundle: " + bundle);
assertBundle(bundle);
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java b/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java
index 2c56a8263a8c..150f7f0c948c 100644
--- a/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java
@@ -16,10 +16,14 @@
package com.android.server.pm.dex;
+import com.android.server.pm.PackageDexOptimizer;
+
+import static com.android.server.pm.PackageDexOptimizer.SKIP_SHARED_LIBRARY_CHECK;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import android.content.pm.ApplicationInfo;
import android.support.test.filters.SmallTest;
@@ -46,22 +50,35 @@ public class DexoptUtilsTest {
private static final String DELEGATE_LAST_CLASS_LOADER_NAME =
DelegateLastClassLoader.class.getName();
- private ApplicationInfo createMockApplicationInfo(String baseClassLoader, boolean addSplits,
+ private static class TestData {
+ ApplicationInfo info;
+ boolean[] pathsWithCode;
+ }
+
+ private TestData createMockApplicationInfo(String baseClassLoader, boolean addSplits,
boolean addSplitDependencies) {
ApplicationInfo ai = new ApplicationInfo();
String codeDir = "/data/app/mock.android.com";
ai.setBaseCodePath(codeDir + "/base.dex");
ai.classLoaderName = baseClassLoader;
ai.privateFlags = ai.privateFlags | ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING;
+ boolean[] pathsWithCode;
+ if (!addSplits) {
+ pathsWithCode = new boolean[] {true};
+ } else {
+ pathsWithCode = new boolean[9];
+ Arrays.fill(pathsWithCode, true);
+ pathsWithCode[7] = false; // config split
- if (addSplits) {
ai.setSplitCodePaths(new String[]{
codeDir + "/base-1.dex",
codeDir + "/base-2.dex",
codeDir + "/base-3.dex",
codeDir + "/base-4.dex",
codeDir + "/base-5.dex",
- codeDir + "/base-6.dex"});
+ codeDir + "/base-6.dex",
+ codeDir + "/config-split-7.dex",
+ codeDir + "/feature-no-deps.dex"});
ai.splitClassLoaderNames = new String[]{
DELEGATE_LAST_CLASS_LOADER_NAME,
@@ -69,7 +86,9 @@ public class DexoptUtilsTest {
PATH_CLASS_LOADER_NAME,
DEX_CLASS_LOADER_NAME,
PATH_CLASS_LOADER_NAME,
- null}; // A null class loader name should default to PathClassLoader.
+ null, // A null class loader name should default to PathClassLoader.
+ null, // The config split gets a null class loader.
+ null}; // The feature split with no dependency and no specified class loader.
if (addSplitDependencies) {
ai.splitDependencies = new SparseArray<>(ai.splitClassLoaderNames.length + 1);
ai.splitDependencies.put(0, new int[] {-1}); // base has no dependency
@@ -79,18 +98,24 @@ public class DexoptUtilsTest {
ai.splitDependencies.put(4, new int[] {0}); // split 4 depends on base
ai.splitDependencies.put(5, new int[] {0}); // split 5 depends on base
ai.splitDependencies.put(6, new int[] {5}); // split 6 depends on 5
+ // Do not add the config split to the dependency list.
+ // Do not add the feature split with no dependency to the dependency list.
}
}
- return ai;
+ TestData data = new TestData();
+ data.info = ai;
+ data.pathsWithCode = pathsWithCode;
+ return data;
}
@Test
public void testSplitChain() {
- ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, true);
+ TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, true);
String[] sharedLibrary = new String[] {"a.dex", "b.dex"};
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, sharedLibrary, data.pathsWithCode);
- assertEquals(7, contexts.length);
+ assertEquals(9, contexts.length);
assertEquals("PCL[a.dex:b.dex]", contexts[0]);
assertEquals("DLC[];DLC[base-2.dex];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]",
contexts[1]);
@@ -99,15 +124,18 @@ public class DexoptUtilsTest {
assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[4]);
assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[5]);
assertEquals("PCL[];PCL[base-5.dex];PCL[a.dex:b.dex:base.dex]", contexts[6]);
+ assertEquals(null, contexts[7]); // config split
+ assertEquals("PCL[]", contexts[8]); // feature split with no dependency
}
@Test
public void testSplitChainNoSplitDependencies() {
- ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, false);
+ TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, false);
String[] sharedLibrary = new String[] {"a.dex", "b.dex"};
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, sharedLibrary, data.pathsWithCode);
- assertEquals(7, contexts.length);
+ assertEquals(9, contexts.length);
assertEquals("PCL[a.dex:b.dex]", contexts[0]);
assertEquals("PCL[a.dex:b.dex:base.dex]", contexts[1]);
assertEquals("PCL[a.dex:b.dex:base.dex:base-1.dex]", contexts[2]);
@@ -119,15 +147,21 @@ public class DexoptUtilsTest {
assertEquals(
"PCL[a.dex:b.dex:base.dex:base-1.dex:base-2.dex:base-3.dex:base-4.dex:base-5.dex]",
contexts[6]);
+ assertEquals(null, contexts[7]); // config split
+ assertEquals(
+ "PCL[a.dex:b.dex:base.dex:base-1.dex:base-2.dex:base-3.dex:base-4.dex:base-5.dex:base-6.dex:config-split-7.dex]",
+ contexts[8]); // feature split with no dependency
}
@Test
public void testSplitChainNoIsolationNoSharedLibrary() {
- ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, true);
- ai.privateFlags = ai.privateFlags & (~ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING);
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, null);
+ TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, true, true);
+ data.info.privateFlags = data.info.privateFlags
+ & (~ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, null, data.pathsWithCode);
- assertEquals(7, contexts.length);
+ assertEquals(9, contexts.length);
assertEquals("PCL[]", contexts[0]);
assertEquals("PCL[base.dex]", contexts[1]);
assertEquals("PCL[base.dex:base-1.dex]", contexts[2]);
@@ -137,14 +171,20 @@ public class DexoptUtilsTest {
assertEquals(
"PCL[base.dex:base-1.dex:base-2.dex:base-3.dex:base-4.dex:base-5.dex]",
contexts[6]);
+ assertEquals(null, contexts[7]); // config split
+ assertEquals(
+ "PCL[base.dex:base-1.dex:base-2.dex:base-3.dex:base-4.dex:base-5.dex:base-6.dex:config-split-7.dex]",
+ contexts[8]); // feature split with no dependency
}
+
@Test
public void testSplitChainNoSharedLibraries() {
- ApplicationInfo ai = createMockApplicationInfo(
+ TestData data = createMockApplicationInfo(
DELEGATE_LAST_CLASS_LOADER_NAME, true, true);
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, null);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, null, data.pathsWithCode);
- assertEquals(7, contexts.length);
+ assertEquals(9, contexts.length);
assertEquals("DLC[]", contexts[0]);
assertEquals("DLC[];DLC[base-2.dex];PCL[base-4.dex];DLC[base.dex]", contexts[1]);
assertEquals("DLC[];PCL[base-4.dex];DLC[base.dex]", contexts[2]);
@@ -152,16 +192,19 @@ public class DexoptUtilsTest {
assertEquals("PCL[];DLC[base.dex]", contexts[4]);
assertEquals("PCL[];DLC[base.dex]", contexts[5]);
assertEquals("PCL[];PCL[base-5.dex];DLC[base.dex]", contexts[6]);
+ assertEquals(null, contexts[7]); // config split
+ assertEquals("PCL[]", contexts[8]); // feature split with no dependency
}
@Test
public void testSplitChainWithNullPrimaryClassLoader() {
// A null classLoaderName should mean PathClassLoader.
- ApplicationInfo ai = createMockApplicationInfo(null, true, true);
+ TestData data = createMockApplicationInfo(null, true, true);
String[] sharedLibrary = new String[] {"a.dex", "b.dex"};
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, sharedLibrary, data.pathsWithCode);
- assertEquals(7, contexts.length);
+ assertEquals(9, contexts.length);
assertEquals("PCL[a.dex:b.dex]", contexts[0]);
assertEquals("DLC[];DLC[base-2.dex];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[1]);
assertEquals("DLC[];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[2]);
@@ -169,13 +212,16 @@ public class DexoptUtilsTest {
assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[4]);
assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[5]);
assertEquals("PCL[];PCL[base-5.dex];PCL[a.dex:b.dex:base.dex]", contexts[6]);
+ assertEquals(null, contexts[7]); // config split
+ assertEquals("PCL[]", contexts[8]); // feature split with no dependency
}
@Test
public void tesNoSplits() {
- ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, false, false);
+ TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, false, false);
String[] sharedLibrary = new String[] {"a.dex", "b.dex"};
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, sharedLibrary, data.pathsWithCode);
assertEquals(1, contexts.length);
assertEquals("PCL[a.dex:b.dex]", contexts[0]);
@@ -183,9 +229,10 @@ public class DexoptUtilsTest {
@Test
public void tesNoSplitsNullClassLoaderName() {
- ApplicationInfo ai = createMockApplicationInfo(null, false, false);
+ TestData data = createMockApplicationInfo(null, false, false);
String[] sharedLibrary = new String[] {"a.dex", "b.dex"};
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, sharedLibrary, data.pathsWithCode);
assertEquals(1, contexts.length);
assertEquals("PCL[a.dex:b.dex]", contexts[0]);
@@ -193,10 +240,11 @@ public class DexoptUtilsTest {
@Test
public void tesNoSplitDelegateLast() {
- ApplicationInfo ai = createMockApplicationInfo(
+ TestData data = createMockApplicationInfo(
DELEGATE_LAST_CLASS_LOADER_NAME, false, false);
String[] sharedLibrary = new String[] {"a.dex", "b.dex"};
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, sharedLibrary);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, sharedLibrary, data.pathsWithCode);
assertEquals(1, contexts.length);
assertEquals("DLC[a.dex:b.dex]", contexts[0]);
@@ -204,8 +252,9 @@ public class DexoptUtilsTest {
@Test
public void tesNoSplitsNoSharedLibraries() {
- ApplicationInfo ai = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, false, false);
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, null);
+ TestData data = createMockApplicationInfo(PATH_CLASS_LOADER_NAME, false, false);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, null, data.pathsWithCode);
assertEquals(1, contexts.length);
assertEquals("PCL[]", contexts[0]);
@@ -213,15 +262,55 @@ public class DexoptUtilsTest {
@Test
public void tesNoSplitDelegateLastNoSharedLibraries() {
- ApplicationInfo ai = createMockApplicationInfo(
+ TestData data = createMockApplicationInfo(
DELEGATE_LAST_CLASS_LOADER_NAME, false, false);
- String[] contexts = DexoptUtils.getClassLoaderContexts(ai, null);
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, null, data.pathsWithCode);
assertEquals(1, contexts.length);
assertEquals("DLC[]", contexts[0]);
}
@Test
+ public void testContextWithNoCode() {
+ TestData data = createMockApplicationInfo(null, true, false);
+ Arrays.fill(data.pathsWithCode, false);
+
+ String[] sharedLibrary = new String[] {"a.dex", "b.dex"};
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, sharedLibrary, data.pathsWithCode);
+
+ assertEquals(9, contexts.length);
+ assertEquals(null, contexts[0]);
+ assertEquals(null, contexts[1]);
+ assertEquals(null, contexts[2]);
+ assertEquals(null, contexts[3]);
+ assertEquals(null, contexts[4]);
+ assertEquals(null, contexts[5]);
+ assertEquals(null, contexts[6]);
+ assertEquals(null, contexts[7]);
+ }
+
+ @Test
+ public void testContextBaseNoCode() {
+ TestData data = createMockApplicationInfo(null, true, true);
+ data.pathsWithCode[0] = false;
+ String[] sharedLibrary = new String[] {"a.dex", "b.dex"};
+ String[] contexts = DexoptUtils.getClassLoaderContexts(
+ data.info, sharedLibrary, data.pathsWithCode);
+
+ assertEquals(9, contexts.length);
+ assertEquals(null, contexts[0]);
+ assertEquals("DLC[];DLC[base-2.dex];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[1]);
+ assertEquals("DLC[];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[2]);
+ assertEquals("PCL[];PCL[base-4.dex];PCL[a.dex:b.dex:base.dex]", contexts[3]);
+ assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[4]);
+ assertEquals("PCL[];PCL[a.dex:b.dex:base.dex]", contexts[5]);
+ assertEquals("PCL[];PCL[base-5.dex];PCL[a.dex:b.dex:base.dex]", contexts[6]);
+ assertEquals(null, contexts[7]);
+ }
+
+ @Test
public void testProcessContextForDexLoad() {
List<String> classLoaders = Arrays.asList(
DELEGATE_LAST_CLASS_LOADER_NAME,
@@ -284,4 +373,49 @@ public class DexoptUtilsTest {
}
assertTrue(gotException);
}
+
+ @Test
+ public void testEncodeClassLoader() {
+ assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoader(
+ SKIP_SHARED_LIBRARY_CHECK, "dalvik.system.PathClassLoader"));
+ assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoader(
+ SKIP_SHARED_LIBRARY_CHECK, "dalvik.system.DexClassLoader"));
+ assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoader(
+ SKIP_SHARED_LIBRARY_CHECK, "dalvik.system.DelegateLastClassLoader"));
+ assertEquals("PCL[xyz]", DexoptUtils.encodeClassLoader("xyz",
+ "dalvik.system.PathClassLoader"));
+ assertEquals("PCL[xyz]", DexoptUtils.encodeClassLoader("xyz",
+ "dalvik.system.DexClassLoader"));
+ assertEquals("DLC[xyz]", DexoptUtils.encodeClassLoader("xyz",
+ "dalvik.system.DelegateLastClassLoader"));
+ assertEquals("PCL[xyz]", DexoptUtils.encodeClassLoader("xyz", null));
+ assertEquals("abc[xyz]", DexoptUtils.encodeClassLoader("xyz", "abc"));
+
+ try {
+ DexoptUtils.encodeClassLoader(null, "abc");
+ fail(); // Exception should be caught.
+ } catch (NullPointerException expected) {}
+ }
+
+ @Test
+ public void testEncodeClassLoaderChain() {
+ assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoaderChain(
+ SKIP_SHARED_LIBRARY_CHECK, "PCL[a]"));
+ assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoaderChain("PCL[a]",
+ SKIP_SHARED_LIBRARY_CHECK));
+ assertEquals("PCL[a];DLC[b]", DexoptUtils.encodeClassLoaderChain("PCL[a]",
+ "DLC[b]"));
+ assertEquals(SKIP_SHARED_LIBRARY_CHECK, DexoptUtils.encodeClassLoaderChain("PCL[a]",
+ SKIP_SHARED_LIBRARY_CHECK));
+
+ try {
+ DexoptUtils.encodeClassLoaderChain("a", null);
+ fail(); // exception is expected
+ } catch (NullPointerException expected) {}
+
+ try {
+ DexoptUtils.encodeClassLoaderChain(null, "b");
+ fail(); // exception is expected
+ } catch (NullPointerException expected) {}
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
index 14b1ce1662c7..4559660351b0 100644
--- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
@@ -33,6 +33,10 @@ import org.junit.rules.TemporaryFolder;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import static android.os.PowerManagerInternal.WAKEFULNESS_ASLEEP;
+import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE;
+import static android.os.PowerManagerInternal.WAKEFULNESS_DOZING;
+import static android.os.PowerManagerInternal.WAKEFULNESS_DREAMING;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.eq;
@@ -83,4 +87,33 @@ public class PowerManagerServiceTest extends AndroidTestCase {
SystemProperties.set(TEST_LAST_REBOOT_PROPERTY, "");
assertThat(reason).isEqualTo(PowerManager.SHUTDOWN_REASON_THERMAL_SHUTDOWN);
}
+
+ @SmallTest
+ public void testGetDesiredScreenPolicy_WithVR() throws Exception {
+ // Brighten up the screen
+ mService.setWakefulnessLocked(WAKEFULNESS_AWAKE, 0);
+ assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo(
+ DisplayPowerRequest.POLICY_BRIGHT);
+
+ // Move to VR
+ mService.setVrModeEnabled(true);
+ assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo(
+ DisplayPowerRequest.POLICY_VR);
+
+ // Then take a nap
+ mService.setWakefulnessLocked(WAKEFULNESS_ASLEEP, 0);
+ assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo(
+ DisplayPowerRequest.POLICY_OFF);
+
+ // Wake up to VR
+ mService.setWakefulnessLocked(WAKEFULNESS_AWAKE, 0);
+ assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo(
+ DisplayPowerRequest.POLICY_VR);
+
+ // And back to normal
+ mService.setVrModeEnabled(false);
+ assertThat(mService.getDesiredScreenPolicyLocked()).isEqualTo(
+ DisplayPowerRequest.POLICY_BRIGHT);
+
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/testutils/OffsettableClock.java b/services/tests/servicestests/src/com/android/server/testutils/OffsettableClock.java
new file mode 100644
index 000000000000..8dabbc4d4356
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/testutils/OffsettableClock.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 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.testutils;
+
+import android.os.SystemClock;
+
+import java.util.function.LongSupplier;
+
+/**
+ * A time supplier (in the format of a {@code long} as the amount of milliseconds) similar
+ * to {@link SystemClock#uptimeMillis()}, but with the ability to {@link #fastForward}
+ * and {@link #rewind}
+ *
+ * Implements {@link LongSupplier} to be interchangeable with {@code SystemClock::uptimeMillis}
+ *
+ * Can be provided to {@link TestHandler} to "mock time" for the delayed execution testing
+ *
+ * @see OffsettableClock.Stopped for a version of this clock that does not advance on its own
+ */
+public class OffsettableClock implements LongSupplier {
+ private long mOffset = 0L;
+
+ /**
+ * @return Current time in milliseconds, according to this clock
+ */
+ public long now() {
+ return realNow() + mOffset;
+ }
+
+ /**
+ * Can be overriden with a constant for a clock that stands still, and is only ever moved
+ * manually
+ */
+ public long realNow() {
+ return SystemClock.uptimeMillis();
+ }
+
+ public void fastForward(long timeMs) {
+ mOffset += timeMs;
+ }
+ public void rewind(long timeMs) {
+ fastForward(-timeMs);
+ }
+ public void reset() {
+ mOffset = 0;
+ }
+
+ /** @deprecated Only present for {@link LongSupplier} contract */
+ @Override
+ @Deprecated
+ public long getAsLong() {
+ return now();
+ }
+
+ /**
+ * An {@link OffsettableClock} that does not advance with real time, and can only be
+ * advanced manually via {@link #fastForward}
+ */
+ public static class Stopped extends OffsettableClock {
+ @Override
+ public long realNow() {
+ return 0L;
+ }
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/testutils/TestHandler.java b/services/tests/servicestests/src/com/android/server/testutils/TestHandler.java
new file mode 100644
index 000000000000..2d4bc0f8b7d0
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/testutils/TestHandler.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2017 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.testutils;
+
+
+import static android.util.ExceptionUtils.getRootCause;
+import static android.util.ExceptionUtils.propagate;
+
+import android.os.Handler;
+import android.os.Message;
+import android.os.SystemClock;
+import android.util.ArrayMap;
+
+import java.util.Map;
+import java.util.PriorityQueue;
+import java.util.function.LongSupplier;
+
+/**
+ * A test {@link Handler} that stores incoming {@link Message}s and {@link Runnable callbacks}
+ * in a {@link PriorityQueue} based on time, to be manually processed later in a correct order
+ * either all together with {@link #flush}, or only those due at the current time with
+ * {@link #timeAdvance}.
+ *
+ * For the latter use case this also supports providing a custom clock (in a format of a
+ * milliseconds-returning {@link LongSupplier}), that will be used for storing the messages'
+ * timestamps to be posted at, and checked against during {@link #timeAdvance}.
+ *
+ * This allows to test code that uses {@link Handler}'s delayed invocation capabilities, such as
+ * {@link Handler#sendMessageDelayed} or {@link Handler#postDelayed} without resorting to
+ * synchronously {@link Thread#sleep}ing in your test.
+ *
+ * @see OffsettableClock for a useful custom clock implementation to use with this handler
+ */
+public class TestHandler extends Handler {
+ private static final LongSupplier DEFAULT_CLOCK = SystemClock::uptimeMillis;
+
+ private final PriorityQueue<MsgInfo> mMessages = new PriorityQueue<>();
+ /**
+ * Map of: {@code message id -> count of such messages currently pending }
+ */
+ // Boxing is ok here - both msg ids and their pending counts tend to be well below 128
+ private final Map<Integer, Integer> mPendingMsgTypeCounts = new ArrayMap<>();
+ private final LongSupplier mClock;
+
+ public TestHandler(Callback callback) {
+ this(callback, DEFAULT_CLOCK);
+ }
+
+ public TestHandler(Callback callback, LongSupplier clock) {
+ super(callback);
+ mClock = clock;
+ }
+
+ @Override
+ public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
+ mPendingMsgTypeCounts.put(msg.what,
+ mPendingMsgTypeCounts.getOrDefault(msg.what, 0) + 1);
+
+ // uptimeMillis is an absolute time obtained as SystemClock.uptimeMillis() + offsetMillis
+ // if custom clock is given, recalculate the time with regards to it
+ if (mClock != DEFAULT_CLOCK) {
+ uptimeMillis = uptimeMillis - SystemClock.uptimeMillis() + mClock.getAsLong();
+ }
+
+ // post a dummy queue entry to keep track of message removal
+ return super.sendMessageAtTime(msg, Long.MAX_VALUE)
+ && mMessages.add(new MsgInfo(Message.obtain(msg), uptimeMillis));
+ }
+
+ /** @see TestHandler */
+ public void timeAdvance() {
+ long now = mClock.getAsLong();
+ while (!mMessages.isEmpty() && mMessages.peek().sendTime <= now) {
+ dispatch(mMessages.poll());
+ }
+ }
+
+ /**
+ * Dispatch all messages in order
+ *
+ * @see TestHandler
+ */
+ public void flush() {
+ MsgInfo msg;
+ while ((msg = mMessages.poll()) != null) {
+ dispatch(msg);
+ }
+ }
+
+ public PriorityQueue<MsgInfo> getPendingMessages() {
+ return new PriorityQueue<>(mMessages);
+ }
+
+ private void dispatch(MsgInfo msg) {
+ int msgId = msg.message.what;
+
+ if (!hasMessages(msgId)) {
+ // Handler.removeMessages(msgId) must have been called
+ return;
+ }
+
+ try {
+ Integer pendingMsgCount = mPendingMsgTypeCounts.getOrDefault(msgId, 0);
+ if (pendingMsgCount <= 1) {
+ removeMessages(msgId);
+ }
+ mPendingMsgTypeCounts.put(msgId, pendingMsgCount - 1);
+
+ dispatchMessage(msg.message);
+ } catch (Throwable t) {
+ // Append stack trace of this message being posted as a cause for a helpful
+ // test error message
+ throw propagate(getRootCause(t).initCause(msg.postPoint));
+ } finally {
+ msg.message.recycle();
+ }
+ }
+
+ private class MsgInfo implements Comparable<MsgInfo> {
+ public final Message message;
+ public final long sendTime;
+ public final RuntimeException postPoint;
+
+ private MsgInfo(Message message, long sendTime) {
+ this.message = message;
+ this.sendTime = sendTime;
+ this.postPoint = new RuntimeException("Message originated from here:");
+ }
+
+ @Override
+ public int compareTo(MsgInfo o) {
+ return (int) (sendTime - o.sendTime);
+ }
+
+ @Override
+ public String toString() {
+ return "MsgInfo{" +
+ "message=" + message +
+ ", sendTime=" + sendTime +
+ '}';
+ }
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/testutis/TestUtils.java b/services/tests/servicestests/src/com/android/server/testutils/TestUtils.java
index 88289888b0dd..b200293ee916 100644
--- a/services/tests/servicestests/src/com/android/server/testutis/TestUtils.java
+++ b/services/tests/servicestests/src/com/android/server/testutils/TestUtils.java
@@ -13,12 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.server.testutis;
+package com.android.server.testutils;
import android.test.MoreAsserts;
import junit.framework.Assert;
+import org.mockito.Mockito;
+import org.mockito.stubbing.Answer;
+
public class TestUtils {
private TestUtils() {
}
@@ -44,4 +47,17 @@ public class TestUtils {
Assert.fail("Expected exception type " + expectedExceptionType.getName()
+ " was not thrown");
}
+
+ /**
+ * EasyMock-style "strict" mock that throws immediately on any interaction that was not
+ * explicitly allowed.
+ *
+ * You can allow certain method calls on a whitelist basis by stubbing them e.g. with
+ * {@link Mockito#doAnswer}, {@link Mockito#doNothing}, etc.
+ */
+ public static <T> T strictMock(Class<T> c) {
+ return Mockito.mock(c, (Answer) invocation -> {
+ throw new AssertionError("Unexpected invocation: " + invocation);
+ });
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java b/services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java
index 38142d3681b6..7d73e82eaf76 100644
--- a/services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java
+++ b/services/tests/servicestests/src/com/android/server/timezone/PackageTrackerTest.java
@@ -107,7 +107,7 @@ public class PackageTrackerTest {
mFakeIntentHelper.assertNotInitialized();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
}
@Test
@@ -119,7 +119,7 @@ public class PackageTrackerTest {
mPackageTracker.start();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
try {
// This call should also not be allowed and will throw an exception if tracking is
@@ -129,7 +129,7 @@ public class PackageTrackerTest {
} catch (IllegalStateException expected) {}
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
}
@Test
@@ -141,14 +141,14 @@ public class PackageTrackerTest {
mPackageTracker.start();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
// Receiving a check result when tracking is disabled should cause the storage to be
// reset.
mPackageTracker.recordCheckResult(null /* checkToken */, true /* success */);
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
// Assert the storage was reset.
checkPackageStorageStatusIsInitialOrReset();
@@ -166,13 +166,13 @@ public class PackageTrackerTest {
mPackageTracker.start();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
// Receiving a check result when tracking is disabled should cause the storage to be reset.
mPackageTracker.recordCheckResult(createArbitraryCheckToken(), true /* success */);
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
// Assert the storage was reset.
checkPackageStorageStatusIsInitialOrReset();
@@ -195,7 +195,7 @@ public class PackageTrackerTest {
mFakeIntentHelper.assertNotInitialized();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
}
@Test
@@ -215,7 +215,7 @@ public class PackageTrackerTest {
mFakeIntentHelper.assertNotInitialized();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
}
@Test
@@ -235,7 +235,7 @@ public class PackageTrackerTest {
mFakeIntentHelper.assertNotInitialized();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
}
@Test
@@ -255,7 +255,7 @@ public class PackageTrackerTest {
mFakeIntentHelper.assertNotInitialized();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
}
@Test
@@ -289,7 +289,7 @@ public class PackageTrackerTest {
mFakeIntentHelper.assertUpdateNotTriggered();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
// Assert the storage was not touched.
checkPackageStorageStatusIsInitialOrReset();
@@ -325,7 +325,7 @@ public class PackageTrackerTest {
mFakeIntentHelper.assertUpdateNotTriggered();
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
// Assert the storage was not touched.
checkPackageStorageStatusIsInitialOrReset();
@@ -416,7 +416,7 @@ public class PackageTrackerTest {
mPackageTracker.recordCheckResult(null /* checkToken */, success);
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
// Assert the storage was reset.
checkPackageStorageStatusIsInitialOrReset();
@@ -627,7 +627,7 @@ public class PackageTrackerTest {
mPackageTracker.recordCheckResult(token1, true /* success */);
// Reliability triggering should still be enabled.
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
// Check the expected storage state.
checkPackageStorageStatus(PackageStatus.CHECK_STARTED, packageVersions2);
@@ -743,7 +743,7 @@ public class PackageTrackerTest {
// Under the covers we expect it to fail to update because the storage should recognize that
// the token is no longer valid.
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
// Peek inside the package tracker to make sure it is tracking failure counts properly.
assertEquals(1, mPackageTracker.getCheckFailureCountForTests());
@@ -766,7 +766,7 @@ public class PackageTrackerTest {
checkPackageStorageStatusIsInitialOrReset();
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did trigger an update.
checkUpdateCheckTriggered(packageVersions);
@@ -803,7 +803,7 @@ public class PackageTrackerTest {
checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_SUCCESS, packageVersions);
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did not attempt to trigger an update.
mFakeIntentHelper.assertUpdateNotTriggered();
@@ -843,7 +843,7 @@ public class PackageTrackerTest {
checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_FAILURE, oldPackageVersions);
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did trigger an update.
checkUpdateCheckTriggered(currentPackageVersions);
@@ -890,7 +890,7 @@ public class PackageTrackerTest {
for (int i = 0; i < retriesAllowed + 1; i++) {
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did trigger an update.
checkUpdateCheckTriggered(currentPackageVersions);
@@ -912,9 +912,9 @@ public class PackageTrackerTest {
// Check reliability triggering is in the correct state.
if (i <= retriesAllowed) {
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
} else {
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
}
}
}
@@ -950,7 +950,7 @@ public class PackageTrackerTest {
// Fail (retries - 1) times.
for (int i = 0; i < retriesAllowed - 1; i++) {
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did trigger an update.
checkUpdateCheckTriggered(currentPackageVersions);
@@ -971,11 +971,11 @@ public class PackageTrackerTest {
currentPackageVersions);
// Check reliability triggering is still enabled.
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
}
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did trigger an update.
checkUpdateCheckTriggered(currentPackageVersions);
@@ -1023,7 +1023,7 @@ public class PackageTrackerTest {
checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_FAILURE, oldPackageVersions);
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did trigger an update.
checkUpdateCheckTriggered(currentPackageVersions);
@@ -1033,18 +1033,18 @@ public class PackageTrackerTest {
mFakeClock.incrementClock(checkDelayMillis - 1);
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did not trigger an update.
mFakeIntentHelper.assertUpdateNotTriggered();
checkPackageStorageStatus(PackageStatus.CHECK_STARTED, currentPackageVersions);
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
// Increment the clock slightly more. Should now consider the response overdue.
mFakeClock.incrementClock(2);
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Triggering should have happened.
checkUpdateCheckTriggered(currentPackageVersions);
@@ -1096,7 +1096,7 @@ public class PackageTrackerTest {
mFakeClock.incrementClock(checkDelayMillis + 1);
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker triggered an update.
checkUpdateCheckTriggered(newPackageVersions);
@@ -1154,18 +1154,18 @@ public class PackageTrackerTest {
mFakeClock.incrementClock(checkDelayMillis - 1);
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Assert the PackageTracker did not trigger an update.
mFakeIntentHelper.assertUpdateNotTriggered();
checkPackageStorageStatus(PackageStatus.CHECK_STARTED, newPackageVersions);
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
// Increment the clock slightly more. Should now consider the response overdue.
mFakeClock.incrementClock(2);
// Simulate a reliability trigger.
- mFakeIntentHelper.simulateReliabilityTrigger();
+ mPackageTracker.triggerUpdateIfNeeded(false /* packageChanged */);
// Triggering should have happened.
checkUpdateCheckTriggered(newPackageVersions);
@@ -1202,7 +1202,7 @@ public class PackageTrackerTest {
// If an update check was triggered reliability triggering should always be enabled to
// ensure that it can be completed if it fails.
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
// Check the expected storage state.
checkPackageStorageStatus(PackageStatus.CHECK_STARTED, packageVersions);
@@ -1210,7 +1210,7 @@ public class PackageTrackerTest {
private void checkUpdateCheckFailed(PackageVersions packageVersions) {
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
// Assert the storage was updated.
checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_FAILURE, packageVersions);
@@ -1218,7 +1218,7 @@ public class PackageTrackerTest {
private void checkUpdateCheckSuccessful(PackageVersions packageVersions) {
// Check reliability triggering state.
- mFakeIntentHelper.assertReliabilityTriggeringDisabled();
+ mFakeIntentHelper.assertReliabilityTriggerNotScheduled();
// Assert the storage was updated.
checkPackageStorageStatus(PackageStatus.CHECK_COMPLETED_SUCCESS, packageVersions);
@@ -1345,7 +1345,7 @@ public class PackageTrackerTest {
mFakeIntentHelper.assertInitialized(UPDATE_APP_PACKAGE_NAME, DATA_APP_PACKAGE_NAME);
// Assert that reliability tracking is always enabled after initialization.
- mFakeIntentHelper.assertReliabilityTriggeringEnabled();
+ mFakeIntentHelper.assertReliabilityTriggerScheduled();
}
private void checkPackageStorageStatus(
@@ -1368,34 +1368,34 @@ public class PackageTrackerTest {
*/
private static class FakeIntentHelper implements IntentHelper {
- private Listener mListener;
+ private PackageTracker mPackageTracker;
private String mUpdateAppPackageName;
private String mDataAppPackageName;
private CheckToken mLastToken;
- private boolean mReliabilityTriggeringEnabled;
+ private boolean mReliabilityTriggerScheduled;
@Override
public void initialize(String updateAppPackageName, String dataAppPackageName,
- Listener listener) {
+ PackageTracker packageTracker) {
assertNotNull(updateAppPackageName);
assertNotNull(dataAppPackageName);
- assertNotNull(listener);
- mListener = listener;
+ assertNotNull(packageTracker);
+ mPackageTracker = packageTracker;
mUpdateAppPackageName = updateAppPackageName;
mDataAppPackageName = dataAppPackageName;
}
public void assertInitialized(
String expectedUpdateAppPackageName, String expectedDataAppPackageName) {
- assertNotNull(mListener);
+ assertNotNull(mPackageTracker);
assertEquals(expectedUpdateAppPackageName, mUpdateAppPackageName);
assertEquals(expectedDataAppPackageName, mDataAppPackageName);
}
public void assertNotInitialized() {
- assertNull(mListener);
+ assertNull(mPackageTracker);
}
@Override
@@ -1407,21 +1407,21 @@ public class PackageTrackerTest {
}
@Override
- public void enableReliabilityTriggering() {
- mReliabilityTriggeringEnabled = true;
+ public void scheduleReliabilityTrigger(long minimumDelayMillis) {
+ mReliabilityTriggerScheduled = true;
}
@Override
- public void disableReliabilityTriggering() {
- mReliabilityTriggeringEnabled = false;
+ public void unscheduleReliabilityTrigger() {
+ mReliabilityTriggerScheduled = false;
}
- public void assertReliabilityTriggeringEnabled() {
- assertTrue(mReliabilityTriggeringEnabled);
+ public void assertReliabilityTriggerScheduled() {
+ assertTrue(mReliabilityTriggerScheduled);
}
- public void assertReliabilityTriggeringDisabled() {
- assertFalse(mReliabilityTriggeringEnabled);
+ public void assertReliabilityTriggerNotScheduled() {
+ assertFalse(mReliabilityTriggerScheduled);
}
public void assertUpdateTriggered() {
@@ -1440,11 +1440,7 @@ public class PackageTrackerTest {
}
public void simulatePackageUpdatedEvent() {
- mListener.triggerUpdateIfNeeded(true);
- }
-
- public void simulateReliabilityTrigger() {
- mListener.triggerUpdateIfNeeded(false);
+ mPackageTracker.triggerUpdateIfNeeded(true /* packageChanged */);
}
}
diff --git a/services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java
index 2887e3bb520f..d09d0c8d9e5c 100644
--- a/services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/timezone/RulesManagerServiceTest.java
@@ -585,7 +585,39 @@ public class RulesManagerServiceTest {
verifyNoPackageTrackerCallsMade();
// Set up the installer.
- configureStageUninstallExpectation(true /* success */);
+ configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_SUCCESS);
+
+ // Simulate the async execution.
+ mFakeExecutor.simulateAsyncExecutionOfLastCommand();
+
+ // Verify the expected calls were made to other components.
+ verifyStageUninstallCalled();
+ verifyPackageTrackerCalled(token, true /* success */);
+
+ // Check the callback was called.
+ callback.assertResultReceived(Callback.SUCCESS);
+ }
+
+ @Test
+ public void requestUninstall_asyncNothingInstalled() throws Exception {
+ configureCallerHasPermission();
+
+ CheckToken token = createArbitraryToken();
+ byte[] tokenBytes = token.toByteArray();
+
+ TestCallback callback = new TestCallback();
+
+ // Request the uninstall.
+ assertEquals(RulesManager.SUCCESS,
+ mRulesManagerService.requestUninstall(tokenBytes, callback));
+
+ // Assert nothing has happened yet.
+ callback.assertNoResultReceived();
+ verifyNoInstallerCallsMade();
+ verifyNoPackageTrackerCallsMade();
+
+ // Set up the installer.
+ configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_NOTHING_INSTALLED);
// Simulate the async execution.
mFakeExecutor.simulateAsyncExecutionOfLastCommand();
@@ -613,7 +645,7 @@ public class RulesManagerServiceTest {
callback.assertNoResultReceived();
// Set up the installer.
- configureStageUninstallExpectation(true /* success */);
+ configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_SUCCESS);
// Simulate the async execution.
mFakeExecutor.simulateAsyncExecutionOfLastCommand();
@@ -644,7 +676,7 @@ public class RulesManagerServiceTest {
callback.assertNoResultReceived();
// Set up the installer.
- configureStageUninstallExpectation(false /* success */);
+ configureStageUninstallExpectation(TimeZoneDistroInstaller.UNINSTALL_FAIL);
// Simulate the async execution.
mFakeExecutor.simulateAsyncExecutionOfLastCommand();
@@ -849,8 +881,8 @@ public class RulesManagerServiceTest {
.thenReturn(resultCode);
}
- private void configureStageUninstallExpectation(boolean success) throws Exception {
- doReturn(success).when(mMockTimeZoneDistroInstaller).stageUninstall();
+ private void configureStageUninstallExpectation(int resultCode) throws Exception {
+ doReturn(resultCode).when(mMockTimeZoneDistroInstaller).stageUninstall();
}
private void verifyStageInstallCalled() throws Exception {
diff --git a/services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java b/services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java
index d378b7c56acb..8a312f64a846 100644
--- a/services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java
+++ b/services/tests/servicestests/src/com/android/server/utils/PriorityDumpTest.java
@@ -80,7 +80,7 @@ public class PriorityDumpTest {
@Test
public void testMissingPriority() {
final String[] args = {
- "--dump_priority"
+ "--dump-priority"
};
dump(mDumper, mFd, mPw, args);
verify(mDumper).dump(same(mFd), same(mPw), same(args));
@@ -89,7 +89,7 @@ public class PriorityDumpTest {
@Test
public void testInvalidPriorityNoExtraArgs() {
final String[] args = {
- "--dump_priority", "SUPER_HIGH"
+ "--dump-priority", "SUPER_HIGH"
};
dump(mDumper, mFd, mPw, args);
verify(mDumper).dump(same(mFd), same(mPw), same(args));
@@ -98,7 +98,7 @@ public class PriorityDumpTest {
@Test
public void testInvalidPriorityExtraArgs() {
final String[] args = {
- "--dump_priority", "SUPER_HIGH", "--high", "--five"
+ "--dump-priority", "SUPER_HIGH", "--high", "--five"
};
dump(mDumper, mFd, mPw, args);
verify(mDumper).dump(same(mFd), same(mPw), same(args));
@@ -129,7 +129,7 @@ public class PriorityDumpTest {
@Test
public void testCriticalNoExtraArgs() {
dump(mDumper, mFd, mPw, new String[] {
- "--dump_priority", "CRITICAL"
+ "--dump-priority", "CRITICAL"
});
verify(mDumper).dumpCritical(same(mFd), same(mPw), eq(EMPTY_ARGS));
}
@@ -137,7 +137,7 @@ public class PriorityDumpTest {
@Test
public void testCriticalExtraArgs() {
dump(mDumper, mFd, mPw, new String[] {
- "--dump_priority", "CRITICAL", "--high", "--five"
+ "--dump-priority", "CRITICAL", "--high", "--five"
});
verify(mDumper).dumpCritical(same(mFd), same(mPw), eq(new String[] {
"--high", "--five"
@@ -147,7 +147,7 @@ public class PriorityDumpTest {
@Test
public void testHighNoExtraArgs() {
dump(mDumper, mFd, mPw, new String[] {
- "--dump_priority", "HIGH"
+ "--dump-priority", "HIGH"
});
verify(mDumper).dumpHigh(same(mFd), same(mPw), eq(EMPTY_ARGS));
}
@@ -155,7 +155,7 @@ public class PriorityDumpTest {
@Test
public void testHighExtraArgs() {
dump(mDumper, mFd, mPw, new String[] {
- "--dump_priority", "HIGH", "--high", "--five"
+ "--dump-priority", "HIGH", "--high", "--five"
});
verify(mDumper).dumpHigh(same(mFd), same(mPw), eq(new String[] {
"--high", "--five"
@@ -165,7 +165,7 @@ public class PriorityDumpTest {
@Test
public void testNormalNoExtraArgs() {
dump(mDumper, mFd, mPw, new String[] {
- "--dump_priority", "NORMAL"
+ "--dump-priority", "NORMAL"
});
verify(mDumper).dumpNormal(same(mFd), same(mPw), eq(EMPTY_ARGS));
}
@@ -173,7 +173,7 @@ public class PriorityDumpTest {
@Test
public void testNormalExtraArgs() {
dump(mDumper, mFd, mPw, new String[] {
- "--dump_priority", "NORMAL", "--high", "--five"
+ "--dump-priority", "NORMAL", "--high", "--five"
});
verify(mDumper).dumpNormal(same(mFd), same(mPw), eq(new String[] {
"--high", "--five"
diff --git a/services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java b/services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java
index 9d32496c7817..0081214a24da 100644
--- a/services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/BoundsAnimationControllerTests.java
@@ -126,6 +126,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
boolean mMovedToFullscreen;
boolean mAnimationStarted;
boolean mSchedulePipModeChangedOnStart;
+ boolean mForcePipModeChangedCallback;
boolean mAnimationEnded;
Rect mAnimationEndFinalStackBounds;
boolean mSchedulePipModeChangedOnEnd;
@@ -140,6 +141,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
mAnimationStarted = false;
mAnimationEnded = false;
mAnimationEndFinalStackBounds = null;
+ mForcePipModeChangedCallback = false;
mSchedulePipModeChangedOnStart = false;
mSchedulePipModeChangedOnEnd = false;
mStackBounds = from;
@@ -148,10 +150,11 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
}
@Override
- public void onAnimationStart(boolean schedulePipModeChangedCallback) {
+ public void onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate) {
mAwaitingAnimationStart = false;
mAnimationStarted = true;
mSchedulePipModeChangedOnStart = schedulePipModeChangedCallback;
+ mForcePipModeChangedCallback = forceUpdate;
}
@Override
@@ -232,7 +235,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
return this;
}
- BoundsAnimationDriver restart(Rect to) {
+ BoundsAnimationDriver restart(Rect to, boolean expectStartedAndPipModeChangedCallback) {
if (mAnimator == null) {
throw new IllegalArgumentException("Call start() to start a new animation");
}
@@ -251,8 +254,15 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
assertSame(oldAnimator, mAnimator);
}
- // No animation start for replacing animation
- assertTrue(!mTarget.mAnimationStarted);
+ if (expectStartedAndPipModeChangedCallback) {
+ // Replacing animation with pending pip mode changed callback, ensure we update
+ assertTrue(mTarget.mAnimationStarted);
+ assertTrue(mTarget.mSchedulePipModeChangedOnStart);
+ assertTrue(mTarget.mForcePipModeChangedCallback);
+ } else {
+ // No animation start for replacing animation
+ assertTrue(!mTarget.mAnimationStarted);
+ }
mTarget.mAnimationStarted = true;
return this;
}
@@ -467,7 +477,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
- .restart(BOUNDS_FLOATING)
+ .restart(BOUNDS_FLOATING, false /* expectStartedAndPipModeChangedCallback */)
.end()
.expectEnded(SCHEDULE_PIP_MODE_CHANGED, !MOVE_TO_FULLSCREEN);
}
@@ -478,7 +488,8 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
- .restart(BOUNDS_SMALLER_FLOATING)
+ .restart(BOUNDS_SMALLER_FLOATING,
+ false /* expectStartedAndPipModeChangedCallback */)
.end()
.expectEnded(SCHEDULE_PIP_MODE_CHANGED, !MOVE_TO_FULLSCREEN);
}
@@ -486,10 +497,12 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFullscreenToFloatingCancelFromAnimationToFullscreenBounds() throws Exception {
+ // When animating from fullscreen and the animation is interruped, we expect the animation
+ // start callback to be made, with a forced pip mode change callback
mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
- .restart(BOUNDS_FULL)
+ .restart(BOUNDS_FULL, true /* expectStartedAndPipModeChangedCallback */)
.end()
.expectEnded(!SCHEDULE_PIP_MODE_CHANGED, MOVE_TO_FULLSCREEN);
}
@@ -512,7 +525,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL)
.expectStarted(SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
- .restart(BOUNDS_FULL)
+ .restart(BOUNDS_FULL, false /* expectStartedAndPipModeChangedCallback */)
.end()
.expectEnded(!SCHEDULE_PIP_MODE_CHANGED, MOVE_TO_FULLSCREEN);
}
@@ -523,7 +536,8 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL)
.expectStarted(SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
- .restart(BOUNDS_SMALLER_FLOATING)
+ .restart(BOUNDS_SMALLER_FLOATING,
+ false /* expectStartedAndPipModeChangedCallback */)
.end()
.expectEnded(SCHEDULE_PIP_MODE_CHANGED, !MOVE_TO_FULLSCREEN);
}
diff --git a/services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java b/services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java
index 0f9b7217bd24..192e1564ae8d 100644
--- a/services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/ConfigurationContainerTests.java
@@ -16,24 +16,31 @@
package com.android.server.wm;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
+import static android.content.res.Configuration.EMPTY;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import android.content.res.Configuration;
import android.platform.test.annotations.Presubmit;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.List;
-import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
-import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
-import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
-import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
-import static org.junit.Assert.assertEquals;
-
/**
* Test class for {@link ConfigurationContainer}.
*
@@ -49,22 +56,22 @@ public class ConfigurationContainerTests {
public void testConfigurationInit() throws Exception {
// Check root container initial config.
final TestConfigurationContainer root = new TestConfigurationContainer();
- assertEquals(Configuration.EMPTY, root.getOverrideConfiguration());
- assertEquals(Configuration.EMPTY, root.getMergedOverrideConfiguration());
- assertEquals(Configuration.EMPTY, root.getConfiguration());
+ assertEquals(EMPTY, root.getOverrideConfiguration());
+ assertEquals(EMPTY, root.getMergedOverrideConfiguration());
+ assertEquals(EMPTY, root.getConfiguration());
// Check child initial config.
final TestConfigurationContainer child1 = root.addChild();
- assertEquals(Configuration.EMPTY, child1.getOverrideConfiguration());
- assertEquals(Configuration.EMPTY, child1.getMergedOverrideConfiguration());
- assertEquals(Configuration.EMPTY, child1.getConfiguration());
+ assertEquals(EMPTY, child1.getOverrideConfiguration());
+ assertEquals(EMPTY, child1.getMergedOverrideConfiguration());
+ assertEquals(EMPTY, child1.getConfiguration());
// Check child initial config if root has overrides.
final Configuration rootOverrideConfig = new Configuration();
rootOverrideConfig.fontScale = 1.3f;
root.onOverrideConfigurationChanged(rootOverrideConfig);
final TestConfigurationContainer child2 = root.addChild();
- assertEquals(Configuration.EMPTY, child2.getOverrideConfiguration());
+ assertEquals(EMPTY, child2.getOverrideConfiguration());
assertEquals(rootOverrideConfig, child2.getMergedOverrideConfiguration());
assertEquals(rootOverrideConfig, child2.getConfiguration());
@@ -77,7 +84,7 @@ public class ConfigurationContainerTests {
rootFullConfig.updateFrom(rootOverrideConfig);
final TestConfigurationContainer child3 = root.addChild();
- assertEquals(Configuration.EMPTY, child3.getOverrideConfiguration());
+ assertEquals(EMPTY, child3.getOverrideConfiguration());
assertEquals(rootOverrideConfig, child3.getMergedOverrideConfiguration());
assertEquals(rootFullConfig, child3.getConfiguration());
}
@@ -201,6 +208,82 @@ public class ConfigurationContainerTests {
assertEquals(mergedConfig2, child2.getConfiguration());
}
+ @Test
+ public void testSetWindowingMode() throws Exception {
+ final TestConfigurationContainer root = new TestConfigurationContainer();
+ root.setWindowingMode(WINDOWING_MODE_UNDEFINED);
+ final TestConfigurationContainer child = root.addChild();
+ child.setWindowingMode(WINDOWING_MODE_FREEFORM);
+ assertEquals(WINDOWING_MODE_UNDEFINED, root.getWindowingMode());
+ assertEquals(WINDOWING_MODE_FREEFORM, child.getWindowingMode());
+
+ root.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
+ assertEquals(WINDOWING_MODE_FULLSCREEN, root.getWindowingMode());
+ assertEquals(WINDOWING_MODE_FREEFORM, child.getWindowingMode());
+ }
+
+ @Test
+ public void testSetActivityType() throws Exception {
+ final TestConfigurationContainer root = new TestConfigurationContainer();
+ root.setActivityType(ACTIVITY_TYPE_UNDEFINED);
+ final TestConfigurationContainer child = root.addChild();
+ child.setActivityType(ACTIVITY_TYPE_STANDARD);
+ assertEquals(ACTIVITY_TYPE_UNDEFINED, root.getActivityType());
+ assertEquals(ACTIVITY_TYPE_STANDARD, child.getActivityType());
+
+ boolean gotException = false;
+ try {
+ // Can't change activity type once set.
+ child.setActivityType(ACTIVITY_TYPE_HOME);
+ } catch (IllegalStateException e) {
+ gotException = true;
+ }
+ assertTrue("Can't change activity type once set.", gotException);
+
+ // TODO: Commenting out for now until we figure-out a good way to test these rules that
+ // should only apply to system process.
+ /*
+ gotException = false;
+ try {
+ // Parent can't change child's activity type once set.
+ root.setActivityType(ACTIVITY_TYPE_HOME);
+ } catch (IllegalStateException e) {
+ gotException = true;
+ }
+ assertTrue("Parent can't change activity type once set.", gotException);
+ assertEquals(ACTIVITY_TYPE_HOME, root.getActivityType());
+
+ final TestConfigurationContainer child2 = new TestConfigurationContainer();
+ child2.setActivityType(ACTIVITY_TYPE_RECENTS);
+
+ gotException = false;
+ try {
+ // Can't re-parent to a different activity type.
+ root.addChild(child2);
+ } catch (IllegalStateException e) {
+ gotException = true;
+ }
+ assertTrue("Can't re-parent to a different activity type.", gotException);
+ */
+
+ }
+
+ @Test
+ public void testRegisterConfigurationChangeListener() throws Exception {
+ final TestConfigurationContainer container = new TestConfigurationContainer();
+ final TestConfigurationChangeListener listener = new TestConfigurationChangeListener();
+ final Configuration config = new Configuration();
+ config.windowConfiguration.setWindowingMode(WINDOWING_MODE_FREEFORM);
+ config.windowConfiguration.setAppBounds(10, 10, 10, 10);
+ container.onOverrideConfigurationChanged(config);
+ container.registerConfigurationChangeListener(listener);
+ // Assert listener got the current config. of the container after it was registered.
+ assertEquals(config, listener.mOverrideConfiguration);
+ // Assert listener gets changes to override configuration.
+ container.onOverrideConfigurationChanged(EMPTY);
+ assertEquals(EMPTY, listener.mOverrideConfiguration);
+ }
+
/**
* Contains minimal implementation of {@link ConfigurationContainer}'s abstract behavior needed
* for testing.
@@ -241,4 +324,13 @@ public class ConfigurationContainerTests {
return mParent;
}
}
+
+ private class TestConfigurationChangeListener implements ConfigurationContainerListener {
+
+ final Configuration mOverrideConfiguration = new Configuration();
+
+ public void onOverrideConfigurationChanged(Configuration overrideConfiguration) {
+ mOverrideConfiguration.setTo(overrideConfiguration);
+ }
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java b/services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java
index d9b99eeac6f0..5da322409f83 100644
--- a/services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/StackWindowControllerTests.java
@@ -17,6 +17,7 @@
package com.android.server.wm;
import android.graphics.Rect;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -60,6 +61,7 @@ public class StackWindowControllerTests extends WindowTestsBase {
}
@Test
+ @Ignore("b/65379195")
public void testRemoveContainer_deferRemoval() throws Exception {
final StackWindowController stackController =
createStackControllerOnDisplay(mDisplayContent);
diff --git a/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java b/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java
index efe766771673..29bbe6eca39f 100644
--- a/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/TaskStackContainersTests.java
@@ -29,6 +29,7 @@ import android.platform.test.annotations.Presubmit;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
+import static android.app.ActivityManager.StackId.getWindowingModeForStackId;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -51,9 +52,12 @@ public class TaskStackContainersTests extends WindowTestsBase {
@Before
public void setUp() throws Exception {
super.setUp();
+ final Configuration overrideConfig = new Configuration();
+ overrideConfig.windowConfiguration.setWindowingMode(
+ getWindowingModeForStackId(PINNED_STACK_ID, false /* inSplitScreenMode */));
mPinnedStack = new StackWindowController(PINNED_STACK_ID, null,
- mDisplayContent.getDisplayId(), true /* onTop */, new Rect(), new Configuration(),
- sWm).mContainer;
+ mDisplayContent.getDisplayId(), true /* onTop */, new Rect(), sWm).mContainer;
+ mPinnedStack.onOverrideConfigurationChanged(overrideConfig);
// Stack should contain visible app window to be considered visible.
final Task pinnedTask = createTaskInStack(mPinnedStack, 0 /* userId */);
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java
index bd0e0dfb4900..31aad79b5b82 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowConfigurationTests.java
@@ -27,8 +27,9 @@ import android.support.test.runner.AndroidJUnit4;
import android.view.DisplayInfo;
import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOW_CONFIG_APP_BOUNDS;
import static android.app.WindowConfiguration.WINDOW_CONFIG_WINDOWING_MODE;
import static android.content.pm.ActivityInfo.CONFIG_WINDOW_CONFIGURATION;
@@ -118,6 +119,17 @@ public class WindowConfigurationTests extends WindowTestsBase {
assertEquals(blankWinConfig.compareTo(winConfig1), 1);
}
+ @Test
+ public void testSetActivityType() throws Exception {
+ final WindowConfiguration config = new WindowConfiguration();
+ config.setActivityType(ACTIVITY_TYPE_HOME);
+ assertEquals(ACTIVITY_TYPE_HOME, config.getActivityType());
+
+ // Allowed to change from app process.
+ config.setActivityType(ACTIVITY_TYPE_STANDARD);
+ assertEquals(ACTIVITY_TYPE_STANDARD, config.getActivityType());
+ }
+
/** Ensures the configuration app bounds at the root level match the app dimensions. */
@Test
public void testAppBounds_RootConfigurationBounds() throws Exception {
@@ -197,8 +209,7 @@ public class WindowConfigurationTests extends WindowTestsBase {
false /*overrideHeight*/, mDisplayInfo.logicalDensityDpi, config, parentConfig);
// Assert that both expected and actual are null or are equal to each other
- assertTrue((expectedConfigBounds == null && winConfig.getAppBounds() == null)
- || expectedConfigBounds.equals(winConfig.getAppBounds()));
+ assertEquals(expectedConfigBounds, winConfig.getAppBounds());
}
}
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java
index f1e15d9c5900..8df7568ebcd9 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowContainerControllerTests.java
@@ -16,12 +16,16 @@
package com.android.server.wm;
+import android.app.WindowConfiguration;
+import android.content.res.Configuration;
import org.junit.Test;
import android.platform.test.annotations.Presubmit;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.content.res.Configuration.EMPTY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -80,4 +84,27 @@ public class WindowContainerControllerTests extends WindowTestsBase {
controller.removeContainer();
assertNull(controller.mContainer);
}
+
+ @Test
+ public void testOnOverrideConfigurationChanged() throws Exception {
+ final WindowContainerController controller = new WindowContainerController(null, sWm);
+ final WindowContainer container = new WindowContainer();
+
+ controller.setContainer(container);
+ assertEquals(controller.mContainer, container);
+ assertEquals(EMPTY, container.getOverrideConfiguration());
+
+ final Configuration config = new Configuration();
+ config.windowConfiguration.setWindowingMode(WINDOWING_MODE_FREEFORM);
+ config.windowConfiguration.setAppBounds(10, 10, 10, 10);
+
+ // Assert that the config change through the controller is propagated to the container.
+ controller.onOverrideConfigurationChanged(config);
+ assertEquals(config, container.getOverrideConfiguration());
+
+ // Assert the container configuration isn't changed after removal from the controller.
+ controller.removeContainer();
+ controller.onOverrideConfigurationChanged(EMPTY);
+ assertEquals(config, container.getOverrideConfiguration());
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java
index 6e253e743ddb..5d2bb4d92620 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowFrameTests.java
@@ -75,7 +75,7 @@ public class WindowFrameTests extends WindowTestsBase {
final Rect mInsetBounds = new Rect();
boolean mFullscreenForTest = true;
TaskWithBounds(Rect bounds) {
- super(0, mStubStack, 0, sWm, null, null, 0, false, false, new TaskDescription(), null);
+ super(0, mStubStack, 0, sWm, null, 0, false, new TaskDescription(), null);
mBounds = bounds;
}
@Override
@@ -102,7 +102,7 @@ public class WindowFrameTests extends WindowTestsBase {
sWm.mSystemDecorLayer = 10000;
mWindowToken = new WindowTestUtils.TestAppWindowToken(sWm.getDefaultDisplayContentLocked());
- mStubStack = new TaskStack(sWm, 0);
+ mStubStack = new TaskStack(sWm, 0, null);
}
public void assertRect(Rect rect, int left, int top, int right, int bottom) {
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java b/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java
index 40c79bbb183d..0315c8d6f9ba 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowTestUtils.java
@@ -66,8 +66,8 @@ public class WindowTestUtils {
/** Creates a {@link Task} and adds it to the specified {@link TaskStack}. */
public static Task createTaskInStack(WindowManagerService service, TaskStack stack,
int userId) {
- final Task newTask = new Task(sNextTaskId++, stack, userId, service, null, EMPTY, 0, false,
- false, new ActivityManager.TaskDescription(), null);
+ final Task newTask = new Task(sNextTaskId++, stack, userId, service, null, 0, false,
+ new ActivityManager.TaskDescription(), null);
stack.addTask(newTask, POSITION_TOP);
return newTask;
}
@@ -78,7 +78,7 @@ public class WindowTestUtils {
*/
public static class TestTaskStack extends TaskStack {
TestTaskStack(WindowManagerService service, int stackId) {
- super(service, stackId);
+ super(service, stackId, null);
}
@Override
@@ -94,19 +94,17 @@ public class WindowTestUtils {
TestAppWindowToken(DisplayContent dc) {
super(dc.mService, new IApplicationToken.Stub() {
public String getName() {return null;}
- }, false, dc, true /* fillsParent */,
- null /* overrideConfig */, null /* bounds */);
+ }, false, dc, true /* fillsParent */, null /* bounds */);
}
TestAppWindowToken(WindowManagerService service, IApplicationToken token,
boolean voiceInteraction, DisplayContent dc, long inputDispatchingTimeoutNanos,
boolean fullscreen, boolean showForAllUsers, int targetSdk, int orientation,
int rotationAnimationHint, int configChanges, boolean launchTaskBehind,
- boolean alwaysFocusable, AppWindowContainerController controller,
- Configuration overrideConfig, Rect bounds) {
+ boolean alwaysFocusable, AppWindowContainerController controller, Rect bounds) {
super(service, token, voiceInteraction, dc, inputDispatchingTimeoutNanos, fullscreen,
showForAllUsers, targetSdk, orientation, rotationAnimationHint, configChanges,
- launchTaskBehind, alwaysFocusable, controller, overrideConfig, bounds);
+ launchTaskBehind, alwaysFocusable, controller, bounds);
}
int getWindowsCount() {
@@ -174,11 +172,10 @@ public class WindowTestUtils {
private boolean mIsAnimating = false;
TestTask(int taskId, TaskStack stack, int userId, WindowManagerService service, Rect bounds,
- Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture,
- boolean homeTask, TaskWindowContainerController controller) {
- super(taskId, stack, userId, service, bounds, overrideConfig, resizeMode,
- supportsPictureInPicture, homeTask, new ActivityManager.TaskDescription(),
- controller);
+ int resizeMode, boolean supportsPictureInPicture,
+ TaskWindowContainerController controller) {
+ super(taskId, stack, userId, service, bounds, resizeMode, supportsPictureInPicture,
+ new ActivityManager.TaskDescription(), controller);
}
boolean shouldDeferRemoval() {
@@ -219,6 +216,18 @@ public class WindowTestUtils {
TestTaskWindowContainerController(StackWindowController stackController) {
super(sNextTaskId++, new TaskWindowContainerListener() {
@Override
+ public void registerConfigurationChangeListener(
+ ConfigurationContainerListener listener) {
+
+ }
+
+ @Override
+ public void unregisterConfigurationChangeListener(
+ ConfigurationContainerListener listener) {
+
+ }
+
+ @Override
public void onSnapshotChanged(ActivityManager.TaskSnapshot snapshot) {
}
@@ -227,19 +236,17 @@ public class WindowTestUtils {
public void requestResize(Rect bounds, int resizeMode) {
}
- }, stackController, 0 /* userId */, null /* bounds */,
- EMPTY /* overrideConfig*/, RESIZE_MODE_UNRESIZEABLE,
- false /* supportsPictureInPicture */, false /* homeTask*/, true /* toTop*/,
+ }, stackController, 0 /* userId */, null /* bounds */, RESIZE_MODE_UNRESIZEABLE,
+ false /* supportsPictureInPicture */, true /* toTop*/,
true /* showForAllUsers */, new ActivityManager.TaskDescription(),
stackController.mService);
}
@Override
- TestTask createTask(int taskId, TaskStack stack, int userId, Rect bounds,
- Configuration overrideConfig, int resizeMode, boolean supportsPictureInPicture,
- boolean homeTask, ActivityManager.TaskDescription taskDescription) {
- return new TestTask(taskId, stack, userId, mService, bounds, overrideConfig, resizeMode,
- supportsPictureInPicture, homeTask, this);
+ TestTask createTask(int taskId, TaskStack stack, int userId, Rect bounds, int resizeMode,
+ boolean supportsPictureInPicture, ActivityManager.TaskDescription taskDescription) {
+ return new TestTask(taskId, stack, userId, mService, bounds, resizeMode,
+ supportsPictureInPicture, this);
}
}
@@ -259,7 +266,7 @@ public class WindowTestUtils {
false /* launchTaskBehind */, false /* alwaysFocusable */,
0 /* targetSdkVersion */, 0 /* rotationAnimationHint */,
0 /* inputDispatchingTimeoutNanos */, taskController.mService,
- null /* overrideConfig */, null /* bounds */);
+ null /* bounds */);
mToken = token;
}
@@ -268,13 +275,12 @@ public class WindowTestUtils {
boolean voiceInteraction, DisplayContent dc, long inputDispatchingTimeoutNanos,
boolean fullscreen, boolean showForAllUsers, int targetSdk, int orientation,
int rotationAnimationHint, int configChanges, boolean launchTaskBehind,
- boolean alwaysFocusable, AppWindowContainerController controller,
- Configuration overrideConfig, Rect bounds) {
+ boolean alwaysFocusable, AppWindowContainerController controller, Rect bounds) {
return new TestAppWindowToken(service, token, voiceInteraction, dc,
inputDispatchingTimeoutNanos, fullscreen, showForAllUsers, targetSdk,
orientation,
rotationAnimationHint, configChanges, launchTaskBehind, alwaysFocusable,
- controller, overrideConfig, bounds);
+ controller, bounds);
}
AppWindowToken getAppWindowToken(DisplayContent dc) {
diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java
index eb8cf9160d5b..3df13abb2345 100644
--- a/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.app.ActivityManager.StackId.getWindowingModeForStackId;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.View.VISIBLE;
@@ -236,10 +237,14 @@ class WindowTestsBase {
return createStackControllerOnStackOnDisplay(stackId, dc);
}
- StackWindowController createStackControllerOnStackOnDisplay(int stackId,
- DisplayContent dc) {
- return new StackWindowController(stackId, null, dc.getDisplayId(),
- true /* onTop */, new Rect(), new Configuration(), sWm);
+ StackWindowController createStackControllerOnStackOnDisplay(int stackId, DisplayContent dc) {
+ final Configuration overrideConfig = new Configuration();
+ overrideConfig.windowConfiguration.setWindowingMode(
+ getWindowingModeForStackId(stackId, false /* inSplitScreenMode */));
+ final StackWindowController controller = new StackWindowController(stackId, null,
+ dc.getDisplayId(), true /* onTop */, new Rect(), sWm);
+ controller.onOverrideConfigurationChanged(overrideConfig);
+ return controller;
}
/** Creates a {@link Task} and adds it to the specified {@link TaskStack}. */
diff --git a/services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java b/services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java
index 94a85eee29a7..011817e99714 100644
--- a/services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java
+++ b/services/tests/servicestests/test-apps/JobTestApp/src/com/android/servicestests/apps/jobtestapp/TestJobActivity.java
@@ -30,9 +30,9 @@ public class TestJobActivity extends Activity {
public static final String EXTRA_JOB_ID_KEY =
"com.android.servicestests.apps.jobtestapp.extra.JOB_ID";
public static final String ACTION_START_JOB =
- "com.android.servicestests.apps.jobtestapp.extra.START_JOB";
+ "com.android.servicestests.apps.jobtestapp.action.START_JOB";
public static final String ACTION_CANCEL_JOBS =
- "com.android.servicestests.apps.jobtestapp.extra.CANCEL_JOBS";
+ "com.android.servicestests.apps.jobtestapp.action.CANCEL_JOBS";
public static final int JOB_INITIAL_BACKOFF = 10_000;
public static final int JOB_MINIMUM_LATENCY = 5_000;
diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java
index ce0dcc3453ec..c657a1b4cc98 100644
--- a/services/usb/java/com/android/server/usb/UsbHostManager.java
+++ b/services/usb/java/com/android/server/usb/UsbHostManager.java
@@ -22,8 +22,10 @@ import android.content.Context;
import android.hardware.usb.UsbConfiguration;
import android.hardware.usb.UsbConstants;
import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbEndpoint;
import android.hardware.usb.UsbInterface;
+import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.text.TextUtils;
@@ -32,8 +34,11 @@ import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.usb.descriptors.UsbDescriptorParser;
+import com.android.server.usb.descriptors.report.TextReportCanvas;
+import com.android.server.usb.descriptors.tree.UsbDescriptorsTree;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
/**
@@ -43,6 +48,8 @@ public class UsbHostManager {
private static final String TAG = UsbHostManager.class.getSimpleName();
private static final boolean DEBUG = false;
+ private final Context mContext;
+
// contains all connected USB devices
private final HashMap<String, UsbDevice> mDevices = new HashMap<>();
@@ -69,6 +76,8 @@ public class UsbHostManager {
public UsbHostManager(Context context, UsbAlsaManager alsaManager,
UsbSettingsManager settingsManager) {
+ mContext = context;
+
mHostBlacklist = context.getResources().getStringArray(
com.android.internal.R.array.config_usbHostBlacklist);
mUsbAlsaManager = alsaManager;
@@ -265,8 +274,8 @@ public class UsbHostManager {
if (parser.parseDevice(mNewDevice.getDeviceName())) {
isInputHeadset = parser.isInputHeadset();
isOutputHeadset = parser.isOutputHeadset();
- Slog.i(TAG, "---- isHeadset[in:" + isInputHeadset
- + " , out:" + isOutputHeadset + "]");
+ Slog.i(TAG, "---- isHeadset[in: " + isInputHeadset
+ + " , out: " + isOutputHeadset + "]");
}
mUsbAlsaManager.usbDeviceAdded(mNewDevice,
isInputHeadset, isOutputHeadset);
@@ -339,6 +348,33 @@ public class UsbHostManager {
if (mUsbDeviceConnectionHandler != null) {
pw.println("Default USB Host Connection handler: " + mUsbDeviceConnectionHandler);
}
+
+ Collection<UsbDevice> devices = mDevices.values();
+ if (devices.size() != 0) {
+ pw.println("USB Peripheral Descriptors");
+ for (UsbDevice device : devices) {
+ StringBuilder stringBuilder = new StringBuilder();
+
+ UsbDescriptorParser parser = new UsbDescriptorParser();
+ if (parser.parseDevice(device.getDeviceName())) {
+ UsbDescriptorsTree descriptorTree = new UsbDescriptorsTree();
+ descriptorTree.parse(parser);
+
+ UsbManager usbManager =
+ (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
+ UsbDeviceConnection connection = usbManager.openDevice(device);
+
+ descriptorTree.report(new TextReportCanvas(connection, stringBuilder));
+ connection.close();
+
+ stringBuilder.append("isHeadset[in: " + parser.isInputHeadset()
+ + " , out: " + parser.isOutputHeadset() + "]");
+ } else {
+ stringBuilder.append("Error Parsing USB Descriptors");
+ }
+ pw.println(stringBuilder.toString());
+ }
+ }
}
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/ByteStream.java b/services/usb/java/com/android/server/usb/descriptors/ByteStream.java
index d678931fd01a..1e823b63d5b2 100644
--- a/services/usb/java/com/android/server/usb/descriptors/ByteStream.java
+++ b/services/usb/java/com/android/server/usb/descriptors/ByteStream.java
@@ -15,7 +15,11 @@
*/
package com.android.server.usb.descriptors;
+// Framework builds and Android Studio builds use different imports for NonNull.
+// This one for Framework builds
import android.annotation.NonNull;
+// this one in the AndroidStudio project
+// import android.support.annotation.NonNull;
/**
* @hide
@@ -23,7 +27,7 @@ import android.annotation.NonNull;
* but with the capability to "back up" in situations where the parser discovers that a
* UsbDescriptor has overrun its length.
*/
-public class ByteStream {
+public final class ByteStream {
private static final String TAG = "ByteStream";
/** The byte array being wrapped */
@@ -104,6 +108,20 @@ public class ByteStream {
}
/**
+ * @return the next byte from the stream and advances the stream and the read count. Note
+ * that this is an unsigned byte encoded in a Java int.
+ * @throws IndexOutOfBoundsException
+ */
+ public int getUnsignedByte() {
+ if (available() > 0) {
+ mReadCount++;
+ return mBytes[mIndex++] & 0x000000FF;
+ } else {
+ throw new IndexOutOfBoundsException();
+ }
+ }
+
+ /**
* Reads 2 bytes in *little endian format* from the stream and composes a 16-bit integer.
* As we are storing the 2-byte value in a 4-byte integer, the upper 2 bytes are always
* 0, essentially making the returned value *unsigned*.
@@ -111,11 +129,11 @@ public class ByteStream {
* next 2 bytes in the stream.
* @throws IndexOutOfBoundsException
*/
- public int unpackUsbWord() {
+ public int unpackUsbShort() {
if (available() >= 2) {
- int b0 = getByte();
- int b1 = getByte();
- return ((b1 << 8) & 0x0000FF00) | (b0 & 0x000000FF);
+ int b0 = getUnsignedByte();
+ int b1 = getUnsignedByte();
+ return (b1 << 8) | b0;
} else {
throw new IndexOutOfBoundsException();
}
@@ -131,16 +149,32 @@ public class ByteStream {
*/
public int unpackUsbTriple() {
if (available() >= 3) {
- int b0 = getByte();
- int b1 = getByte();
- int b2 = getByte();
- return ((b2 << 16) & 0x00FF0000) | ((b1 << 8) & 0x0000FF00) | (b0 & 0x000000FF);
+ int b0 = getUnsignedByte();
+ int b1 = getUnsignedByte();
+ int b2 = getUnsignedByte();
+ return (b2 << 16) | (b1 << 8) | b0;
} else {
throw new IndexOutOfBoundsException();
}
}
/**
+ * Reads 4 bytes in *little endian format* from the stream and composes a 32-bit integer.
+ * @return The 32-bit integer encoded by the next 4 bytes in the stream.
+ * @throws IndexOutOfBoundsException
+ */
+ public int unpackUsbInt() {
+ if (available() >= 4) {
+ int b0 = getUnsignedByte();
+ int b1 = getUnsignedByte();
+ int b2 = getUnsignedByte();
+ int b3 = getUnsignedByte();
+ return (b3 << 24) | (b2 << 16) | (b1 << 8) | b0;
+ } else {
+ throw new IndexOutOfBoundsException();
+ }
+ }
+ /**
* Advances the logical position in the stream. Affects the running count also.
* @param numBytes The number of bytes to advance.
* @throws IndexOutOfBoundsException
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACHeader.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ACHeader.java
index e31438c58e06..a35b46318e23 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACHeader.java
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ACHeader.java
@@ -15,18 +15,16 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Interface Header.
* see audio10.pdf section 4.3.2
*/
-public class UsbACHeader extends UsbACInterface {
- private static final String TAG = "ACHeader";
+public final class Usb10ACHeader extends UsbACHeaderInterface {
+ private static final String TAG = "Usb10ACHeader";
- private int mADCRelease; // 3:2 Audio Device Class Specification Release (BCD).
- private int mTotalLength; // 5:2 Total number of bytes returned for the class-specific
- // AudioControl interface descriptor. Includes the combined length
- // of this descriptor header and all Unit and Terminal descriptors.
private byte mNumInterfaces = 0; // 7:1 The number of AudioStreaming and MIDIStreaming
// interfaces in the Audio Interface Collection to which this
// AudioControl interface belongs: n
@@ -34,16 +32,8 @@ public class UsbACHeader extends UsbACInterface {
// numbers associate with this endpoint
private byte mControls; // Vers 2.0 thing
- public UsbACHeader(int length, byte type, byte subtype, byte subclass) {
- super(length, type, subtype, subclass);
- }
-
- public int getADCRelease() {
- return mADCRelease;
- }
-
- public int getTotalLength() {
- return mTotalLength;
+ public Usb10ACHeader(int length, byte type, byte subtype, byte subclass, int spec) {
+ super(length, type, subtype, subclass, spec);
}
public byte getNumInterfaces() {
@@ -60,9 +50,8 @@ public class UsbACHeader extends UsbACInterface {
@Override
public int parseRawDescriptors(ByteStream stream) {
- mADCRelease = stream.unpackUsbWord();
- mTotalLength = stream.unpackUsbWord();
+ mTotalLength = stream.unpackUsbShort();
if (mADCRelease >= 0x200) {
mControls = stream.getByte();
} else {
@@ -75,4 +64,30 @@ public class UsbACHeader extends UsbACInterface {
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ int numInterfaces = getNumInterfaces();
+ StringBuilder sb = new StringBuilder();
+ sb.append("" + numInterfaces + " Interfaces");
+ if (numInterfaces > 0) {
+ sb.append(" [");
+ byte[] interfaceNums = getInterfaceNums();
+ if (interfaceNums != null) {
+ for (int index = 0; index < numInterfaces; index++) {
+ sb.append("" + interfaceNums[index]);
+ if (index < numInterfaces - 1) {
+ sb.append(" ");
+ }
+ }
+ }
+ sb.append("]");
+ }
+ canvas.writeListItem(sb.toString());
+ canvas.writeListItem("Controls: " + ReportCanvas.getHexString(getControls()));
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACInputTerminal.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ACInputTerminal.java
index 653a7de5457e..2363c4dd8009 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACInputTerminal.java
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ACInputTerminal.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Input Terminal interface.
* see audio10.pdf section 4.3.2.1
*/
-public class UsbACInputTerminal extends UsbACTerminal {
- private static final String TAG = "ACInputTerminal";
+public final class Usb10ACInputTerminal extends UsbACTerminal {
+ private static final String TAG = "Usb10ACInputTerminal";
private byte mNrChannels; // 7:1 1 Channel (0x01)
// Number of logical output channels in the
@@ -30,7 +32,7 @@ public class UsbACInputTerminal extends UsbACTerminal {
private byte mChannelNames; // 10:1 Unused (0x00)
private byte mTerminal; // 11:1 Unused (0x00)
- public UsbACInputTerminal(int length, byte type, byte subtype, byte subclass) {
+ public Usb10ACInputTerminal(int length, byte type, byte subtype, byte subclass) {
super(length, type, subtype, subclass);
}
@@ -55,10 +57,22 @@ public class UsbACInputTerminal extends UsbACTerminal {
super.parseRawDescriptors(stream);
mNrChannels = stream.getByte();
- mChannelConfig = stream.unpackUsbWord();
+ mChannelConfig = stream.unpackUsbShort();
mChannelNames = stream.getByte();
mTerminal = stream.getByte();
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Associated Terminal: "
+ + ReportCanvas.getHexString(getAssocTerminal()));
+ canvas.writeListItem("" + getNrChannels() + " Chans. Config: "
+ + ReportCanvas.getHexString(getChannelConfig()));
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb10ACMixerUnit.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ACMixerUnit.java
new file mode 100644
index 000000000000..d3486643ede2
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ACMixerUnit.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Mixer Interface.
+ * see audio10.pdf section 4.3.2.3
+ */
+public final class Usb10ACMixerUnit extends UsbACMixerUnit {
+ private static final String TAG = "Usb10ACMixerUnit";
+
+ private int mChannelConfig; // Spatial location of output channels
+ private byte mChanNameID; // First channel name string descriptor ID
+ private byte[] mControls; // bitmasks of which controls are present for each channel
+ private byte mNameID; // string descriptor ID of mixer name
+
+ public Usb10ACMixerUnit(int length, byte type, byte subtype, byte subClass) {
+ super(length, type, subtype, subClass);
+ }
+
+ public int getChannelConfig() {
+ return mChannelConfig;
+ }
+
+ public byte getChanNameID() {
+ return mChanNameID;
+ }
+
+ public byte[] getControls() {
+ return mControls;
+ }
+
+ public byte getNameID() {
+ return mNameID;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ super.parseRawDescriptors(stream);
+
+ mChannelConfig = stream.unpackUsbShort();
+ mChanNameID = stream.getByte();
+
+ int controlArraySize = calcControlArraySize(mNumInputs, mNumOutputs);
+ mControls = new byte[controlArraySize];
+ for (int index = 0; index < controlArraySize; index++) {
+ mControls[index] = stream.getByte();
+ }
+
+ mNameID = stream.getByte();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.writeParagraph("Mixer Unit", false);
+ canvas.openList();
+
+ canvas.writeListItem("Unit ID: " + ReportCanvas.getHexString(getUnitID()));
+ byte numInputs = getNumInputs();
+ byte[] inputIDs = getInputIDs();
+ canvas.openListItem();
+ canvas.write("Num Inputs: " + numInputs + " [");
+ for (int input = 0; input < numInputs; input++) {
+ canvas.write("" + ReportCanvas.getHexString(inputIDs[input]));
+ if (input < numInputs - 1) {
+ canvas.write(" ");
+ }
+ }
+ canvas.write("]");
+ canvas.closeListItem();
+
+ canvas.writeListItem("Num Outputs: " + getNumOutputs());
+ canvas.writeListItem("Channel Config: " + ReportCanvas.getHexString(getChannelConfig()));
+
+ byte[] controls = getControls();
+ canvas.openListItem();
+ canvas.write("Controls: " + controls.length + " [");
+ for (int ctrl = 0; ctrl < controls.length; ctrl++) {
+ canvas.write("" + controls[ctrl]);
+ if (ctrl < controls.length - 1) {
+ canvas.write(" ");
+ }
+ }
+ canvas.write("]");
+ canvas.closeListItem();
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACOutputTerminal.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ACOutputTerminal.java
index f957e3dbe217..9f2f09ec146c 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACOutputTerminal.java
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ACOutputTerminal.java
@@ -15,18 +15,20 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Output Terminal Interface.
* see audio10.pdf section 4.3.2.2
*/
-public class UsbACOutputTerminal extends UsbACTerminal {
- private static final String TAG = "ACOutputTerminal";
+public final class Usb10ACOutputTerminal extends UsbACTerminal {
+ private static final String TAG = "Usb10ACOutputTerminal";
private byte mSourceID; // 7:1 From Input Terminal. (0x01)
private byte mTerminal; // 8:1 Unused.
- public UsbACOutputTerminal(int length, byte type, byte subtype, byte subClass) {
+ public Usb10ACOutputTerminal(int length, byte type, byte subtype, byte subClass) {
super(length, type, subtype, subClass);
}
@@ -46,4 +48,13 @@ public class UsbACOutputTerminal extends UsbACTerminal {
mTerminal = stream.getByte();
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Source ID: " + ReportCanvas.getHexString(getSourceID()));
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbASFormatI.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatI.java
index 347a6cffb525..1523bb528a03 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbASFormatI.java
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatI.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Format I interface.
* see Frmts10.pdf section 2.2
*/
-public class UsbASFormatI extends UsbASFormat {
- private static final String TAG = "ASFormatI";
+public final class Usb10ASFormatI extends UsbASFormat {
+ private static final String TAG = "Usb10ASFormatI";
private byte mNumChannels; // 4:1
private byte mSubframeSize; // 5:1 frame size in bytes
@@ -31,7 +33,7 @@ public class UsbASFormatI extends UsbASFormat {
// min & max rates otherwise mSamFreqType rates.
// All 3-byte values. All rates in Hz
- public UsbASFormatI(int length, byte type, byte subtype, byte formatType, byte subclass) {
+ public Usb10ASFormatI(int length, byte type, byte subtype, byte formatType, byte subclass) {
super(length, type, subtype, formatType, subclass);
}
@@ -51,11 +53,24 @@ public class UsbASFormatI extends UsbASFormat {
return mSampleFreqType;
}
+ @Override
public int[] getSampleRates() {
return mSampleRates;
}
@Override
+ public int[] getBitDepths() {
+ int[] depths = {mBitResolution};
+ return depths;
+ }
+
+ @Override
+ public int[] getChannelCounts() {
+ int[] counts = {mNumChannels};
+ return counts;
+ }
+
+ @Override
public int parseRawDescriptors(ByteStream stream) {
mNumChannels = stream.getByte();
mSubframeSize = stream.getByte();
@@ -74,4 +89,28 @@ public class UsbASFormatI extends UsbASFormat {
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("" + getNumChannels() + " Channels.");
+ canvas.writeListItem("Subframe Size: " + getSubframeSize());
+ canvas.writeListItem("Bit Resolution: " + getBitResolution());
+ byte sampleFreqType = getSampleFreqType();
+ int[] sampleRates = getSampleRates();
+ canvas.writeListItem("Sample Freq Type: " + sampleFreqType);
+ canvas.openList();
+ if (sampleFreqType == 0) {
+ canvas.writeListItem("min: " + sampleRates[0]);
+ canvas.writeListItem("max: " + sampleRates[1]);
+ } else {
+ for (int index = 0; index < sampleFreqType; index++) {
+ canvas.writeListItem("" + sampleRates[index]);
+ }
+ }
+ canvas.closeList();
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbASFormatII.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatII.java
index abdc62145aa2..b1e7680ee1b9 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbASFormatII.java
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ASFormatII.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Format II interface.
* see Frmts10.pdf section 2.3
*/
-public class UsbASFormatII extends UsbASFormat {
- private static final String TAG = "ASFormatII";
+public final class Usb10ASFormatII extends UsbASFormat {
+ private static final String TAG = "Usb10ASFormatII";
private int mMaxBitRate; // 4:2 Indicates the maximum number of bits per second this
// interface can handle. Expressed in kbits/s.
@@ -36,7 +38,7 @@ public class UsbASFormatII extends UsbASFormat {
// the min & max rates. otherwise mSamFreqType rates.
// All 3-byte values. All rates in Hz
- public UsbASFormatII(int length, byte type, byte subtype, byte formatType, byte subclass) {
+ public Usb10ASFormatII(int length, byte type, byte subtype, byte formatType, byte subclass) {
super(length, type, subtype, formatType, subclass);
}
@@ -58,8 +60,8 @@ public class UsbASFormatII extends UsbASFormat {
@Override
public int parseRawDescriptors(ByteStream stream) {
- mMaxBitRate = stream.unpackUsbWord();
- mSamplesPerFrame = stream.unpackUsbWord();
+ mMaxBitRate = stream.unpackUsbShort();
+ mSamplesPerFrame = stream.unpackUsbShort();
mSamFreqType = stream.getByte();
int numFreqs = mSamFreqType == 0 ? 2 : mSamFreqType;
mSampleRates = new int[numFreqs];
@@ -69,4 +71,29 @@ public class UsbASFormatII extends UsbASFormat {
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Max Bit Rate: " + getMaxBitRate());
+ canvas.writeListItem("Samples Per Frame: " + getMaxBitRate());
+ byte sampleFreqType = getSamFreqType();
+ int[] sampleRates = getSampleRates();
+ canvas.writeListItem("Sample Freq Type: " + sampleFreqType);
+ canvas.openList();
+ if (sampleFreqType == 0) {
+ canvas.writeListItem("min: " + sampleRates[0]);
+ canvas.writeListItem("max: " + sampleRates[1]);
+ } else {
+ for (int index = 0; index < sampleFreqType; index++) {
+ canvas.writeListItem("" + sampleRates[index]);
+ }
+ }
+ canvas.closeList();
+
+ canvas.closeList();
+ }
+
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbASGeneral.java b/services/usb/java/com/android/server/usb/descriptors/Usb10ASGeneral.java
index c4f42d318213..2d4f604ed1a1 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbASGeneral.java
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb10ASGeneral.java
@@ -15,13 +15,16 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+import com.android.server.usb.descriptors.report.UsbStrings;
+
/**
* @hide
* An audio class-specific General interface.
* see audio10.pdf section 4.5.2
*/
-public class UsbASGeneral extends UsbACInterface {
- private static final String TAG = "ACGeneral";
+public final class Usb10ASGeneral extends UsbACInterface {
+ private static final String TAG = "Usb10ASGeneral";
// audio10.pdf - section 4.5.2
private byte mTerminalLink; // 3:1 The Terminal ID of the Terminal to which the endpoint
@@ -31,7 +34,7 @@ public class UsbASGeneral extends UsbACInterface {
private int mFormatTag; // 5:2 The Audio Data Format that has to be used to communicate
// with this interface.
- public UsbASGeneral(int length, byte type, byte subtype, byte subclass) {
+ public Usb10ASGeneral(int length, byte type, byte subtype, byte subclass) {
super(length, type, subtype, subclass);
}
@@ -51,8 +54,20 @@ public class UsbASGeneral extends UsbACInterface {
public int parseRawDescriptors(ByteStream stream) {
mTerminalLink = stream.getByte();
mDelay = stream.getByte();
- mFormatTag = stream.unpackUsbWord();
+ mFormatTag = stream.unpackUsbShort();
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Delay: " + mDelay);
+ canvas.writeListItem("Terminal Link: " + mTerminalLink);
+ canvas.writeListItem("Format: " + UsbStrings.getAudioFormatName(mFormatTag) + " - "
+ + ReportCanvas.getHexString(mFormatTag));
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ACHeader.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ACHeader.java
new file mode 100644
index 000000000000..eefae3d51b3f
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ACHeader.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Header descriptor.
+ * see Audio20.pdf section 4.7.2 Class-Specific AC Interface Descriptor
+ */
+public final class Usb20ACHeader extends UsbACHeaderInterface {
+ private static final String TAG = "Usb20ACHeader";
+
+ private byte mCategory; // 5:1 Constant, indicating the primary use of this audio function.
+ // See audio20.pdf Appendix A.7, “Audio Function Category Codes.”
+ private byte mControls; // 8:1 See audio20.pdf Table 4-5.
+
+ public Usb20ACHeader(int length, byte type, byte subtype, byte subclass, int spec) {
+ super(length, type, subtype, subclass, spec);
+ }
+
+ public byte getCategory() {
+ return mCategory;
+ }
+
+ public byte getControls() {
+ return mControls;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ mCategory = stream.getByte();
+ mTotalLength = stream.unpackUsbShort();
+ mControls = stream.getByte();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Category: " + ReportCanvas.getHexString(getCategory()));
+ canvas.writeListItem("Controls: " + ReportCanvas.getHexString(getControls()));
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ACInputTerminal.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ACInputTerminal.java
new file mode 100644
index 000000000000..3e2ac39c0aca
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ACInputTerminal.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Input Terminal interface.
+ * see Audio20.pdf section 3.13.2 Input Terminal
+ */
+public final class Usb20ACInputTerminal extends UsbACTerminal {
+ private static final String TAG = "Usb20ACInputTerminal";
+
+ // See Audio20.pdf - Table 4-9
+ // Always 17 bytes
+ private byte mClkSourceID; // 7:1 - ID of the Clock Entity to which this Input
+ // Terminal is connected.
+ private byte mNumChannels; // 8:1 - Number of logical output channels in the
+ // Terminal’s output audio channel cluster.
+ private int mChanConfig; // 9:4 - Describes the spatial location of the
+ // logical channels.
+ private byte mChanNames; // 13:1 - Index of a string descriptor, describing the
+ // name of the first logical channel.
+ private int mControls; // 14:2 - Bitmask (see Audio20.pdf Table 4-9)
+ private byte mTerminalName; // 16:1 - Index of a string descriptor, describing the
+ // Input Terminal.
+
+ public Usb20ACInputTerminal(int length, byte type, byte subtype, byte subclass) {
+ super(length, type, subtype, subclass);
+ }
+
+ public byte getClkSourceID() {
+ return mClkSourceID;
+ }
+
+ public byte getNumChannels() {
+ return mNumChannels;
+ }
+
+ public int getChanConfig() {
+ return mChanConfig;
+ }
+
+ public int getControls() {
+ return mControls;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ super.parseRawDescriptors(stream);
+
+ mClkSourceID = stream.getByte();
+ mNumChannels = stream.getByte();
+ mChanConfig = stream.unpackUsbInt();
+ mChanNames = stream.getByte();
+ mControls = stream.unpackUsbShort();
+ mTerminalName = stream.getByte();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Clock Source: " + getClkSourceID());
+ canvas.writeListItem("" + getNumChannels() + " Channels. Config: "
+ + ReportCanvas.getHexString(getChanConfig()));
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ACMixerUnit.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ACMixerUnit.java
new file mode 100644
index 000000000000..1b267a67752b
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ACMixerUnit.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+/**
+ * @hide
+ * An audio class-specific Mixer Unit interface.
+ * see Audio20.pdf section 4.7.2.6 Mixer Unit Descriptor
+ */
+public final class Usb20ACMixerUnit extends UsbACMixerUnit {
+ private static final String TAG = "Usb20ACMixerUnit";
+
+ private int mChanConfig; // 6+p:4 Describes the spatial location of the
+ // logical channels.
+ private byte mChanNames; // 10+p:1 Index of a string descriptor, describing the
+ // name of the first logical channel.
+ private byte[] mControls; // 11+p:N bitmasks of which controls are present for each channel
+ // for N, see UsbACMixerUnit.calcControlArraySize()
+ private byte mControlsMask; // 11+p+N:1 bitmasks of which controls are present for each channel
+ private byte mNameID; // 12+p+N:1 Index of a string descriptor, describing the
+ // Mixer Unit.
+
+ public Usb20ACMixerUnit(int length, byte type, byte subtype, byte subClass) {
+ super(length, type, subtype, subClass);
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ super.parseRawDescriptors(stream);
+
+ mChanConfig = stream.unpackUsbInt();
+ mChanNames = stream.getByte();
+ int controlArraySize = calcControlArraySize(mNumInputs, mNumOutputs);
+ mControls = new byte[controlArraySize];
+ for (int index = 0; index < controlArraySize; index++) {
+ mControls[index] = stream.getByte();
+ }
+ mControlsMask = stream.getByte();
+ mNameID = stream.getByte();
+
+ return mLength;
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ACOutputTerminal.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ACOutputTerminal.java
new file mode 100644
index 000000000000..67478aad8a59
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ACOutputTerminal.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Output Terminal interface.
+ * see Audio20.pdf section 3.13.3 Output Terminal
+ */
+public final class Usb20ACOutputTerminal extends UsbACTerminal {
+ private static final String TAG = "Usb20ACOutputTerminal";
+
+ // Audio20.pdf - section 4.7.2.5, Table 4-10
+ // Always 12 bytes
+ private byte mSourceID; // 7:1 - ID of the Unit or Terminal to which this
+ // Terminal is connected.
+ private byte mClkSoureID; // 8:1 - ID of the Clock Entity to which this Output
+ // Terminal is connected.
+ private int mControls; // 9:2 - see Audio20.pdf Table 4-10
+ private byte mTerminalID; // 11:1 - Index of a string descriptor, describing the
+
+ public Usb20ACOutputTerminal(int length, byte type, byte subtype, byte subClass) {
+ super(length, type, subtype, subClass);
+ }
+
+ public byte getSourceID() {
+ return mSourceID;
+ }
+
+ public byte getClkSourceID() {
+ return mClkSoureID;
+ }
+
+ public int getControls() {
+ return mControls;
+ }
+
+ public byte getTerminalID() {
+ return mTerminalID;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ super.parseRawDescriptors(stream);
+
+ mSourceID = stream.getByte();
+ mClkSoureID = stream.getByte();
+ mControls = stream.unpackUsbShort();
+ mTerminalID = stream.getByte();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Clock Source ID: " + getClkSourceID());
+ canvas.writeListItem("Controls: " + ReportCanvas.getHexString(getControls()));
+ canvas.writeListItem("Terminal Name ID: " + getTerminalID());
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatI.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatI.java
new file mode 100644
index 000000000000..c03199619e74
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatI.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Format I interface.
+ * see Frmts20.pdf section 2.3.1.6 Type I Format Type Descriptor
+ */
+public final class Usb20ASFormatI extends UsbASFormat {
+ private static final String TAG = "Usb20ASFormatI";
+
+ // Frmts20.pdf Table 2-2: Type I Format Type Descriptor
+ private byte mSubSlotSize; // 4:1 The number of bytes occupied by one
+ // audio subslot. Can be 1, 2, 3 or 4.
+ private byte mBitResolution; // 5:1 The number of effectively used bits from
+ // the available bits in an audio subslot.
+
+ public Usb20ASFormatI(int length, byte type, byte subtype, byte formatType, byte subclass) {
+ super(length, type, subtype, formatType, subclass);
+ }
+
+ /**
+ * TBD
+ */
+ public byte getSubSlotSize() {
+ return mSubSlotSize;
+ }
+
+ /**
+ * TBD
+ */
+ public byte getBitResolution() {
+ return mBitResolution;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ mSubSlotSize = stream.getByte();
+ mBitResolution = stream.getByte();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Subslot Size: " + getSubSlotSize());
+ canvas.writeListItem("Bit Resolution: " + getBitResolution());
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatII.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatII.java
new file mode 100644
index 000000000000..dc44ff063964
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatII.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Format II interface.
+ * see Frmts20.pdf section 2.3.2.6 Type II Format Type Descriptor
+ */
+public final class Usb20ASFormatII extends UsbASFormat {
+ private static final String TAG = "Usb20ASFormatII";
+
+ // Frmts20.pdf Table 2-3: Type II Format Type Descriptor
+ private int mMaxBitRate; // 4:2 Indicates the maximum number of bits per
+ // second this interface can handle in kbits/s.
+ private int mSlotsPerFrame; // 6:2 Indicates the number of PCM audio slots
+ // contained in one encoded audio frame.
+
+ /**
+ * TBD
+ */
+ public Usb20ASFormatII(int length, byte type, byte subtype, byte formatType, byte subclass) {
+ super(length, type, subtype, formatType, subclass);
+ }
+
+ /**
+ * TBD
+ */
+ public int getmaxBitRate() {
+ return mMaxBitRate;
+ }
+
+ /**
+ * TBD
+ */
+ public int getSlotsPerFrame() {
+ return mSlotsPerFrame;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ mMaxBitRate = stream.unpackUsbShort();
+ mSlotsPerFrame = stream.unpackUsbShort();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Max Bit Rate: " + getmaxBitRate());
+ canvas.writeListItem("slots Per Frame: " + getSlotsPerFrame());
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIIEx.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIIEx.java
new file mode 100644
index 000000000000..d7dfba396984
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIIEx.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Format II interface.
+ * see Frmts20.pdf section 2.4.2.1 Extended Type II Format Type Descriptor
+ */
+public final class Usb20ASFormatIIEx extends UsbASFormat {
+ private static final String TAG = "Usb20ASFormatIIEx";
+
+ // Frmts20.pdf Table 2-7: Extended Type II Format Type Descriptor
+ private int mMaxBitRate; // 4:2 Indicates the maximum number of bits per
+ // second this interface can handle in kbits/s
+ private int mSamplesPerFrame; // 6:2 Indicates the number of PCM audio
+ // samples contained in one encoded audio frame.
+ private byte mHeaderLength; // 8:1 Size of the Packet Header, in bytes.
+ private byte mSidebandProtocol; // 9:1 Constant, identifying the Side Band
+ // Protocol used for the Packet Header content.
+
+ public Usb20ASFormatIIEx(int length, byte type, byte subtype, byte formatType, byte subclass) {
+ super(length, type, subtype, formatType, subclass);
+ }
+
+ public int getMaxBitRate() {
+ return mMaxBitRate;
+ }
+
+ public int getSamplesPerFrame() {
+ return mSamplesPerFrame;
+ }
+
+ public byte getHeaderLength() {
+ return mHeaderLength;
+ }
+
+ public byte getSidebandProtocol() {
+ return mSidebandProtocol;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ mMaxBitRate = stream.unpackUsbShort();
+ mSamplesPerFrame = stream.unpackUsbShort();
+ mHeaderLength = stream.getByte();
+ mSidebandProtocol = stream.getByte();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Max Bit Rate: " + getMaxBitRate());
+ canvas.writeListItem("Samples Per Frame: " + getSamplesPerFrame());
+ canvas.writeListItem("Header Length: " + getHeaderLength());
+ canvas.writeListItem("Sideband Protocol: " + getSidebandProtocol());
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIII.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIII.java
new file mode 100644
index 000000000000..b44a216703f8
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASFormatIII.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Format III interface.
+ * see Frmts20.pdf section 2.3.1.6 2.3.3.1 Type III Format Type Descriptor
+ */
+public final class Usb20ASFormatIII extends UsbASFormat {
+ private static final String TAG = "Usb20ASFormatIII";
+
+ // frmts20.pdf Table 2-4: Type III Format Type Descriptor
+ private byte mSubslotSize; // 4:1 The number of bytes occupied by one
+ // audio subslot. Must be set to two.
+ private byte mBitResolution; // 5:1 The number of effectively used bits from
+ // the available bits in an audio subframe.
+
+ public Usb20ASFormatIII(int length, byte type, byte subtype, byte formatType, byte subclass) {
+ super(length, type, subtype, formatType, subclass);
+ }
+
+ public byte getSubslotSize() {
+ return mSubslotSize;
+ }
+
+ public byte getBitResolution() {
+ return mBitResolution;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+ mSubslotSize = stream.getByte();
+ mBitResolution = stream.getByte();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Subslot Size: " + getSubslotSize());
+ canvas.writeListItem("Bit Resolution: " + getBitResolution());
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/Usb20ASGeneral.java b/services/usb/java/com/android/server/usb/descriptors/Usb20ASGeneral.java
new file mode 100644
index 000000000000..18d48a009098
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/Usb20ASGeneral.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * Audio20.pdf - 4.9.2 Class-Specific AS Interface Descriptor
+ * 16 bytes
+ */
+public final class Usb20ASGeneral extends UsbACInterface {
+ private static final String TAG = "Usb20ASGeneral";
+
+ // Audio20.pdf - Table 4-27
+ private byte mTerminalLink; // 3:1 The Terminal ID of the Terminal to which
+ // this interface is connected.
+ private byte mControls; // 4:1 see audio20.pdf Table 4-27
+ private byte mFormatType; // 5:1 Constant identifying the Format Type the
+ // AudioStreaming interface is using.
+ private int mFormats; // 6:4 The Audio Data Format(s) that can be
+ // used to communicate with this interface.
+ // See the USB Audio Data Formats
+ // document for further details.
+ private byte mNumChannels; // 10:1 Number of physical channels in the AS
+ // Interface audio channel cluster.
+ private int mChannelConfig; // 11:4 Describes the spatial location of the
+ // physical channels.
+ private byte mChannelNames; // 15:1 Index of a string descriptor, describing the
+ // name of the first physical channel.
+
+ public Usb20ASGeneral(int length, byte type, byte subtype, byte subclass) {
+ super(length, type, subtype, subclass);
+ }
+
+ public byte getTerminalLink() {
+ return mTerminalLink;
+ }
+
+ public byte getControls() {
+ return mControls;
+ }
+
+ public byte getFormatType() {
+ return mFormatType;
+ }
+
+ public int getFormats() {
+ return mFormats;
+ }
+
+ public byte getNumChannels() {
+ return mNumChannels;
+ }
+
+ public int getChannelConfig() {
+ return mChannelConfig;
+ }
+
+ public byte getChannelNames() {
+ return mChannelNames;
+ }
+
+ @Override
+ public int parseRawDescriptors(ByteStream stream) {
+
+ mTerminalLink = stream.getByte();
+ mControls = stream.getByte();
+ mFormatType = stream.getByte();
+ mFormats = stream.unpackUsbInt();
+ mNumChannels = stream.getByte();
+ mChannelConfig = stream.unpackUsbInt();
+ mChannelNames = stream.getByte();
+
+ return mLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Terminal Link: " + getTerminalLink());
+ canvas.writeListItem("Controls: " + ReportCanvas.getHexString(getControls()));
+ canvas.writeListItem("Format Type: " + ReportCanvas.getHexString(getFormatType()));
+ canvas.writeListItem("Formats: " + ReportCanvas.getHexString(getFormats()));
+ canvas.writeListItem("Num Channels: " + getNumChannels());
+ canvas.writeListItem("Channel Config: " + ReportCanvas.getHexString(getChannelConfig()));
+ canvas.writeListItem("Channel Names String ID: " + getChannelNames());
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java b/services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java
index 96fcc6a0b8db..6e1ce07536c5 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACAudioControlEndpoint.java
@@ -21,7 +21,7 @@ package com.android.server.usb.descriptors;
* audio10.pdf section 4.4.2.1
*/
public class UsbACAudioControlEndpoint extends UsbACEndpoint {
- private static final String TAG = "ACAudioControlEndpoint";
+ private static final String TAG = "UsbACAudioControlEndpoint";
private byte mAddress; // 2:1 The address of the endpoint on the USB device.
// D7: Direction. 1 = IN endpoint
@@ -64,7 +64,7 @@ public class UsbACAudioControlEndpoint extends UsbACEndpoint {
mAddress = stream.getByte();
mAttribs = stream.getByte();
- mMaxPacketSize = stream.unpackUsbWord();
+ mMaxPacketSize = stream.unpackUsbShort();
mInterval = stream.getByte();
return mLength;
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java b/services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java
index d387883d3049..d35190298df6 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACAudioStreamEndpoint.java
@@ -21,7 +21,7 @@ package com.android.server.usb.descriptors;
* see audio10.pdf section 3.7.2
*/
public class UsbACAudioStreamEndpoint extends UsbACEndpoint {
- private static final String TAG = "ACAudioStreamEndpoint";
+ private static final String TAG = "UsbACAudioStreamEndpoint";
//TODO data fields...
public UsbACAudioStreamEndpoint(int length, byte type, byte subclass) {
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java b/services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java
index 223496ab016e..4a6839d943ff 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACEndpoint.java
@@ -23,7 +23,7 @@ import android.util.Log;
* see audio10.pdf section 4.4.1.2
*/
abstract class UsbACEndpoint extends UsbDescriptor {
- private static final String TAG = "ACEndpoint";
+ private static final String TAG = "UsbACEndpoint";
protected final byte mSubclass; // from the mSubclass member of the "enclosing"
// Interface Descriptor, not the stream.
@@ -50,7 +50,7 @@ abstract class UsbACEndpoint extends UsbDescriptor {
}
public static UsbDescriptor allocDescriptor(UsbDescriptorParser parser,
- int length, byte type) {
+ int length, byte type) {
UsbInterfaceDescriptor interfaceDesc = parser.getCurInterface();
byte subClass = interfaceDesc.getUsbSubclass();
switch (subClass) {
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java b/services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java
index 739fe5503a1d..ab3903b402d9 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACFeatureUnit.java
@@ -20,8 +20,8 @@ package com.android.server.usb.descriptors;
* An audio class-specific Feature Unit Interface
* see audio10.pdf section 3.5.5
*/
-public class UsbACFeatureUnit extends UsbACInterface {
- private static final String TAG = "ACFeatureUnit";
+public final class UsbACFeatureUnit extends UsbACInterface {
+ private static final String TAG = "UsbACFeatureUnit";
// audio10.pdf section 4.3.2.5
public static final int CONTROL_MASK_MUTE = 0x0001;
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACHeaderInterface.java b/services/usb/java/com/android/server/usb/descriptors/UsbACHeaderInterface.java
new file mode 100644
index 000000000000..01a355e2c6e4
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACHeaderInterface.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * An audio class-specific Interface Header super class.
+ * see audio10.pdf section 4.3.2 & Audio20.pdf section 4.7.2
+ */
+public abstract class UsbACHeaderInterface extends UsbACInterface {
+ private static final String TAG = "UsbACHeaderInterface";
+
+ protected int mADCRelease; // Audio Device Class Specification Release (BCD).
+ protected int mTotalLength; // Total number of bytes returned for the class-specific
+ // AudioControl interface descriptor. Includes the combined length
+ // of this descriptor header and all Unit and Terminal descriptors.
+
+ public UsbACHeaderInterface(
+ int length, byte type, byte subtype, byte subclass, int adcRelease) {
+ super(length, type, subtype, subclass);
+ mADCRelease = adcRelease;
+ }
+
+ public int getADCRelease() {
+ return mADCRelease;
+ }
+
+ public int getTotalLength() {
+ return mTotalLength;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Release: " + ReportCanvas.getBCDString(getADCRelease()));
+ canvas.writeListItem("Total Length: " + getTotalLength());
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java b/services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java
index 0ab7fccd2c3b..df6c53fa9f52 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACInterface.java
@@ -17,13 +17,16 @@ package com.android.server.usb.descriptors;
import android.util.Log;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+import com.android.server.usb.descriptors.report.UsbStrings;
+
/**
* @hide
* An audio class-specific Interface.
* see audio10.pdf section 4.3.2
*/
public abstract class UsbACInterface extends UsbDescriptor {
- private static final String TAG = "ACInterface";
+ private static final String TAG = "UsbACInterface";
// Audio Control Subtypes
public static final byte ACI_UNDEFINED = 0;
@@ -35,6 +38,11 @@ public abstract class UsbACInterface extends UsbDescriptor {
public static final byte ACI_FEATURE_UNIT = 6;
public static final byte ACI_PROCESSING_UNIT = 7;
public static final byte ACI_EXTENSION_UNIT = 8;
+ // Not handled yet
+ public static final byte ACI_CLOCK_SOURCE = 0x0A;
+ public static final byte ACI_CLOCK_SELECTOR = 0x0B;
+ public static final byte ACI_CLOCK_MULTIPLIER = 0x0C;
+ public static final byte ACI_SAMPLE_RATE_CONVERTER = 0x0D;
// Audio Streaming Subtypes
public static final byte ASI_UNDEFINED = 0;
@@ -87,17 +95,39 @@ public abstract class UsbACInterface extends UsbDescriptor {
return mSubclass;
}
- private static UsbDescriptor allocAudioControlDescriptor(ByteStream stream,
- int length, byte type, byte subtype, byte subClass) {
+ private static UsbDescriptor allocAudioControlDescriptor(UsbDescriptorParser parser,
+ ByteStream stream, int length, byte type, byte subtype, byte subClass) {
switch (subtype) {
case ACI_HEADER:
- return new UsbACHeader(length, type, subtype, subClass);
+ {
+ int acInterfaceSpec = stream.unpackUsbShort();
+ parser.setACInterfaceSpec(acInterfaceSpec);
+ if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) {
+ return new Usb20ACHeader(length, type, subtype, subClass, acInterfaceSpec);
+ } else {
+ return new Usb10ACHeader(length, type, subtype, subClass, acInterfaceSpec);
+ }
+ }
case ACI_INPUT_TERMINAL:
- return new UsbACInputTerminal(length, type, subtype, subClass);
+ {
+ int acInterfaceSpec = parser.getACInterfaceSpec();
+ if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) {
+ return new Usb20ACInputTerminal(length, type, subtype, subClass);
+ } else {
+ return new Usb10ACInputTerminal(length, type, subtype, subClass);
+ }
+ }
case ACI_OUTPUT_TERMINAL:
- return new UsbACOutputTerminal(length, type, subtype, subClass);
+ {
+ int acInterfaceSpec = parser.getACInterfaceSpec();
+ if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) {
+ return new Usb20ACOutputTerminal(length, type, subtype, subClass);
+ } else {
+ return new Usb10ACOutputTerminal(length, type, subtype, subClass);
+ }
+ }
case ACI_SELECTOR_UNIT:
return new UsbACSelectorUnit(length, type, subtype, subClass);
@@ -106,7 +136,14 @@ public abstract class UsbACInterface extends UsbDescriptor {
return new UsbACFeatureUnit(length, type, subtype, subClass);
case ACI_MIXER_UNIT:
- return new UsbACMixerUnit(length, type, subtype, subClass);
+ {
+ int acInterfaceSpec = parser.getACInterfaceSpec();
+ if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) {
+ return new Usb20ACMixerUnit(length, type, subtype, subClass);
+ } else {
+ return new Usb10ACMixerUnit(length, type, subtype, subClass);
+ }
+ }
case ACI_PROCESSING_UNIT:
case ACI_EXTENSION_UNIT:
@@ -115,18 +152,24 @@ public abstract class UsbACInterface extends UsbDescriptor {
default:
Log.w(TAG, "Unknown Audio Class Interface subtype:0x"
+ Integer.toHexString(subtype));
- return null;
+ return new UsbACInterfaceUnparsed(length, type, subtype, subClass);
}
}
- private static UsbDescriptor allocAudioStreamingDescriptor(ByteStream stream,
- int length, byte type, byte subtype, byte subClass) {
+ private static UsbDescriptor allocAudioStreamingDescriptor(UsbDescriptorParser parser,
+ ByteStream stream, int length, byte type, byte subtype, byte subClass) {
+ //int spec = parser.getUsbSpec();
+ int acInterfaceSpec = parser.getACInterfaceSpec();
switch (subtype) {
case ASI_GENERAL:
- return new UsbASGeneral(length, type, subtype, subClass);
+ if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) {
+ return new Usb20ASGeneral(length, type, subtype, subClass);
+ } else {
+ return new Usb10ASGeneral(length, type, subtype, subClass);
+ }
case ASI_FORMAT_TYPE:
- return UsbASFormat.allocDescriptor(stream, length, type, subtype, subClass);
+ return UsbASFormat.allocDescriptor(parser, stream, length, type, subtype, subClass);
case ASI_FORMAT_SPECIFIC:
case ASI_UNDEFINED:
@@ -155,7 +198,6 @@ public abstract class UsbACInterface extends UsbDescriptor {
// Fall through until we implement that descriptor
case MSI_UNDEFINED:
- // break; Fall through until we implement this descriptor
default:
Log.w(TAG, "Unknown MIDI Streaming Interface subtype:0x"
+ Integer.toHexString(subtype));
@@ -173,10 +215,12 @@ public abstract class UsbACInterface extends UsbDescriptor {
byte subClass = interfaceDesc.getUsbSubclass();
switch (subClass) {
case AUDIO_AUDIOCONTROL:
- return allocAudioControlDescriptor(stream, length, type, subtype, subClass);
+ return allocAudioControlDescriptor(
+ parser, stream, length, type, subtype, subClass);
case AUDIO_AUDIOSTREAMING:
- return allocAudioStreamingDescriptor(stream, length, type, subtype, subClass);
+ return allocAudioStreamingDescriptor(
+ parser, stream, length, type, subtype, subClass);
case AUDIO_MIDISTREAMING:
return allocMidiStreamingDescriptor(length, type, subtype, subClass);
@@ -187,4 +231,21 @@ public abstract class UsbACInterface extends UsbDescriptor {
return null;
}
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ byte subClass = getSubclass();
+ String subClassName = UsbStrings.getACInterfaceSubclassName(subClass);
+
+ byte subtype = getSubtype();
+ String subTypeName = UsbStrings.getACControlInterfaceName(subtype);
+
+ canvas.openList();
+ canvas.writeListItem("Subclass: " + ReportCanvas.getHexString(subClass)
+ + " " + subClassName);
+ canvas.writeListItem("Subtype: " + ReportCanvas.getHexString(subtype) + " " + subTypeName);
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACInterfaceUnparsed.java b/services/usb/java/com/android/server/usb/descriptors/UsbACInterfaceUnparsed.java
new file mode 100644
index 000000000000..9e00a7976dfd
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACInterfaceUnparsed.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors;
+
+/**
+ * @hide
+ * A holder class for as yet unparsed audio-class interfaces.
+ */
+public final class UsbACInterfaceUnparsed extends UsbACInterface {
+ private static final String TAG = "UsbACInterfaceUnparsed";
+
+ public UsbACInterfaceUnparsed(int length, byte type, byte subtype, byte subClass) {
+ super(length, type, subtype, subClass);
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java b/services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java
index 9c072426cc49..9c314575ccc4 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACMidiEndpoint.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Midi Endpoint.
* see midi10.pdf section 6.2.2
*/
-public class UsbACMidiEndpoint extends UsbACEndpoint {
- private static final String TAG = "ACMidiEndpoint";
+public final class UsbACMidiEndpoint extends UsbACEndpoint {
+ private static final String TAG = "UsbACMidiEndpoint";
private byte mNumJacks;
private byte[] mJackIds;
@@ -49,4 +51,15 @@ public class UsbACMidiEndpoint extends UsbACEndpoint {
}
return mLength;
}
-}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.writeHeader(3, "AC Midi Endpoint: " + ReportCanvas.getHexString(getType())
+ + " Length: " + getLength());
+ canvas.openList();
+ canvas.writeListItem("" + getNumJacks() + " Jacks.");
+ canvas.closeList();
+ }
+} \ No newline at end of file
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java b/services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java
index 552b5ae308d6..88faed962a54 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACMixerUnit.java
@@ -15,23 +15,14 @@
*/
package com.android.server.usb.descriptors;
-/**
- * @hide
- * An audio class-specific Mixer Interface.
- * see audio10.pdf section 4.3.2.3
- */
public class UsbACMixerUnit extends UsbACInterface {
- private static final String TAG = "ACMixerUnit";
+ private static final String TAG = "UsbACMixerUnit";
- private byte mUnitID; // 3:1
- private byte mNumInputs; // 4:1 Number of Input Pins of this Unit.
- private byte[] mInputIDs; // 5...:1 ID of the Unit or Terminal to which the Input Pins
- // are connected.
- private byte mNumOutputs; // The number of output channels
- private int mChannelConfig; // Spacial location of output channels
- private byte mChanNameID; // First channel name string descriptor ID
- private byte[] mControls; // bitmasks of which controls are present for each channel
- private byte mNameID; // string descriptor ID of mixer name
+ protected byte mUnitID; // 3:1
+ protected byte mNumInputs; // 4:1 Number of Input Pins of this Unit.
+ protected byte[] mInputIDs; // 5...:1 ID of the Unit or Terminal to which the Input Pins
+ // are connected.
+ protected byte mNumOutputs; // The number of output channels
public UsbACMixerUnit(int length, byte type, byte subtype, byte subClass) {
super(length, type, subtype, subClass);
@@ -53,20 +44,9 @@ public class UsbACMixerUnit extends UsbACInterface {
return mNumOutputs;
}
- public int getChannelConfig() {
- return mChannelConfig;
- }
-
- public byte getChanNameID() {
- return mChanNameID;
- }
-
- public byte[] getControls() {
- return mControls;
- }
-
- public byte getNameID() {
- return mNameID;
+ protected static int calcControlArraySize(int numInputs, int numOutputs) {
+ int totalChannels = numInputs * numOutputs;
+ return (totalChannels + 7) / 8;
}
@Override
@@ -78,22 +58,6 @@ public class UsbACMixerUnit extends UsbACInterface {
mInputIDs[input] = stream.getByte();
}
mNumOutputs = stream.getByte();
- mChannelConfig = stream.unpackUsbWord();
- mChanNameID = stream.getByte();
-
- int controlArraySize;
- int totalChannels = mNumInputs * mNumOutputs;
- if (totalChannels % 8 == 0) {
- controlArraySize = totalChannels / 8;
- } else {
- controlArraySize = totalChannels / 8 + 1;
- }
- mControls = new byte[controlArraySize];
- for (int index = 0; index < controlArraySize; index++) {
- mControls[index] = stream.getByte();
- }
-
- mNameID = stream.getByte();
return mLength;
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java b/services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java
index b1f60bdcf6ed..b16bc575e806 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACSelectorUnit.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+// import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Selector Unit Interface.
* see audio10.pdf section 4.3.2.4
*/
-public class UsbACSelectorUnit extends UsbACInterface {
- private static final String TAG = "ACSelectorUnit";
+public final class UsbACSelectorUnit extends UsbACInterface {
+ private static final String TAG = "UsbACSelectorUnit";
private byte mUnitID; // 3:1 Constant uniquely identifying the Unit within the audio function.
// This value is used in all requests to address this Unit.
@@ -62,4 +64,11 @@ public class UsbACSelectorUnit extends UsbACInterface {
return mLength;
}
+
+// @Override
+// public void report(ReportCanvas canvas) {
+// super.report(canvas);
+//
+// //TODO
+// }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java b/services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java
index ea80208ee3f3..2836508581d8 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbACTerminal.java
@@ -15,10 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+import com.android.server.usb.descriptors.report.UsbStrings;
+
/**
* @hide
*/
public abstract class UsbACTerminal extends UsbACInterface {
+ private static final String TAG = "UsbACTerminal";
+
// Note that these fields are the same for both the
// audio class-specific Output Terminal Interface.(audio10.pdf section 4.3.2.2)
// and audio class-specific Input Terminal interface.(audio10.pdf section 4.3.2.1)
@@ -46,9 +51,21 @@ public abstract class UsbACTerminal extends UsbACInterface {
@Override
public int parseRawDescriptors(ByteStream stream) {
mTerminalID = stream.getByte();
- mTerminalType = stream.unpackUsbWord();
+ mTerminalType = stream.unpackUsbShort();
mAssocTerminal = stream.getByte();
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ int terminalType = getTerminalType();
+ canvas.writeListItem("Type: " + ReportCanvas.getHexString(terminalType) + ": "
+ + UsbStrings.getTerminalName(terminalType));
+ canvas.writeListItem("ID: " + ReportCanvas.getHexString(getTerminalID()));
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java b/services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java
index d7c84c6a0965..7a92f9e197ec 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbASFormat.java
@@ -15,19 +15,30 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+import com.android.server.usb.descriptors.report.UsbStrings;
+
/**
* @hide
* An audio class-specific Format Interface.
* Subclasses: UsbACFormatI and UsbACFormatII.
* see audio10.pdf section 4.5.3 & & Frmts10.pdf
*/
-public abstract class UsbASFormat extends UsbACInterface {
- private static final String TAG = "ASFormat";
+public class UsbASFormat extends UsbACInterface {
+ private static final String TAG = "UsbASFormat";
private final byte mFormatType; // 3:1 FORMAT_TYPE_*
- public static final byte FORMAT_TYPE_I = 1;
- public static final byte FORMAT_TYPE_II = 2;
+ public static final byte FORMAT_TYPE_I = 1;
+ public static final byte FORMAT_TYPE_II = 2;
+ // these showed up in USB 2.0
+ public static final byte FORMAT_TYPE_III = 3;
+ public static final byte FORMAT_TYPE_IV = 4;
+
+ // "extended" formats
+ public static final byte EXT_FORMAT_TYPE_I = (byte) 0x81;
+ public static final byte EXT_FORMAT_TYPE_II = (byte) 0x82;
+ public static final byte EXT_FORMAT_TYPE_III = (byte) 0x83;
public UsbASFormat(int length, byte type, byte subtype, byte formatType, byte mSubclass) {
super(length, type, subtype, mSubclass);
@@ -38,27 +49,59 @@ public abstract class UsbASFormat extends UsbACInterface {
return mFormatType;
}
+ public int[] getSampleRates() {
+ return null;
+ }
+
+ public int[] getBitDepths() {
+ return null;
+ }
+
+ public int[] getChannelCounts() {
+ return null;
+ }
+
/**
* Allocates the audio-class format subtype associated with the format type read from the
* stream.
*/
- public static UsbDescriptor allocDescriptor(ByteStream stream, int length, byte type,
+ public static UsbDescriptor allocDescriptor(UsbDescriptorParser parser,
+ ByteStream stream, int length, byte type,
byte subtype, byte subclass) {
byte formatType = stream.getByte();
- //TODO
- // There is an issue parsing format descriptors on (some) USB 2.0 pro-audio interfaces
- // Since we don't need this info for headset detection, just skip these descriptors
- // for now to avoid the (low) possibility of an IndexOutOfBounds exception.
+ int acInterfaceSpec = parser.getACInterfaceSpec();
+
switch (formatType) {
-// case FORMAT_TYPE_I:
-// return new UsbASFormatI(length, type, subtype, formatType, subclass);
-//
-// case FORMAT_TYPE_II:
-// return new UsbASFormatII(length, type, subtype, formatType, subclass);
+ case FORMAT_TYPE_I:
+ if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) {
+ return new Usb20ASFormatI(length, type, subtype, formatType, subclass);
+ } else {
+ return new Usb10ASFormatI(length, type, subtype, formatType, subclass);
+ }
+
+ case FORMAT_TYPE_II:
+ if (acInterfaceSpec == UsbDeviceDescriptor.USBSPEC_2_0) {
+ return new Usb20ASFormatII(length, type, subtype, formatType, subclass);
+ } else {
+ return new Usb10ASFormatII(length, type, subtype, formatType, subclass);
+ }
+
+ // USB 2.0 Exclusive Format Types
+ case FORMAT_TYPE_III:
+ return new Usb20ASFormatIII(length, type, subtype, formatType, subclass);
+ case FORMAT_TYPE_IV:
+ //TODO - implement this type.
default:
- return null;
+ return new UsbASFormat(length, type, subtype, formatType, subclass);
}
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.writeParagraph(UsbStrings.getFormatName(getFormatType()), /*emphasis*/false);
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java b/services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java
index 185cee20b090..9710ac67870f 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbBinaryParser.java
@@ -25,7 +25,7 @@ import com.android.server.usb.descriptors.report.UsbStrings;
* A class that just walks the descriptors and does a hex dump of the contained values.
* Usefull as a debugging tool.
*/
-public class UsbBinaryParser {
+public final class UsbBinaryParser {
private static final String TAG = "UsbBinaryParser";
private static final boolean LOGGING = false;
@@ -33,7 +33,7 @@ public class UsbBinaryParser {
// Log
if (LOGGING) {
- Log.i(TAG, "l:" + length + " t:" + Integer.toHexString(type) + " "
+ Log.i(TAG, "l: " + length + " t: " + Integer.toHexString(type) + " "
+ UsbStrings.getDescriptorName(type));
StringBuilder sb = new StringBuilder();
for (int index = 2; index < length; index++) {
@@ -43,7 +43,7 @@ public class UsbBinaryParser {
} else {
// Screen Dump
builder.append("<p>");
- builder.append("<b> l:" + length
+ builder.append("<b> l: " + length
+ " t:0x" + Integer.toHexString(type) + " "
+ UsbStrings.getDescriptorName(type) + "</b><br>");
for (int index = 2; index < length; index++) {
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java
index 8ae6d0f1ee7e..75279c61c4f0 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbConfigDescriptor.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An USB Config Descriptor.
* see usb11.pdf section 9.6.2
*/
-public class UsbConfigDescriptor extends UsbDescriptor {
- private static final String TAG = "Config";
+public final class UsbConfigDescriptor extends UsbDescriptor {
+ private static final String TAG = "UsbConfigDescriptor";
private int mTotalLength; // 2:2 Total length in bytes of data returned
private byte mNumInterfaces; // 4:1 Number of Interfaces
@@ -35,6 +37,7 @@ public class UsbConfigDescriptor extends UsbDescriptor {
UsbConfigDescriptor(int length, byte type) {
super(length, type);
+ mHierarchyLevel = 2;
}
public int getTotalLength() {
@@ -63,7 +66,7 @@ public class UsbConfigDescriptor extends UsbDescriptor {
@Override
public int parseRawDescriptors(ByteStream stream) {
- mTotalLength = stream.unpackUsbWord();
+ mTotalLength = stream.unpackUsbShort();
mNumInterfaces = stream.getByte();
mConfigValue = stream.getByte();
mConfigIndex = stream.getByte();
@@ -72,4 +75,15 @@ public class UsbConfigDescriptor extends UsbDescriptor {
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Config # " + getConfigValue());
+ canvas.writeListItem(getNumInterfaces() + " Interfaces.");
+ canvas.writeListItem("Attributes: " + ReportCanvas.getHexString(getAttribs()));
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java
index 63b2d7f6aed7..8c7565b790d2 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptor.java
@@ -19,6 +19,10 @@ import android.hardware.usb.UsbConstants;
import android.hardware.usb.UsbDeviceConnection;
import android.util.Log;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+import com.android.server.usb.descriptors.report.Reporting;
+import com.android.server.usb.descriptors.report.UsbStrings;
+
/*
* Some notes about UsbDescriptor and its subclasses.
*
@@ -33,8 +37,10 @@ import android.util.Log;
* @hide
* Common superclass for all USB Descriptors.
*/
-public abstract class UsbDescriptor {
- private static final String TAG = "Descriptor";
+public abstract class UsbDescriptor implements Reporting {
+ private static final String TAG = "UsbDescriptor";
+
+ protected int mHierarchyLevel;
protected final int mLength; // 0:1 bLength Number Size of the Descriptor in Bytes (18 bytes)
// we store this as an int because Java bytes are SIGNED.
@@ -50,11 +56,15 @@ public abstract class UsbDescriptor {
public static final int STATUS_PARSED_OK = 1;
public static final int STATUS_PARSED_UNDERRUN = 2;
public static final int STATUS_PARSED_OVERRUN = 3;
+ public static final int STATUS_PARSE_EXCEPTION = 4;
+
private int mStatus = STATUS_UNPARSED;
private static String[] sStatusStrings = {
"UNPARSED", "PARSED - OK", "PARSED - UNDERRUN", "PARSED - OVERRUN"};
+ private int mOverUnderRunCount;
+
// Descriptor Type IDs
public static final byte DESCRIPTORTYPE_DEVICE = 0x01; // 1
public static final byte DESCRIPTORTYPE_CONFIG = 0x02; // 2
@@ -147,6 +157,10 @@ public abstract class UsbDescriptor {
mStatus = status;
}
+ public int getOverUnderRunCount() {
+ return mOverUnderRunCount;
+ }
+
public String getStatusString() {
return sStatusStrings[mStatus];
}
@@ -165,14 +179,16 @@ public abstract class UsbDescriptor {
// Too cold...
stream.advance(mLength - bytesRead);
mStatus = STATUS_PARSED_UNDERRUN;
+ mOverUnderRunCount = mLength - bytesRead;
Log.w(TAG, "UNDERRUN t:0x" + Integer.toHexString(mType)
- + " r:" + bytesRead + " < l:" + mLength);
+ + " r: " + bytesRead + " < l: " + mLength);
} else if (bytesRead > mLength) {
// Too hot...
stream.reverse(bytesRead - mLength);
mStatus = STATUS_PARSED_OVERRUN;
+ mOverUnderRunCount = bytesRead - mLength;
Log.w(TAG, "OVERRRUN t:0x" + Integer.toHexString(mType)
- + " r:" + bytesRead + " > l:" + mLength);
+ + " r: " + bytesRead + " > l: " + mLength);
} else {
// Just right!
mStatus = STATUS_PARSED_OK;
@@ -220,4 +236,43 @@ public abstract class UsbDescriptor {
}
return usbStr;
}
+
+ private void reportParseStatus(ReportCanvas canvas) {
+ int status = getStatus();
+ switch (status) {
+ case UsbDescriptor.STATUS_PARSED_OK:
+ break; // no need to report
+
+ case UsbDescriptor.STATUS_UNPARSED:
+ case UsbDescriptor.STATUS_PARSED_UNDERRUN:
+ case UsbDescriptor.STATUS_PARSED_OVERRUN:
+ canvas.writeParagraph("status: " + getStatusString()
+ + " [" + getOverUnderRunCount() + "]", true);
+ break;
+ }
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ String descTypeStr = UsbStrings.getDescriptorName(getType());
+ String text = descTypeStr + ": " + ReportCanvas.getHexString(getType())
+ + " Len: " + getLength();
+ if (mHierarchyLevel != 0) {
+ canvas.writeHeader(mHierarchyLevel, text);
+ } else {
+ canvas.writeParagraph(text, false);
+ }
+
+ if (getStatus() != STATUS_PARSED_OK) {
+ reportParseStatus(canvas);
+ }
+ }
+
+ @Override
+ public void shortReport(ReportCanvas canvas) {
+ String descTypeStr = UsbStrings.getDescriptorName(getType());
+ String text = descTypeStr + ": " + ReportCanvas.getHexString(getType())
+ + " Len: " + getLength();
+ canvas.writeParagraph(text, false);
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
index d4a0ac4a0da3..ad7bde5c275e 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
@@ -23,8 +23,8 @@ import java.util.ArrayList;
* @hide
* Class for parsing a binary stream of USB Descriptors.
*/
-public class UsbDescriptorParser {
- private static final String TAG = "DescriptorParser";
+public final class UsbDescriptorParser {
+ private static final String TAG = "UsbDescriptorParser";
// Descriptor Objects
private ArrayList<UsbDescriptor> mDescriptors = new ArrayList<UsbDescriptor>();
@@ -32,9 +32,35 @@ public class UsbDescriptorParser {
private UsbDeviceDescriptor mDeviceDescriptor;
private UsbInterfaceDescriptor mCurInterfaceDescriptor;
+ // The AudioClass spec implemented by the AudioClass Interfaces
+ // This may well be different than the overall USB Spec.
+ // Obtained from the first AudioClass Header descriptor.
+ private int mACInterfacesSpec = UsbDeviceDescriptor.USBSPEC_1_0;
+
public UsbDescriptorParser() {}
/**
+ * @return the USB Spec value associated with the Device descriptor for the
+ * descriptors stream being parsed.
+ *
+ * @throws IllegalArgumentException
+ */
+ public int getUsbSpec() {
+ if (mDeviceDescriptor != null) {
+ return mDeviceDescriptor.getSpec();
+ } else {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ public void setACInterfaceSpec(int spec) {
+ mACInterfacesSpec = spec;
+ }
+
+ public int getACInterfaceSpec() {
+ return mACInterfacesSpec;
+ }
+ /**
* The probability (as returned by getHeadsetProbability() at which we conclude
* the peripheral is a headset.
*/
@@ -44,7 +70,7 @@ public class UsbDescriptorParser {
private UsbDescriptor allocDescriptor(ByteStream stream) {
stream.resetReadCount();
- int length = (int) stream.getByte() & 0x000000FF;
+ int length = stream.getUnsignedByte();
byte type = stream.getByte();
UsbDescriptor descriptor = null;
@@ -99,7 +125,7 @@ public class UsbDescriptorParser {
if (descriptor == null) {
// Unknown Descriptor
- Log.i(TAG, "Unknown Descriptor len:" + length + " type:0x"
+ Log.i(TAG, "Unknown Descriptor len: " + length + " type:0x"
+ Integer.toHexString(type));
descriptor = new UsbUnknown(length, type);
}
@@ -135,14 +161,15 @@ public class UsbDescriptorParser {
try {
descriptor.parseRawDescriptors(stream);
- // Its OK to add the invalid descriptor as the postParse()
- // routine will mark it as invalid.
- mDescriptors.add(descriptor);
-
// Clean up
descriptor.postParse(stream);
} catch (Exception ex) {
Log.e(TAG, "Exception parsing USB descriptors.", ex);
+
+ // Clean up
+ descriptor.setStatus(UsbDescriptor.STATUS_PARSE_EXCEPTION);
+ } finally {
+ mDescriptors.add(descriptor);
}
}
}
@@ -197,7 +224,7 @@ public class UsbDescriptorParser {
list.add(descriptor);
}
} else {
- Log.w(TAG, "Unrecognized Interface l:" + descriptor.getLength()
+ Log.w(TAG, "Unrecognized Interface l: " + descriptor.getLength()
+ " t:0x" + Integer.toHexString(descriptor.getType()));
}
}
@@ -220,7 +247,7 @@ public class UsbDescriptorParser {
list.add(descriptor);
}
} else {
- Log.w(TAG, "Unrecognized Audio Interface l:" + descriptor.getLength()
+ Log.w(TAG, "Unrecognized Audio Interface l: " + descriptor.getLength()
+ " t:0x" + Integer.toHexString(descriptor.getType()));
}
}
@@ -251,7 +278,7 @@ public class UsbDescriptorParser {
return true;
}
} else {
- Log.w(TAG, "Undefined Audio Class Interface l:" + descriptor.getLength()
+ Log.w(TAG, "Undefined Audio Class Interface l: " + descriptor.getLength()
+ " t:0x" + Integer.toHexString(descriptor.getType()));
}
}
@@ -274,8 +301,8 @@ public class UsbDescriptorParser {
acDescriptors = getACInterfaceDescriptors(UsbACInterface.ACI_INPUT_TERMINAL,
UsbACInterface.AUDIO_AUDIOCONTROL);
for (UsbDescriptor descriptor : acDescriptors) {
- if (descriptor instanceof UsbACInputTerminal) {
- UsbACInputTerminal inDescr = (UsbACInputTerminal) descriptor;
+ if (descriptor instanceof UsbACTerminal) {
+ UsbACTerminal inDescr = (UsbACTerminal) descriptor;
if (inDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_IN_MIC
|| inDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_BIDIR_HEADSET
|| inDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_BIDIR_UNDEFINED
@@ -284,7 +311,7 @@ public class UsbDescriptorParser {
break;
}
} else {
- Log.w(TAG, "Undefined Audio Input terminal l:" + descriptor.getLength()
+ Log.w(TAG, "Undefined Audio Input terminal l: " + descriptor.getLength()
+ " t:0x" + Integer.toHexString(descriptor.getType()));
}
}
@@ -295,8 +322,8 @@ public class UsbDescriptorParser {
getACInterfaceDescriptors(UsbACInterface.ACI_OUTPUT_TERMINAL,
UsbACInterface.AUDIO_AUDIOCONTROL);
for (UsbDescriptor descriptor : acDescriptors) {
- if (descriptor instanceof UsbACOutputTerminal) {
- UsbACOutputTerminal outDescr = (UsbACOutputTerminal) descriptor;
+ if (descriptor instanceof UsbACTerminal) {
+ UsbACTerminal outDescr = (UsbACTerminal) descriptor;
if (outDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_OUT_SPEAKER
|| outDescr.getTerminalType()
== UsbTerminalTypes.TERMINAL_OUT_HEADPHONES
@@ -305,7 +332,7 @@ public class UsbDescriptorParser {
break;
}
} else {
- Log.w(TAG, "Undefined Audio Output terminal l:" + descriptor.getLength()
+ Log.w(TAG, "Undefined Audio Output terminal l: " + descriptor.getLength()
+ " t:0x" + Integer.toHexString(descriptor.getType()));
}
}
@@ -328,6 +355,8 @@ public class UsbDescriptorParser {
* to count on the peripheral being a headset.
*/
public boolean isInputHeadset() {
+ // TEMP
+ Log.i(TAG, "---- isInputHeadset() prob:" + (getInputHeadsetProbability() * 100f) + "%");
return getInputHeadsetProbability() >= IN_HEADSET_TRIGGER;
}
@@ -348,8 +377,8 @@ public class UsbDescriptorParser {
getACInterfaceDescriptors(UsbACInterface.ACI_OUTPUT_TERMINAL,
UsbACInterface.AUDIO_AUDIOCONTROL);
for (UsbDescriptor descriptor : acDescriptors) {
- if (descriptor instanceof UsbACOutputTerminal) {
- UsbACOutputTerminal outDescr = (UsbACOutputTerminal) descriptor;
+ if (descriptor instanceof UsbACTerminal) {
+ UsbACTerminal outDescr = (UsbACTerminal) descriptor;
if (outDescr.getTerminalType() == UsbTerminalTypes.TERMINAL_OUT_SPEAKER
|| outDescr.getTerminalType()
== UsbTerminalTypes.TERMINAL_OUT_HEADPHONES
@@ -358,7 +387,7 @@ public class UsbDescriptorParser {
break;
}
} else {
- Log.w(TAG, "Undefined Audio Output terminal l:" + descriptor.getLength()
+ Log.w(TAG, "Undefined Audio Output terminal l: " + descriptor.getLength()
+ " t:0x" + Integer.toHexString(descriptor.getType()));
}
}
@@ -381,6 +410,8 @@ public class UsbDescriptorParser {
* to count on the peripheral being a headset.
*/
public boolean isOutputHeadset() {
+ // TEMP
+ Log.i(TAG, "---- isOutputHeadset() prob:" + (getOutputHeadsetProbability() * 100f) + "%");
return getOutputHeadsetProbability() >= OUT_HEADSET_TRIGGER;
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
index 90848caba852..d5cb89ea82e6 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbDeviceDescriptor.java
@@ -15,13 +15,20 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+import com.android.server.usb.descriptors.report.UsbStrings;
+
/**
* @hide
* A USB Device Descriptor.
* see usb11.pdf section 9.6.1
*/
-/* public */ public class UsbDeviceDescriptor extends UsbDescriptor {
- private static final String TAG = "Device";
+public final class UsbDeviceDescriptor extends UsbDescriptor {
+ private static final String TAG = "UsbDeviceDescriptor";
+
+ public static final int USBSPEC_1_0 = 0x0100;
+ public static final int USBSPEC_1_1 = 0x0110;
+ public static final int USBSPEC_2_0 = 0x0200;
private int mSpec; // 2:2 bcdUSB 2 BCD USB Specification Number - BCD
private byte mDevClass; // 4:1 class code
@@ -39,6 +46,7 @@ package com.android.server.usb.descriptors;
UsbDeviceDescriptor(int length, byte type) {
super(length, type);
+ mHierarchyLevel = 1;
}
public int getSpec() {
@@ -91,14 +99,14 @@ package com.android.server.usb.descriptors;
@Override
public int parseRawDescriptors(ByteStream stream) {
- mSpec = stream.unpackUsbWord();
+ mSpec = stream.unpackUsbShort();
mDevClass = stream.getByte();
mDevSubClass = stream.getByte();
mProtocol = stream.getByte();
mPacketSize = stream.getByte();
- mVendorID = stream.unpackUsbWord();
- mProductID = stream.unpackUsbWord();
- mDeviceRelease = stream.unpackUsbWord();
+ mVendorID = stream.unpackUsbShort();
+ mProductID = stream.unpackUsbShort();
+ mDeviceRelease = stream.unpackUsbShort();
mMfgIndex = stream.getByte();
mProductIndex = stream.getByte();
mSerialNum = stream.getByte();
@@ -106,4 +114,35 @@ package com.android.server.usb.descriptors;
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+
+ int spec = getSpec();
+ canvas.writeListItem("Spec: " + ReportCanvas.getBCDString(spec));
+
+ byte devClass = getDevClass();
+ String classStr = UsbStrings.getClassName(devClass);
+ byte devSubClass = getDevSubClass();
+ String subClasStr = UsbStrings.getClassName(devSubClass);
+ canvas.writeListItem("Class " + devClass + ": " + classStr + " Subclass"
+ + devSubClass + ": " + subClasStr);
+ canvas.writeListItem("Vendor ID: " + ReportCanvas.getHexString(getVendorID())
+ + " Product ID: " + ReportCanvas.getHexString(getProductID())
+ + " Product Release: " + ReportCanvas.getBCDString(getDeviceRelease()));
+
+ byte mfgIndex = getMfgIndex();
+ String manufacturer =
+ UsbDescriptor.getUsbDescriptorString(canvas.getConnection(), mfgIndex);
+ byte productIndex = getProductIndex();
+ String product =
+ UsbDescriptor.getUsbDescriptorString(canvas.getConnection(), productIndex);
+
+ canvas.writeListItem("Manufacturer " + mfgIndex + ": " + manufacturer
+ + " Product " + productIndex + ": " + product);
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java
index def670093e6e..6322fbe8b45b 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbEndpointDescriptor.java
@@ -15,36 +15,38 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* A Usb Endpoint Descriptor.
* see usb11.pdf section 9.6.4
*/
public class UsbEndpointDescriptor extends UsbDescriptor {
- private static final String TAG = "EndPoint";
+ private static final String TAG = "UsbEndpointDescriptor";
- public static final byte MASK_ENDPOINT_ADDRESS = 0b0001111;
- public static final byte MASK_ENDPOINT_DIRECTION = (byte) 0b10000000;
- public static final byte DIRECTION_OUTPUT = 0x00;
- public static final byte DIRECTION_INPUT = (byte) 0x80;
+ public static final byte MASK_ENDPOINT_ADDRESS = 0b0001111;
+ public static final byte MASK_ENDPOINT_DIRECTION = (byte) 0b10000000;
+ public static final byte DIRECTION_OUTPUT = 0x00;
+ public static final byte DIRECTION_INPUT = (byte) 0x80;
public static final byte MASK_ATTRIBS_TRANSTYPE = 0b00000011;
- public static final byte TRANSTYPE_CONTROL = 0x00;
- public static final byte TRANSTYPE_ISO = 0x01;
- public static final byte TRANSTYPE_BULK = 0x02;
- public static final byte TRANSTYPE_INTERRUPT = 0x03;
-
- public static final byte MASK_ATTRIBS_SYNCTYPE = 0b00001100;
- public static final byte SYNCTYPE_NONE = 0b00000000;
- public static final byte SYNCTYPE_ASYNC = 0b00000100;
- public static final byte SYNCTYPE_ADAPTSYNC = 0b00001000;
- public static final byte SYNCTYPE_RESERVED = 0b00001100;
-
- public static final byte MASK_ATTRIBS_USEAGE = 0b00110000;
- public static final byte USEAGE_DATA = 0b00000000;
- public static final byte USEAGE_FEEDBACK = 0b00010000;
- public static final byte USEAGE_EXPLICIT = 0b00100000;
- public static final byte USEAGE_RESERVED = 0b00110000;
+ public static final byte TRANSTYPE_CONTROL = 0x00;
+ public static final byte TRANSTYPE_ISO = 0x01;
+ public static final byte TRANSTYPE_BULK = 0x02;
+ public static final byte TRANSTYPE_INTERRUPT = 0x03;
+
+ public static final byte MASK_ATTRIBS_SYNCTYPE = 0b00001100;
+ public static final byte SYNCTYPE_NONE = 0b00000000;
+ public static final byte SYNCTYPE_ASYNC = 0b00000100;
+ public static final byte SYNCTYPE_ADAPTSYNC = 0b00001000;
+ public static final byte SYNCTYPE_RESERVED = 0b00001100;
+
+ public static final byte MASK_ATTRIBS_USEAGE = 0b00110000;
+ public static final byte USEAGE_DATA = 0b00000000;
+ public static final byte USEAGE_FEEDBACK = 0b00010000;
+ public static final byte USEAGE_EXPLICIT = 0b00100000;
+ public static final byte USEAGE_RESERVED = 0b00110000;
private byte mEndpointAddress; // 2:1 Endpoint Address
// Bits 0..3b Endpoint Number.
@@ -76,6 +78,7 @@ public class UsbEndpointDescriptor extends UsbDescriptor {
public UsbEndpointDescriptor(int length, byte type) {
super(length, type);
+ mHierarchyLevel = 4;
}
public byte getEndpointAddress() {
@@ -106,7 +109,7 @@ public class UsbEndpointDescriptor extends UsbDescriptor {
public int parseRawDescriptors(ByteStream stream) {
mEndpointAddress = stream.getByte();
mAttributes = stream.getByte();
- mPacketSize = stream.unpackUsbWord();
+ mPacketSize = stream.unpackUsbShort();
mInterval = stream.getByte();
if (mLength == 9) {
mRefresh = stream.getByte();
@@ -114,4 +117,76 @@ public class UsbEndpointDescriptor extends UsbDescriptor {
}
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+
+ byte address = getEndpointAddress();
+ canvas.writeListItem("Address: "
+ + ReportCanvas.getHexString(address & UsbEndpointDescriptor.MASK_ENDPOINT_ADDRESS)
+ + ((address & UsbEndpointDescriptor.MASK_ENDPOINT_DIRECTION)
+ == UsbEndpointDescriptor.DIRECTION_OUTPUT ? " [out]" : " [in]"));
+
+ byte attributes = getAttributes();
+ canvas.openListItem();
+ canvas.write("Attributes: " + ReportCanvas.getHexString(attributes) + " ");
+ switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE) {
+ case UsbEndpointDescriptor.TRANSTYPE_CONTROL:
+ canvas.write("Control");
+ break;
+ case UsbEndpointDescriptor.TRANSTYPE_ISO:
+ canvas.write("Iso");
+ break;
+ case UsbEndpointDescriptor.TRANSTYPE_BULK:
+ canvas.write("Bulk");
+ break;
+ case UsbEndpointDescriptor.TRANSTYPE_INTERRUPT:
+ canvas.write("Interrupt");
+ break;
+ }
+ canvas.closeListItem();
+
+ // These flags are only relevant for ISO transfer type
+ if ((attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE)
+ == UsbEndpointDescriptor.TRANSTYPE_ISO) {
+ canvas.openListItem();
+ canvas.write("Aync: ");
+ switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_SYNCTYPE) {
+ case UsbEndpointDescriptor.SYNCTYPE_NONE:
+ canvas.write("NONE");
+ break;
+ case UsbEndpointDescriptor.SYNCTYPE_ASYNC:
+ canvas.write("ASYNC");
+ break;
+ case UsbEndpointDescriptor.SYNCTYPE_ADAPTSYNC:
+ canvas.write("ADAPTIVE ASYNC");
+ break;
+ }
+ canvas.closeListItem();
+
+ canvas.openListItem();
+ canvas.write("Useage: ");
+ switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_USEAGE) {
+ case UsbEndpointDescriptor.USEAGE_DATA:
+ canvas.write("DATA");
+ break;
+ case UsbEndpointDescriptor.USEAGE_FEEDBACK:
+ canvas.write("FEEDBACK");
+ break;
+ case UsbEndpointDescriptor.USEAGE_EXPLICIT:
+ canvas.write("EXPLICIT FEEDBACK");
+ break;
+ case UsbEndpointDescriptor.USEAGE_RESERVED:
+ canvas.write("RESERVED");
+ break;
+ }
+ canvas.closeListItem();
+ }
+ canvas.writeListItem("Package Size: " + getPacketSize());
+ canvas.writeListItem("Interval: " + getInterval());
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java
index 56c07ec9a071..b4cc87e096df 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbHIDDescriptor.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* A USB HID (Human Interface Descriptor).
* see HID1_11.pdf - 6.2.1
*/
-public class UsbHIDDescriptor extends UsbDescriptor {
- private static final String TAG = "HID";
+public final class UsbHIDDescriptor extends UsbDescriptor {
+ private static final String TAG = "UsbHIDDescriptor";
private int mRelease; // 2:2 the HID Class Specification release.
private byte mCountryCode; // 4:1 country code of the localized hardware.
@@ -35,6 +37,7 @@ public class UsbHIDDescriptor extends UsbDescriptor {
public UsbHIDDescriptor(int length, byte type) {
super(length, type);
+ mHierarchyLevel = 3;
}
public int getRelease() {
@@ -59,12 +62,24 @@ public class UsbHIDDescriptor extends UsbDescriptor {
@Override
public int parseRawDescriptors(ByteStream stream) {
- mRelease = stream.unpackUsbWord();
+ mRelease = stream.unpackUsbShort();
mCountryCode = stream.getByte();
mNumDescriptors = stream.getByte();
mDescriptorType = stream.getByte();
- mDescriptorLen = stream.unpackUsbWord();
+ mDescriptorLen = stream.unpackUsbShort();
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.openList();
+ canvas.writeListItem("Spec: " + ReportCanvas.getBCDString(getRelease()));
+ canvas.writeListItem("Type: " + ReportCanvas.getBCDString(getDescriptorType()));
+ canvas.writeListItem("" + getNumDescriptors() + " Descriptors Len: "
+ + getDescriptorLen());
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java b/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java
index 4b18a01b1c8b..d680e543693a 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceAssoc.java
@@ -15,14 +15,16 @@
*/
package com.android.server.usb.descriptors;
+// import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* A USB Interface Association Descriptor.
* found this one here: http://www.usb.org/developers/docs/whitepapers/iadclasscode_r10.pdf
* also: https://msdn.microsoft.com/en-us/library/windows/hardware/ff540054(v=vs.85).aspx
*/
-public class UsbInterfaceAssoc extends UsbDescriptor {
- private static final String TAG = "InterfaceAssoc";
+public final class UsbInterfaceAssoc extends UsbDescriptor {
+ private static final String TAG = "UsbInterfaceAssoc";
private byte mFirstInterface;
private byte mInterfaceCount;
@@ -70,4 +72,11 @@ public class UsbInterfaceAssoc extends UsbDescriptor {
return mLength;
}
+
+ // TODO - Report fields
+// @Override
+// public void report(ReportCanvas canvas) {
+// super.report(canvas);
+//
+// }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java b/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java
index 21b5e0cbaa1b..4eef6caf5a60 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbInterfaceDescriptor.java
@@ -15,13 +15,16 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+import com.android.server.usb.descriptors.report.UsbStrings;
+
/**
* @hide
* A common super-class for all USB Interface Descritor subtypes.
* see usb11.pdf section 9.6.3
*/
public class UsbInterfaceDescriptor extends UsbDescriptor {
- private static final String TAG = "Interface";
+ private static final String TAG = "UsbInterfaceDescriptor";
protected byte mInterfaceNumber; // 2:1 Number of Interface
protected byte mAlternateSetting; // 3:1 Value used to select alternative setting
@@ -33,6 +36,7 @@ public class UsbInterfaceDescriptor extends UsbDescriptor {
UsbInterfaceDescriptor(int length, byte type) {
super(length, type);
+ mHierarchyLevel = 3;
}
@Override
@@ -75,4 +79,27 @@ public class UsbInterfaceDescriptor extends UsbDescriptor {
public byte getDescrIndex() {
return mDescrIndex;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ byte usbClass = getUsbClass();
+ byte usbSubclass = getUsbSubclass();
+ byte protocol = getProtocol();
+ String className = UsbStrings.getClassName(usbClass);
+ String subclassName = "";
+ if (usbClass == UsbDescriptor.CLASSID_AUDIO) {
+ subclassName = UsbStrings.getAudioSubclassName(usbSubclass);
+ }
+
+ canvas.openList();
+ canvas.writeListItem("Interface #" + getInterfaceNumber());
+ canvas.writeListItem("Class: " + ReportCanvas.getHexString(usbClass) + ": " + className);
+ canvas.writeListItem("Subclass: "
+ + ReportCanvas.getHexString(usbSubclass) + ": " + subclassName);
+ canvas.writeListItem("Protocol: " + protocol + ": " + ReportCanvas.getHexString(protocol));
+ canvas.writeListItem("Endpoints: " + getNumEndpoints());
+ canvas.closeList();
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java
index 4452b23cb6ae..85a3e6802ff7 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiHeader.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Midi Streaming Interface.
* see midi10.pdf section 6.1.2.1
*/
-public class UsbMSMidiHeader extends UsbACInterface {
- private static final String TAG = "MSMidiHeader";
+public final class UsbMSMidiHeader extends UsbACInterface {
+ private static final String TAG = "UsbMSMidiHeader";
public UsbMSMidiHeader(int length, byte type, byte subtype, byte subclass) {
super(length, type, subtype, subclass);
@@ -33,4 +35,13 @@ public class UsbMSMidiHeader extends UsbACInterface {
stream.advance(mLength - stream.getReadCount());
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.writeHeader(3, "MS Midi Header: " + ReportCanvas.getHexString(getType())
+ + " SubType: " + ReportCanvas.getHexString(getSubclass())
+ + " Length: " + getLength());
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java
index 2d33ba7727dd..1d5cbf2b5c99 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiInputJack.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Midi Input Jack Interface.
* see midi10.pdf section B.4.3
*/
-public class UsbMSMidiInputJack extends UsbACInterface {
- private static final String TAG = "MSMidiInputJack";
+public final class UsbMSMidiInputJack extends UsbACInterface {
+ private static final String TAG = "UsbMSMidiInputJack";
UsbMSMidiInputJack(int length, byte type, byte subtype, byte subclass) {
super(length, type, subtype, subclass);
@@ -33,4 +35,13 @@ public class UsbMSMidiInputJack extends UsbACInterface {
stream.advance(mLength - stream.getReadCount());
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.writeHeader(3, "MS Midi Input Jack: " + ReportCanvas.getHexString(getType())
+ + " SubType: " + ReportCanvas.getHexString(getSubclass())
+ + " Length: " + getLength());
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java
index bd2dc11d57df..9f50240a94ca 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbMSMidiOutputJack.java
@@ -15,13 +15,15 @@
*/
package com.android.server.usb.descriptors;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
/**
* @hide
* An audio class-specific Midi Output Jack Interface.
* see midi10.pdf section B.4.4
*/
-public class UsbMSMidiOutputJack extends UsbACInterface {
- private static final String TAG = "MSMidiOutputJack";
+public final class UsbMSMidiOutputJack extends UsbACInterface {
+ private static final String TAG = "UsbMSMidiOutputJack";
public UsbMSMidiOutputJack(int length, byte type, byte subtype, byte subclass) {
super(length, type, subtype, subclass);
@@ -33,4 +35,13 @@ public class UsbMSMidiOutputJack extends UsbACInterface {
stream.advance(mLength - stream.getReadCount());
return mLength;
}
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ super.report(canvas);
+
+ canvas.writeHeader(3, "MS Midi Output Jack: " + ReportCanvas.getHexString(getType())
+ + " SubType: " + ReportCanvas.getHexString(getSubclass())
+ + " Length: " + getLength());
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java b/services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java
index b5214625126a..9bd6cb942888 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbTerminalTypes.java
@@ -20,8 +20,8 @@ package com.android.server.usb.descriptors;
* A class for decoding information in Terminal Descriptors.
* see termt10.pdf
*/
-public class UsbTerminalTypes {
- private static final String TAG = "TerminalTypes";
+public final class UsbTerminalTypes {
+ private static final String TAG = "UsbTerminalTypes";
// USB
public static final int TERMINAL_USB_STREAMING = 0x0101;
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java b/services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java
index a6fe8bba3508..6e6dccf00613 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbUnknown.java
@@ -19,8 +19,8 @@ package com.android.server.usb.descriptors;
* @hide
* A holder for any unrecognized descriptor encountered in the descriptor stream.
*/
-public class UsbUnknown extends UsbDescriptor {
- static final String TAG = "Unknown";
+public final class UsbUnknown extends UsbDescriptor {
+ static final String TAG = "UsbUnknown";
public UsbUnknown(int length, byte type) {
super(length, type);
diff --git a/services/usb/java/com/android/server/usb/descriptors/report/HTMLReportCanvas.java b/services/usb/java/com/android/server/usb/descriptors/report/HTMLReportCanvas.java
new file mode 100644
index 000000000000..99ebccade735
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/report/HTMLReportCanvas.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.report;
+
+import android.hardware.usb.UsbDeviceConnection;
+
+/**
+ * @hide
+ * A concrete implementation of ReportCanvas class which generates HTML.
+ */
+public final class HTMLReportCanvas extends ReportCanvas {
+ private static final String TAG = "HTMLReportCanvas";
+
+ private final StringBuilder mStringBuilder;
+
+ /**
+ * Constructor. Connects HTML output to the provided StringBuilder.
+ * @param connection The USB connection object used to retrieve strings
+ * from the USB device.
+ * @param stringBuilder Generated output gets written into this object.
+ */
+ public HTMLReportCanvas(UsbDeviceConnection connection, StringBuilder stringBuilder) {
+ super(connection);
+
+ mStringBuilder = stringBuilder;
+ }
+
+ @Override
+ public void write(String text) {
+ mStringBuilder.append(text);
+ }
+
+ @Override
+ public void openHeader(int level) {
+ mStringBuilder.append("<h").append(level).append('>');
+ }
+
+ @Override
+ public void closeHeader(int level) {
+ mStringBuilder.append("</h").append(level).append('>');
+ }
+
+ // we can be cleverer (more clever?) with styles, but this will do for now.
+ @Override
+ public void openParagraph(boolean emphasis) {
+ if (emphasis) {
+ mStringBuilder.append("<p style=\"color:red\">");
+ } else {
+ mStringBuilder.append("<p>");
+ }
+ }
+
+ @Override
+ public void closeParagraph() {
+ mStringBuilder.append("</p>");
+ }
+
+ @Override
+ public void writeParagraph(String text, boolean inRed) {
+ openParagraph(inRed);
+ mStringBuilder.append(text);
+ closeParagraph();
+ }
+
+ @Override
+ public void openList() {
+ mStringBuilder.append("<ul>");
+ }
+
+ @Override
+ public void closeList() {
+ mStringBuilder.append("</ul>");
+ }
+
+ @Override
+ public void openListItem() {
+ mStringBuilder.append("<li>");
+ }
+
+ @Override
+ public void closeListItem() {
+ mStringBuilder.append("</li>");
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java b/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java
deleted file mode 100644
index c98789d880a0..000000000000
--- a/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java
+++ /dev/null
@@ -1,572 +0,0 @@
-/*
- * Copyright (C) 2017 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.usb.descriptors.report;
-
-import android.hardware.usb.UsbDeviceConnection;
-
-import com.android.server.usb.descriptors.UsbACAudioControlEndpoint;
-import com.android.server.usb.descriptors.UsbACAudioStreamEndpoint;
-import com.android.server.usb.descriptors.UsbACFeatureUnit;
-import com.android.server.usb.descriptors.UsbACHeader;
-import com.android.server.usb.descriptors.UsbACInputTerminal;
-import com.android.server.usb.descriptors.UsbACInterface;
-import com.android.server.usb.descriptors.UsbACMidiEndpoint;
-import com.android.server.usb.descriptors.UsbACMixerUnit;
-import com.android.server.usb.descriptors.UsbACOutputTerminal;
-import com.android.server.usb.descriptors.UsbACSelectorUnit;
-import com.android.server.usb.descriptors.UsbACTerminal;
-import com.android.server.usb.descriptors.UsbASFormat;
-import com.android.server.usb.descriptors.UsbASFormatI;
-import com.android.server.usb.descriptors.UsbASFormatII;
-import com.android.server.usb.descriptors.UsbASGeneral;
-import com.android.server.usb.descriptors.UsbConfigDescriptor;
-import com.android.server.usb.descriptors.UsbDescriptor;
-import com.android.server.usb.descriptors.UsbDeviceDescriptor;
-import com.android.server.usb.descriptors.UsbEndpointDescriptor;
-import com.android.server.usb.descriptors.UsbHIDDescriptor;
-import com.android.server.usb.descriptors.UsbInterfaceAssoc;
-import com.android.server.usb.descriptors.UsbInterfaceDescriptor;
-import com.android.server.usb.descriptors.UsbMSMidiHeader;
-import com.android.server.usb.descriptors.UsbMSMidiInputJack;
-import com.android.server.usb.descriptors.UsbMSMidiOutputJack;
-import com.android.server.usb.descriptors.UsbUnknown;
-
-/**
- * Implements the Reporter inteface to provide HTML reporting for UsbDescriptor subclasses.
- */
-public class HTMLReporter implements Reporter {
- private final StringBuilder mStringBuilder;
- private final UsbDeviceConnection mConnection;
-
- public HTMLReporter(StringBuilder stringBuilder, UsbDeviceConnection connection) {
- mStringBuilder = stringBuilder;
- mConnection = connection;
- }
-
- /*
- * HTML Helpers
- */
- private void writeHeader(int level, String text) {
- mStringBuilder
- .append("<h").append(level).append('>')
- .append(text)
- .append("</h").append(level).append('>');
- }
-
- private void openParagraph() {
- mStringBuilder.append("<p>");
- }
-
- private void closeParagraph() {
- mStringBuilder.append("</p>");
- }
-
- private void writeParagraph(String text) {
- openParagraph();
- mStringBuilder.append(text);
- closeParagraph();
- }
-
- private void openList() {
- mStringBuilder.append("<ul>");
- }
-
- private void closeList() {
- mStringBuilder.append("</ul>");
- }
-
- private void openListItem() {
- mStringBuilder.append("<li>");
- }
-
- private void closeListItem() {
- mStringBuilder.append("</li>");
- }
-
- private void writeListItem(String text) {
- openListItem();
- mStringBuilder.append(text);
- closeListItem();
- }
-
- /*
- * Data Formating Helpers
- */
- private static String getHexString(byte value) {
- return "0x" + Integer.toHexString(((int) value) & 0xFF).toUpperCase();
- }
-
- private static String getBCDString(int value) {
- int major = value >> 8;
- int minor = (value >> 4) & 0x0F;
- int subminor = value & 0x0F;
-
- return "" + major + "." + minor + subminor;
- }
-
- private static String getHexString(int value) {
- int intValue = value & 0xFFFF;
- return "0x" + Integer.toHexString(intValue).toUpperCase();
- }
-
- private void dumpHexArray(byte[] rawData, StringBuilder builder) {
- if (rawData != null) {
- // Assume the type and Length and perhaps sub-type have been displayed
- openParagraph();
- for (int index = 0; index < rawData.length; index++) {
- builder.append(getHexString(rawData[index]) + " ");
- }
- closeParagraph();
- }
- }
-
- /**
- * Decode ACTUAL UsbDescriptor sub classes and call type-specific report methods.
- */
- @Override
- public void report(UsbDescriptor descriptor) {
- if (descriptor instanceof UsbDeviceDescriptor) {
- tsReport((UsbDeviceDescriptor) descriptor);
- } else if (descriptor instanceof UsbConfigDescriptor) {
- tsReport((UsbConfigDescriptor) descriptor);
- } else if (descriptor instanceof UsbInterfaceDescriptor) {
- tsReport((UsbInterfaceDescriptor) descriptor);
- } else if (descriptor instanceof UsbEndpointDescriptor) {
- tsReport((UsbEndpointDescriptor) descriptor);
- } else if (descriptor instanceof UsbHIDDescriptor) {
- tsReport((UsbHIDDescriptor) descriptor);
- } else if (descriptor instanceof UsbACAudioControlEndpoint) {
- tsReport((UsbACAudioControlEndpoint) descriptor);
- } else if (descriptor instanceof UsbACAudioStreamEndpoint) {
- tsReport((UsbACAudioStreamEndpoint) descriptor);
- } else if (descriptor instanceof UsbACHeader) {
- tsReport((UsbACHeader) descriptor);
- } else if (descriptor instanceof UsbACFeatureUnit) {
- tsReport((UsbACFeatureUnit) descriptor);
- } else if (descriptor instanceof UsbACInputTerminal) {
- tsReport((UsbACInputTerminal) descriptor);
- } else if (descriptor instanceof UsbACOutputTerminal) {
- tsReport((UsbACOutputTerminal) descriptor);
- } else if (descriptor instanceof UsbACMidiEndpoint) {
- tsReport((UsbACMidiEndpoint) descriptor);
- } else if (descriptor instanceof UsbACMixerUnit) {
- tsReport((UsbACMixerUnit) descriptor);
- } else if (descriptor instanceof UsbACSelectorUnit) {
- tsReport((UsbACSelectorUnit) descriptor);
- } else if (descriptor instanceof UsbASFormatI) {
- tsReport((UsbASFormatI) descriptor);
- } else if (descriptor instanceof UsbASFormatII) {
- tsReport((UsbASFormatII) descriptor);
- } else if (descriptor instanceof UsbASFormat) {
- tsReport((UsbASFormat) descriptor);
- } else if (descriptor instanceof UsbASGeneral) {
- tsReport((UsbASGeneral) descriptor);
- } else if (descriptor instanceof UsbInterfaceAssoc) {
- tsReport((UsbInterfaceAssoc) descriptor);
- } else if (descriptor instanceof UsbMSMidiHeader) {
- tsReport((UsbMSMidiHeader) descriptor);
- } else if (descriptor instanceof UsbMSMidiInputJack) {
- tsReport((UsbMSMidiInputJack) descriptor);
- } else if (descriptor instanceof UsbMSMidiOutputJack) {
- tsReport((UsbMSMidiOutputJack) descriptor);
- } else if (descriptor instanceof UsbUnknown) {
- tsReport((UsbUnknown) descriptor);
- } else if (descriptor instanceof UsbACInterface) {
- tsReport((UsbACInterface) descriptor);
- } else if (descriptor instanceof UsbDescriptor) {
- tsReport((UsbDescriptor) descriptor);
- }
- }
-
- //
- // Type-specific report() implementations
- //
- private void tsReport(UsbDescriptor descriptor) {
- int length = descriptor.getLength();
- byte type = descriptor.getType();
- int status = descriptor.getStatus();
-
- String descTypeStr = UsbStrings.getDescriptorName(type);
- writeParagraph(descTypeStr + ":" + type + " l:" + length + " s:" + status);
- }
-
- private void tsReport(UsbDeviceDescriptor descriptor) {
- writeHeader(1, "Device len:" + descriptor.getLength());
- openList();
-
- int spec = descriptor.getSpec();
- writeListItem("spec:" + getBCDString(spec));
-
- byte devClass = descriptor.getDevClass();
- String classStr = UsbStrings.getClassName(devClass);
- byte devSubClass = descriptor.getDevSubClass();
- String subClasStr = UsbStrings.getClassName(devSubClass);
- writeListItem("class " + devClass + ":" + classStr + " subclass"
- + devSubClass + ":" + subClasStr);
- writeListItem("vendorID:" + descriptor.getVendorID()
- + " prodID:" + descriptor.getProductID()
- + " prodRel:" + getBCDString(descriptor.getDeviceRelease()));
-
- byte mfgIndex = descriptor.getMfgIndex();
- String manufacturer = UsbDescriptor.getUsbDescriptorString(mConnection, mfgIndex);
- byte productIndex = descriptor.getProductIndex();
- String product = UsbDescriptor.getUsbDescriptorString(mConnection, productIndex);
-
- writeListItem("mfg " + mfgIndex + ":" + manufacturer
- + " prod " + productIndex + ":" + product);
- closeList();
- }
-
- private void tsReport(UsbConfigDescriptor descriptor) {
- writeHeader(2, "Config #" + descriptor.getConfigValue()
- + " len:" + descriptor.getLength());
-
- openList();
- writeListItem(descriptor.getNumInterfaces() + " interfaces.");
- writeListItem("attribs:" + getHexString(descriptor.getAttribs()));
- closeList();
- }
-
- private void tsReport(UsbInterfaceDescriptor descriptor) {
- byte usbClass = descriptor.getUsbClass();
- byte usbSubclass = descriptor.getUsbSubclass();
- String descr = UsbStrings.getDescriptorName(descriptor.getType());
- String className = UsbStrings.getClassName(usbClass);
- String subclassName = "";
- if (usbClass == UsbDescriptor.CLASSID_AUDIO) {
- subclassName = UsbStrings.getAudioSubclassName(usbSubclass);
- }
-
- writeHeader(2, descr + " #" + descriptor.getInterfaceNumber()
- + " len:" + descriptor.getLength());
- String descrStr =
- UsbDescriptor.getUsbDescriptorString(mConnection, descriptor.getDescrIndex());
- if (descrStr.length() > 0) {
- mStringBuilder.append("<br>" + descrStr);
- }
- openList();
- writeListItem("class " + getHexString(usbClass) + ":" + className
- + " subclass " + getHexString(usbSubclass) + ":" + subclassName);
- writeListItem("" + descriptor.getNumEndpoints() + " endpoints");
- closeList();
- }
-
- private void tsReport(UsbEndpointDescriptor descriptor) {
- writeHeader(3, "Endpoint " + getHexString(descriptor.getType())
- + " len:" + descriptor.getLength());
- openList();
-
- byte address = descriptor.getEndpointAddress();
- writeListItem("address:"
- + getHexString(address & UsbEndpointDescriptor.MASK_ENDPOINT_ADDRESS)
- + ((address & UsbEndpointDescriptor.MASK_ENDPOINT_DIRECTION)
- == UsbEndpointDescriptor.DIRECTION_OUTPUT ? " [out]" : " [in]"));
-
- byte attributes = descriptor.getAttributes();
- openListItem();
- mStringBuilder.append("attribs:" + getHexString(attributes) + " ");
- switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE) {
- case UsbEndpointDescriptor.TRANSTYPE_CONTROL:
- mStringBuilder.append("Control");
- break;
- case UsbEndpointDescriptor.TRANSTYPE_ISO:
- mStringBuilder.append("Iso");
- break;
- case UsbEndpointDescriptor.TRANSTYPE_BULK:
- mStringBuilder.append("Bulk");
- break;
- case UsbEndpointDescriptor.TRANSTYPE_INTERRUPT:
- mStringBuilder.append("Interrupt");
- break;
- }
- closeListItem();
-
- // These flags are only relevant for ISO transfer type
- if ((attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE)
- == UsbEndpointDescriptor.TRANSTYPE_ISO) {
- openListItem();
- mStringBuilder.append("sync:");
- switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_SYNCTYPE) {
- case UsbEndpointDescriptor.SYNCTYPE_NONE:
- mStringBuilder.append("NONE");
- break;
- case UsbEndpointDescriptor.SYNCTYPE_ASYNC:
- mStringBuilder.append("ASYNC");
- break;
- case UsbEndpointDescriptor.SYNCTYPE_ADAPTSYNC:
- mStringBuilder.append("ADAPTIVE ASYNC");
- break;
- }
- closeListItem();
-
- openListItem();
- mStringBuilder.append("useage:");
- switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_USEAGE) {
- case UsbEndpointDescriptor.USEAGE_DATA:
- mStringBuilder.append("DATA");
- break;
- case UsbEndpointDescriptor.USEAGE_FEEDBACK:
- mStringBuilder.append("FEEDBACK");
- break;
- case UsbEndpointDescriptor.USEAGE_EXPLICIT:
- mStringBuilder.append("EXPLICIT FEEDBACK");
- break;
- case UsbEndpointDescriptor.USEAGE_RESERVED:
- mStringBuilder.append("RESERVED");
- break;
- }
- closeListItem();
- }
- writeListItem("package size:" + descriptor.getPacketSize());
- writeListItem("interval:" + descriptor.getInterval());
- closeList();
- }
-
- private void tsReport(UsbHIDDescriptor descriptor) {
- String descr = UsbStrings.getDescriptorName(descriptor.getType());
- writeHeader(2, descr + " len:" + descriptor.getLength());
- openList();
- writeListItem("spec:" + getBCDString(descriptor.getRelease()));
- writeListItem("type:" + getBCDString(descriptor.getDescriptorType()));
- writeListItem("descriptor.getNumDescriptors() descriptors len:"
- + descriptor.getDescriptorLen());
- closeList();
- }
-
- private void tsReport(UsbACAudioControlEndpoint descriptor) {
- writeHeader(3, "AC Audio Control Endpoint:" + getHexString(descriptor.getType())
- + " length:" + descriptor.getLength());
- }
-
- private void tsReport(UsbACAudioStreamEndpoint descriptor) {
- writeHeader(3, "AC Audio Streaming Endpoint:"
- + getHexString(descriptor.getType())
- + " length:" + descriptor.getLength());
- }
-
- private void tsReport(UsbACHeader descriptor) {
- tsReport((UsbACInterface) descriptor);
-
- openList();
- writeListItem("spec:" + getBCDString(descriptor.getADCRelease()));
- int numInterfaces = descriptor.getNumInterfaces();
- writeListItem("" + numInterfaces + " interfaces");
- if (numInterfaces > 0) {
- openListItem();
- mStringBuilder.append("[");
- byte[] interfaceNums = descriptor.getInterfaceNums();
- if (numInterfaces != 0 && interfaceNums != null) {
- for (int index = 0; index < numInterfaces; index++) {
- mStringBuilder.append("" + interfaceNums[index]);
- if (index < numInterfaces - 1) {
- mStringBuilder.append(" ");
- }
- }
- }
- mStringBuilder.append("]");
- closeListItem();
- }
- writeListItem("controls:" + getHexString(descriptor.getControls()));
- closeList();
- }
-
- private void tsReport(UsbACFeatureUnit descriptor) {
- tsReport((UsbACInterface) descriptor);
- }
-
- private void tsReport(UsbACInterface descriptor) {
- String subClassName =
- descriptor.getSubclass() == UsbDescriptor.AUDIO_AUDIOCONTROL
- ? "AC Control"
- : "AC Streaming";
- byte subtype = descriptor.getSubtype();
- String subTypeStr = UsbStrings.getACControlInterfaceName(subtype);
- writeHeader(4, subClassName + " - " + getHexString(subtype)
- + ":" + subTypeStr + " len:" + descriptor.getLength());
- }
-
- private void tsReport(UsbACTerminal descriptor) {
- tsReport((UsbACInterface) descriptor);
- }
-
- private void tsReport(UsbACInputTerminal descriptor) {
- tsReport((UsbACTerminal) descriptor);
-
- openList();
- writeListItem("ID:" + getHexString(descriptor.getTerminalID()));
- int terminalType = descriptor.getTerminalType();
- writeListItem("Type:<b>" + getHexString(terminalType) + ":"
- + UsbStrings.getTerminalName(terminalType) + "</b>");
- writeListItem("AssocTerminal:" + getHexString(descriptor.getAssocTerminal()));
- writeListItem("" + descriptor.getNrChannels() + " chans. config:"
- + getHexString(descriptor.getChannelConfig()));
- closeList();
- }
-
- private void tsReport(UsbACOutputTerminal descriptor) {
- tsReport((UsbACTerminal) descriptor);
-
- openList();
- writeListItem("ID:" + getHexString(descriptor.getTerminalID()));
- int terminalType = descriptor.getTerminalType();
- writeListItem("Type:<b>" + getHexString(terminalType) + ":"
- + UsbStrings.getTerminalName(terminalType) + "</b>");
- writeListItem("AssocTerminal:" + getHexString(descriptor.getAssocTerminal()));
- writeListItem("Source:" + getHexString(descriptor.getSourceID()));
- closeList();
- }
-
- private void tsReport(UsbACMidiEndpoint descriptor) {
- writeHeader(3, "AC Midi Endpoint:" + getHexString(descriptor.getType())
- + " length:" + descriptor.getLength());
- openList();
- writeListItem("" + descriptor.getNumJacks() + " jacks.");
- closeList();
- }
-
- private void tsReport(UsbACMixerUnit descriptor) {
- tsReport((UsbACInterface) descriptor);
- openList();
-
- writeListItem("Unit ID:" + getHexString(descriptor.getUnitID()));
- byte numInputs = descriptor.getNumInputs();
- byte[] inputIDs = descriptor.getInputIDs();
- openListItem();
- mStringBuilder.append("Num Inputs:" + numInputs + " [");
- for (int input = 0; input < numInputs; input++) {
- mStringBuilder.append("" + getHexString(inputIDs[input]));
- if (input < numInputs - 1) {
- mStringBuilder.append(" ");
- }
- }
- mStringBuilder.append("]");
- closeListItem();
-
- writeListItem("Num Outputs:" + descriptor.getNumOutputs());
- writeListItem("Chan Config:" + getHexString(descriptor.getChannelConfig()));
-
- byte[] controls = descriptor.getControls();
- openListItem();
- mStringBuilder.append("controls:" + controls.length + " [");
- for (int ctrl = 0; ctrl < controls.length; ctrl++) {
- mStringBuilder.append("" + controls[ctrl]);
- if (ctrl < controls.length - 1) {
- mStringBuilder.append(" ");
- }
- }
- mStringBuilder.append("]");
- closeListItem();
- closeList();
- // byte mChanNameID; // First channel name string descriptor ID
- // byte mNameID; // string descriptor ID of mixer name
- }
-
- private void tsReport(UsbACSelectorUnit descriptor) {
- tsReport((UsbACInterface) descriptor);
- }
-
- private void tsReport(UsbASFormat descriptor) {
- writeHeader(4, "AC Streaming Format "
- + (descriptor.getFormatType() == UsbASFormat.FORMAT_TYPE_I ? "I" : "II")
- + " - " + getHexString(descriptor.getSubtype()) + ":"
- + " len:" + descriptor.getLength());
- }
-
- private void tsReport(UsbASFormatI descriptor) {
- tsReport((UsbASFormat) descriptor);
- openList();
- writeListItem("chans:" + descriptor.getNumChannels());
- writeListItem("subframe size:" + descriptor.getSubframeSize());
- writeListItem("bit resolution:" + descriptor.getBitResolution());
- byte sampleFreqType = descriptor.getSampleFreqType();
- int[] sampleRates = descriptor.getSampleRates();
- writeListItem("sample freq type:" + sampleFreqType);
- if (sampleFreqType == 0) {
- openList();
- writeListItem("min:" + sampleRates[0]);
- writeListItem("max:" + sampleRates[1]);
- closeList();
- } else {
- openList();
- for (int index = 0; index < sampleFreqType; index++) {
- writeListItem("" + sampleRates[index]);
- }
- closeList();
- }
- closeList();
- }
-
- private void tsReport(UsbASFormatII descriptor) {
- tsReport((UsbASFormat) descriptor);
- openList();
- writeListItem("max bit rate:" + descriptor.getMaxBitRate());
- writeListItem("samples per frame:" + descriptor.getMaxBitRate());
- byte sampleFreqType = descriptor.getSamFreqType();
- int[] sampleRates = descriptor.getSampleRates();
- writeListItem("sample freq type:" + sampleFreqType);
- if (sampleFreqType == 0) {
- openList();
- writeListItem("min:" + sampleRates[0]);
- writeListItem("max:" + sampleRates[1]);
- closeList();
- } else {
- openList();
- for (int index = 0; index < sampleFreqType; index++) {
- writeListItem("" + sampleRates[index]);
- }
- closeList();
- }
-
- closeList();
- }
-
- private void tsReport(UsbASGeneral descriptor) {
- tsReport((UsbACInterface) descriptor);
- openList();
- int formatTag = descriptor.getFormatTag();
- writeListItem("fmt:" + UsbStrings.getAudioFormatName(formatTag) + " - "
- + getHexString(formatTag));
- closeList();
- }
-
- private void tsReport(UsbInterfaceAssoc descriptor) {
- tsReport((UsbDescriptor) descriptor);
- }
-
- private void tsReport(UsbMSMidiHeader descriptor) {
- writeHeader(3, "MS Midi Header:" + getHexString(descriptor.getType())
- + " subType:" + getHexString(descriptor.getSubclass())
- + " length:" + descriptor.getSubclass());
- }
-
- private void tsReport(UsbMSMidiInputJack descriptor) {
- writeHeader(3, "MS Midi Input Jack:" + getHexString(descriptor.getType())
- + " subType:" + getHexString(descriptor.getSubclass())
- + " length:" + descriptor.getSubclass());
- }
-
- private void tsReport(UsbMSMidiOutputJack descriptor) {
- writeHeader(3, "MS Midi Output Jack:" + getHexString(descriptor.getType())
- + " subType:" + getHexString(descriptor.getSubclass())
- + " length:" + descriptor.getSubclass());
- }
-
- private void tsReport(UsbUnknown descriptor) {
- writeParagraph("<i><b>Unknown Descriptor " + getHexString(descriptor.getType())
- + " len:" + descriptor.getLength() + "</b></i>");
- dumpHexArray(descriptor.getRawData(), mStringBuilder);
- }
-}
diff --git a/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java b/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java
new file mode 100644
index 000000000000..9e0adf55d87b
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.report;
+
+import android.hardware.usb.UsbDeviceConnection;
+
+/**
+ * @hide
+ * Defines a class for generating report data in a variety of potential formats.
+ */
+public abstract class ReportCanvas {
+ private static final String TAG = "ReportCanvas";
+
+ private final UsbDeviceConnection mConnection;
+
+ /**
+ * Constructor.
+ * @param connection The USB connection object used to retrieve strings
+ * from the USB device.
+ */
+ public ReportCanvas(UsbDeviceConnection connection) {
+ mConnection = connection;
+ }
+
+ /**
+ * @returns the UsbDeviceConnection member (mConnection).
+ */
+ public UsbDeviceConnection getConnection() {
+ return mConnection;
+ }
+
+ /**
+ * Writes a plain string to the output.
+ */
+ public abstract void write(String text);
+
+ /**
+ * Opens a "header" formatted section in the output.
+ * @param level Specifies the logical level of the header.
+ */
+ public abstract void openHeader(int level);
+
+ /**
+ * Closes a "header" formatted section in the output.
+ * @param level Specifies the logical level of the header.
+ */
+ public abstract void closeHeader(int level);
+
+ /**
+ * Writes a "header" formatted string to the output.
+ * @param level Specifies the logical level of the header.
+ * @param text Specifies the text to display in the header.
+ */
+ public void writeHeader(int level, String text) {
+ openHeader(level);
+ write(text);
+ closeHeader(level);
+ }
+
+ /**
+ * Opens a paragraph construct in the output.
+ * @param emphasis Specifies whether the text in the paragraph should
+ * be displayed with "emphasis" formatting.
+ */
+ public abstract void openParagraph(boolean emphasis);
+
+ /**
+ * Closes a paragraph construct in the output.
+ */
+ public abstract void closeParagraph();
+
+ /**
+ * Writes a paragraph construct to the output.
+ * @param text The text to display with "paragraph" formatting.
+ * @param emphasis Specifies whether the text in the paragraph should
+ * be displayed with "emphasis" formatting.
+ */
+ public abstract void writeParagraph(String text, boolean emphasis);
+
+ /**
+ * Opens a "list" formatted section in the output.
+ */
+ public abstract void openList();
+
+ /**
+ * Closes a "list" formatted section in the output.
+ */
+ public abstract void closeList();
+
+ /**
+ * Opens a "list item" formatted section in the output.
+ */
+ public abstract void openListItem();
+
+ /**
+ * Closes a "list item" formatted section in the output.
+ */
+ public abstract void closeListItem();
+
+ /**
+ * Writes a "list item" formatted section in the output.
+ * @param text Specifies the text of the list item.
+ */
+ public void writeListItem(String text) {
+ openListItem();
+ write(text);
+ closeListItem();
+ }
+
+ /*
+ * Data Formating Helpers
+ */
+ /**
+ * Generates a hex representation of the specified byte value.
+ * @param value The value to format.
+ */
+ //TODO Look into renaming the "getHexString()" functions to be more
+ // representative of the types they handle.
+ public static String getHexString(byte value) {
+ return "0x" + Integer.toHexString(((int) value) & 0xFF).toUpperCase();
+ }
+
+ /**
+ * Generates a string representing a USB Binary-Coded Decimal value.
+ * @param valueBCD The value to format.
+ */
+ public static String getBCDString(int valueBCD) {
+ int major = (valueBCD >> 8) & 0x0F;
+ int minor = (valueBCD >> 4) & 0x0F;
+ int subminor = valueBCD & 0x0F;
+
+ return "" + major + "." + minor + subminor;
+ }
+
+ /**
+ * Generates a hex representation of the specified 16-bit integer value.
+ * @param value The value to format.
+ */
+ //TODO Look into renaming the "getHexString()" functions to be more
+ // representative of the types they handle.
+ public static String getHexString(int value) {
+ int intValue = value & 0xFFFF;
+ return "0x" + Integer.toHexString(intValue).toUpperCase();
+ }
+
+ /**
+ * Writes out the specified byte array to the provided StringBuilder.
+ * @param rawData The byte values.
+ * @param builder The StringBuilder to write text into.
+ */
+ public void dumpHexArray(byte[] rawData, StringBuilder builder) {
+ if (rawData != null) {
+ // Assume the type and Length and perhaps sub-type have been displayed
+ openParagraph(false);
+ for (int index = 0; index < rawData.length; index++) {
+ builder.append(getHexString(rawData[index]) + " ");
+ }
+ closeParagraph();
+ }
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java b/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java
deleted file mode 100644
index 2944c10796f6..000000000000
--- a/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2017 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.usb.descriptors.report;
-
-import com.android.server.usb.descriptors.UsbDescriptor;
-
-/**
- * Declares the Reporter interface to provide HTML reporting for UsbDescriptor (sub)classes.
- *
- * NOTE: It is the responsibility of the implementor of this interface to correctly
- * interpret/decode the SPECIFIC UsbDescriptor subclass (perhaps with 'instanceof') that is
- * passed and handle that in the appropriate manner. This appears to be a
- * not very object-oriented approach, and that is true. This approach DOES however move the
- * complexity and 'plumbing' of reporting into the Reporter implementation and avoids needing
- * a (trivial) type-specific call to 'report()' in each UsbDescriptor (sub)class, instead
- * having just one in the top-level UsbDescriptor class. It also removes the need to add new
- * type-specific 'report()' methods to be added to Reporter interface whenever a
- * new UsbDescriptor subclass is defined. This seems like a pretty good trade-off.
- *
- * See HTMLReporter.java in this package for an example of type decoding.
- */
-public interface Reporter {
- /**
- * Generate report for this UsbDescriptor descriptor
- */
- void report(UsbDescriptor descriptor);
-}
diff --git a/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java b/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java
index c13111b3e81c..be7c12e4a521 100644
--- a/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java
+++ b/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java
@@ -16,12 +16,16 @@
package com.android.server.usb.descriptors.report;
/**
- * Declares the interface for classes that provide reporting functionality.
- * (This is the double-indirection aspect of the "Visitor" pattern.
+ * @hide
*/
public interface Reporting {
/**
- * Declares the report method that UsbDescriptor subclasses call.
+ * TBD
*/
- void report(Reporter reporter);
+ void report(ReportCanvas canvas);
+
+ /**
+ * TBD
+ */
+ void shortReport(ReportCanvas canvas);
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java b/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java
new file mode 100644
index 000000000000..a43569d40a67
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.report;
+
+import android.hardware.usb.UsbDeviceConnection;
+
+/**
+ * @hide
+ * A concrete implementation of ReportCanvas class which generates "Plain Text" output.
+ */
+public final class TextReportCanvas extends ReportCanvas {
+ private static final String TAG = "TextReportCanvas";
+
+ private final StringBuilder mStringBuilder;
+ private int mListIndent;
+ private static final int LIST_INDENT_AMNT = 2;
+
+ /**
+ * Constructor. Connects plain-text output to the provided StringBuilder.
+ * @param connection The USB connection object used to retrieve strings
+ * from the USB device.
+ * @param stringBuilder Generated output gets written into this object.
+ */
+ public TextReportCanvas(UsbDeviceConnection connection, StringBuilder stringBuilder) {
+ super(connection);
+
+ mStringBuilder = stringBuilder;
+ }
+
+ private void writeListIndent() {
+ for (int space = 0; space < mListIndent; space++) {
+ mStringBuilder.append(" ");
+ }
+ }
+
+ @Override
+ public void write(String text) {
+ mStringBuilder.append(text);
+ }
+
+ @Override
+ public void openHeader(int level) {
+ writeListIndent();
+ mStringBuilder.append("[");
+ }
+
+ @Override
+ public void closeHeader(int level) {
+ mStringBuilder.append("]\n");
+ }
+
+ @Override
+ public void openParagraph(boolean emphasis) {
+ writeListIndent();
+ }
+
+ @Override
+ public void closeParagraph() {
+ mStringBuilder.append("\n");
+ }
+
+ @Override
+ public void writeParagraph(String text, boolean inRed) {
+ openParagraph(inRed);
+ if (inRed) {
+ mStringBuilder.append("*" + text + "*");
+ } else {
+ mStringBuilder.append(text);
+ }
+ closeParagraph();
+ }
+
+ @Override
+ public void openList() {
+ mListIndent += LIST_INDENT_AMNT;
+ }
+
+ @Override
+ public void closeList() {
+ mListIndent -= LIST_INDENT_AMNT;
+ }
+
+ @Override
+ public void openListItem() {
+ writeListIndent();
+ mStringBuilder.append("- ");
+ }
+
+ @Override
+ public void closeListItem() {
+ mStringBuilder.append("\n");
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java b/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java
index 0461150abd27..64ecebc29db6 100644
--- a/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java
+++ b/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java
@@ -16,6 +16,7 @@
package com.android.server.usb.descriptors.report;
import com.android.server.usb.descriptors.UsbACInterface;
+import com.android.server.usb.descriptors.UsbASFormat;
import com.android.server.usb.descriptors.UsbDescriptor;
import com.android.server.usb.descriptors.UsbTerminalTypes;
@@ -25,7 +26,7 @@ import java.util.HashMap;
* @hide
* A class to provide human-readable strings for various USB constants.
*/
-public class UsbStrings {
+public final class UsbStrings {
private static final String TAG = "UsbStrings";
private static HashMap<Byte, String> sDescriptorNames;
@@ -35,6 +36,11 @@ public class UsbStrings {
private static HashMap<Byte, String> sAudioSubclassNames;
private static HashMap<Integer, String> sAudioEncodingNames;
private static HashMap<Integer, String> sTerminalNames;
+ private static HashMap<Integer, String> sFormatNames;
+
+ static {
+ allocUsbStrings();
+ }
private static void initDescriptorNames() {
sDescriptorNames = new HashMap<Byte, String>();
@@ -70,6 +76,11 @@ public class UsbStrings {
sACControlInterfaceNames.put(UsbACInterface.ACI_FEATURE_UNIT, "Feature Unit");
sACControlInterfaceNames.put(UsbACInterface.ACI_PROCESSING_UNIT, "Processing Unit");
sACControlInterfaceNames.put(UsbACInterface.ACI_EXTENSION_UNIT, "Extension Unit");
+ sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_SOURCE, "Clock Source");
+ sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_SELECTOR, "Clock Selector");
+ sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_MULTIPLIER, "Clock Multiplier");
+ sACControlInterfaceNames.put(UsbACInterface.ACI_SAMPLE_RATE_CONVERTER,
+ "Sample Rate Converter");
}
private static void initACStreamingInterfaceNames() {
@@ -213,10 +224,33 @@ public class UsbStrings {
? name
: "Unknown Terminal Type 0x" + Integer.toHexString(terminalType);
}
+
+ private static void initFormatNames() {
+ sFormatNames = new HashMap<Integer, String>();
+
+ sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_I, "FORMAT_TYPE_I");
+ sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_II, "FORMAT_TYPE_II");
+ sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_III, "FORMAT_TYPE_III");
+ sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_IV, "FORMAT_TYPE_IV");
+ sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_I, "EXT_FORMAT_TYPE_I");
+ sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_II, "EXT_FORMAT_TYPE_II");
+ sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_III, "EXT_FORMAT_TYPE_III");
+ }
+
+ /**
+ * Retrieves the name for the specified format (encoding) type ID.
+ */
+ public static String getFormatName(int format) {
+ String name = sFormatNames.get(format);
+ return name != null
+ ? name
+ : "Unknown Format Type 0x" + Integer.toHexString(format);
+ }
+
/**
* Initializes string tables.
*/
- public static void allocUsbStrings() {
+ private static void allocUsbStrings() {
initDescriptorNames();
initACControlInterfaceNames();
initACStreamingInterfaceNames();
@@ -224,19 +258,7 @@ public class UsbStrings {
initAudioSubclassNames();
initAudioEncodingNames();
initTerminalNames();
- }
-
- /**
- * Initializes string tables.
- */
- public static void releaseUsbStrings() {
- sDescriptorNames = null;
- sACControlInterfaceNames = null;
- sACStreamingInterfaceNames = null;
- sClassNames = null;
- sAudioSubclassNames = null;
- sAudioEncodingNames = null;
- sTerminalNames = null;
+ initFormatNames();
}
/**
@@ -309,4 +331,11 @@ public class UsbStrings {
: "Unknown Format (encoding) ID [0x" + Integer.toHexString(formatID) + ":"
+ formatID + "]";
}
+
+ /**
+ * Retrieves the name for the specified USB audio interface subclass ID.
+ */
+ public static String getACInterfaceSubclassName(byte subClassID) {
+ return subClassID == UsbDescriptor.AUDIO_AUDIOCONTROL ? "AC Control" : "AC Streaming";
+ }
}
diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java
new file mode 100644
index 000000000000..6dbf415ce7f9
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.tree;
+
+import com.android.server.usb.descriptors.UsbACInterface;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * A tree node containing some sort-of Audio Class Descriptor.
+ */
+public final class UsbDescriptorsACInterfaceNode extends UsbDescriptorsTreeNode {
+ private static final String TAG = "UsbDescriptorsACInterfaceNode";
+
+ private final UsbACInterface mACInterface;
+
+ /**
+ * Constructor.
+ * @param acInterface The Audio Class Inteface object wrapped by this tree node.
+ */
+ public UsbDescriptorsACInterfaceNode(UsbACInterface acInterface) {
+ mACInterface = acInterface;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ canvas.writeListItem("AC Interface type: 0x"
+ + Integer.toHexString(mACInterface.getSubtype()));
+ canvas.openList();
+ mACInterface.report(canvas);
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java
new file mode 100644
index 000000000000..64f9496ae7c8
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.tree;
+
+import com.android.server.usb.descriptors.UsbConfigDescriptor;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+import java.util.ArrayList;
+
+/**
+ * @hide
+ * Represents a configuration in the descriptors tree.
+ */
+public final class UsbDescriptorsConfigNode extends UsbDescriptorsTreeNode {
+ private static final String TAG = "UsbDescriptorsConfigNode";
+
+ private final UsbConfigDescriptor mConfigDescriptor;
+
+ private final ArrayList<UsbDescriptorsInterfaceNode> mInterfaceNodes = new ArrayList<>();
+
+ /**
+ * Constructor.
+ * @param configDescriptor The Config Descriptor object wrapped by this tree node.
+ */
+ public UsbDescriptorsConfigNode(UsbConfigDescriptor configDescriptor) {
+ mConfigDescriptor = configDescriptor;
+ }
+
+ /**
+ * Adds the inteface node logical contained in this configuration.
+ * @param interfaceNode The inteface treenode to assocate with this configuration.
+ */
+ public void addInterfaceNode(UsbDescriptorsInterfaceNode interfaceNode) {
+ mInterfaceNodes.add(interfaceNode);
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ mConfigDescriptor.report(canvas);
+
+ canvas.openList();
+
+ // Interfaces
+ for (UsbDescriptorsInterfaceNode node : mInterfaceNodes) {
+ node.report(canvas);
+ }
+
+ canvas.closeList();
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java
new file mode 100644
index 000000000000..898a06ecdafc
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.tree;
+
+import com.android.server.usb.descriptors.UsbDeviceDescriptor;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+import java.util.ArrayList;
+
+/**
+ * @hide
+ * A class to contain THE device descriptor at the root of the tree.
+ */
+public final class UsbDescriptorsDeviceNode extends UsbDescriptorsTreeNode {
+ private static final String TAG = "UsbDescriptorsDeviceNode";
+
+ private final UsbDeviceDescriptor mDeviceDescriptor;
+
+ private final ArrayList<UsbDescriptorsConfigNode> mConfigNodes = new ArrayList<>();
+
+ /**
+ * Constructor.
+ * @param deviceDescriptor The Device Descriptor object wrapped by this tree node.
+ */
+ public UsbDescriptorsDeviceNode(UsbDeviceDescriptor deviceDescriptor) {
+ mDeviceDescriptor = deviceDescriptor;
+ }
+
+ /**
+ * Adds a Configuration node to the assocated device node.
+ */
+ public void addConfigDescriptorNode(UsbDescriptorsConfigNode configNode) {
+ mConfigNodes.add(configNode);
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ mDeviceDescriptor.report(canvas);
+ for (UsbDescriptorsConfigNode node : mConfigNodes) {
+ node.report(canvas);
+ }
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java
new file mode 100644
index 000000000000..72864172147e
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.tree;
+
+import com.android.server.usb.descriptors.UsbEndpointDescriptor;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+/**
+ * @hide
+ * Represents an endpoint in the descriptors tree.
+ */
+public final class UsbDescriptorsEndpointNode extends UsbDescriptorsTreeNode {
+ private static final String TAG = "UsbDescriptorsEndpointNode";
+
+ private final UsbEndpointDescriptor mEndpointDescriptor;
+
+ /**
+ * Constructor.
+ * @param endpointDescriptor The Device Descriptor object wrapped by this tree node.
+ */
+ public UsbDescriptorsEndpointNode(UsbEndpointDescriptor endpointDescriptor) {
+ mEndpointDescriptor = endpointDescriptor;
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ mEndpointDescriptor.report(canvas);
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java
new file mode 100644
index 000000000000..d49d88db9882
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.tree;
+
+import com.android.server.usb.descriptors.UsbInterfaceDescriptor;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+import java.util.ArrayList;
+
+/**
+ * @hide
+ * Represents an interface in the descriptors tree.
+ */
+public final class UsbDescriptorsInterfaceNode extends UsbDescriptorsTreeNode {
+ private static final String TAG = "UsbDescriptorsInterfaceNode";
+
+ private final UsbInterfaceDescriptor mInterfaceDescriptor;
+
+ private final ArrayList<UsbDescriptorsEndpointNode> mEndpointNodes = new ArrayList<>();
+ private final ArrayList<UsbDescriptorsACInterfaceNode> mACInterfaceNodes = new ArrayList<>();
+
+ /**
+ * Constructor.
+ * @param interfaceDescriptor The Interface Descriptor object wrapped by this tree node.
+ */
+ public UsbDescriptorsInterfaceNode(UsbInterfaceDescriptor interfaceDescriptor) {
+ mInterfaceDescriptor = interfaceDescriptor;
+ }
+
+ /**
+ * Adds an endpoint descriptor as a child of this interface node.
+ * @param endpointNode The endpoint descriptor node to add to this interface node.
+ */
+ public void addEndpointNode(UsbDescriptorsEndpointNode endpointNode) {
+ mEndpointNodes.add(endpointNode);
+ }
+
+ /**
+ * Adds an Audio-class interface descriptor as a child of this interface node.
+ * @param acInterfaceNode The audio-class descriptor node to add to this interface node.
+ */
+ public void addACInterfaceNode(UsbDescriptorsACInterfaceNode acInterfaceNode) {
+ mACInterfaceNodes.add(acInterfaceNode);
+ }
+
+ @Override
+ public void report(ReportCanvas canvas) {
+ mInterfaceDescriptor.report(canvas);
+
+ // Audio Class Interfaces
+ if (mACInterfaceNodes.size() > 0) {
+ canvas.writeParagraph("Audio Class Interfaces", false);
+ canvas.openList();
+ for (UsbDescriptorsACInterfaceNode node : mACInterfaceNodes) {
+ node.report(canvas);
+ }
+ canvas.closeList();
+ }
+
+ // Endpoints
+ if (mEndpointNodes.size() > 0) {
+ canvas.writeParagraph("Endpoints", false);
+ canvas.openList();
+ for (UsbDescriptorsEndpointNode node : mEndpointNodes) {
+ node.report(canvas);
+ }
+ canvas.closeList();
+ }
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java
new file mode 100644
index 000000000000..1aa30fa94f42
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.tree;
+
+import com.android.server.usb.descriptors.UsbACInterface;
+import com.android.server.usb.descriptors.UsbConfigDescriptor;
+import com.android.server.usb.descriptors.UsbDescriptor;
+import com.android.server.usb.descriptors.UsbDescriptorParser;
+import com.android.server.usb.descriptors.UsbDeviceDescriptor;
+import com.android.server.usb.descriptors.UsbEndpointDescriptor;
+import com.android.server.usb.descriptors.UsbInterfaceDescriptor;
+import com.android.server.usb.descriptors.report.ReportCanvas;
+
+import java.util.ArrayList;
+
+/*
+ * The general layout of the tree looks like this, though no guarentee about
+ * ordering of descriptors beyond the Device -> Config -> Interface.
+ *
+ * Device Descriptor
+ * +- Config Descriptor
+ * +- Interface Descriptor
+ * | +- Audio Class Interface
+ * | +- Audio Class Interface
+ * | +- Audio Class Interface
+ * | +- Endpoint Descriptor
+ * | +- Endpoint Descriptor
+ * +- Interface Descriptor
+ * +- Endpoint Descriptor
+ */
+/**
+ * @hide
+ *
+ * A class which builds a tree representation from the results of a (linear)
+ * parse of USB descriptors.
+ *
+ * @see {@link com.android.server.usb.descriptors.UsbDescriptorsParser UsbDescriptorsParser}
+ */
+public final class UsbDescriptorsTree {
+ private static final String TAG = "UsbDescriptorsTree";
+
+ private UsbDescriptorsDeviceNode mDeviceNode;
+ private UsbDescriptorsConfigNode mConfigNode; // being parsed
+ private UsbDescriptorsInterfaceNode mInterfaceNode; // being parsed
+
+ /**
+ * Adds THE device descriptor as the root of the tree.
+ */
+ private void addDeviceDescriptor(UsbDeviceDescriptor deviceDescriptor) {
+ mDeviceNode = new UsbDescriptorsDeviceNode(deviceDescriptor);
+ }
+
+ /**
+ * Adds A config descriptor to the tree.
+ */
+ private void addConfigDescriptor(UsbConfigDescriptor configDescriptor) {
+ mConfigNode = new UsbDescriptorsConfigNode(configDescriptor);
+ mDeviceNode.addConfigDescriptorNode(mConfigNode);
+ }
+
+ /**
+ * Adds AN interface descriptor to the current configuration in the tree.
+ */
+ private void addInterfaceDescriptor(UsbInterfaceDescriptor interfaceDescriptor) {
+ mInterfaceNode = new UsbDescriptorsInterfaceNode(interfaceDescriptor);
+ mConfigNode.addInterfaceNode(mInterfaceNode);
+ }
+
+ /**
+ * Adds an endpoint descriptor to the current interface in the tree.
+ */
+ private void addEndpointDescriptor(UsbEndpointDescriptor endpointDescriptor) {
+ mInterfaceNode.addEndpointNode(new UsbDescriptorsEndpointNode(endpointDescriptor));
+ }
+
+ /**
+ * Adds an audio-class interface descriptor to the current interface in the tree.
+ */
+ private void addACInterface(UsbACInterface acInterface) {
+ mInterfaceNode.addACInterfaceNode(new UsbDescriptorsACInterfaceNode(acInterface));
+ }
+
+ /**
+ * Parses the linear descriptor list contained in the parser argument, into a tree
+ * representation corresponding to the logical structure of the USB descriptors.
+ */
+ public void parse(UsbDescriptorParser parser) {
+
+ ArrayList<UsbDescriptor> descriptors = parser.getDescriptors();
+
+ for (int descrIndex = 0; descrIndex < descriptors.size(); descrIndex++) {
+ UsbDescriptor descriptor = descriptors.get(descrIndex);
+ switch (descriptor.getType()) {
+ //
+ // Basic Descriptors
+ //
+ case UsbDescriptor.DESCRIPTORTYPE_DEVICE:
+ addDeviceDescriptor((UsbDeviceDescriptor) descriptor);
+ break;
+
+ case UsbDescriptor.DESCRIPTORTYPE_CONFIG:
+ addConfigDescriptor((UsbConfigDescriptor) descriptor);
+ break;
+
+ case UsbDescriptor.DESCRIPTORTYPE_INTERFACE:
+ addInterfaceDescriptor((UsbInterfaceDescriptor) descriptor);
+ break;
+
+ case UsbDescriptor.DESCRIPTORTYPE_ENDPOINT:
+ addEndpointDescriptor((UsbEndpointDescriptor) descriptor);
+ break;
+
+ //
+ // Audio Class Descriptors
+ //
+ case UsbDescriptor.DESCRIPTORTYPE_AUDIO_INTERFACE:
+ addACInterface((UsbACInterface) descriptor);
+ break;
+
+ case UsbDescriptor.DESCRIPTORTYPE_AUDIO_ENDPOINT:
+ break;
+ }
+ }
+ }
+
+ /**
+ * Generate a report of the descriptors tree.
+ */
+ public void report(ReportCanvas canvas) {
+ mDeviceNode.report(canvas);
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java
new file mode 100644
index 000000000000..aca3cd907372
--- /dev/null
+++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2017 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.usb.descriptors.tree;
+
+import com.android.server.usb.descriptors.report.ReportCanvas;
+import com.android.server.usb.descriptors.report.Reporting;
+
+/**
+ * @hide
+ * A shared super class for UsbDescriptor tree nodes.
+ */
+public class UsbDescriptorsTreeNode implements Reporting {
+ private static final String TAG = "UsbDescriptorsTreeNode";
+
+ /**
+ * Implements generate a comprehehensive report of descriptor.
+ */
+ @Override
+ public void report(ReportCanvas canvas) {
+ }
+
+ /**
+ * Implements generate an abreviated report of descriptor.
+ */
+ @Override
+ public void shortReport(ReportCanvas canvas) {
+ }
+}
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 4ffacfd7056a..1569ac32128b 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -183,7 +183,7 @@ public class VoiceInteractionManagerService extends SystemService {
private final boolean mEnableService;
VoiceInteractionManagerServiceStub() {
- mEnableService = shouldEnableService(mContext.getResources());
+ mEnableService = shouldEnableService(mContext);
}
// TODO: VI Make sure the caller is the current user or profile
@@ -348,10 +348,15 @@ public class VoiceInteractionManagerService extends SystemService {
}
}
- private boolean shouldEnableService(Resources res) {
- // VoiceInteractionService should not be enabled on low ram devices unless it has the config flag.
- return !ActivityManager.isLowRamDeviceStatic() ||
- getForceVoiceInteractionServicePackage(res) != null;
+ private boolean shouldEnableService(Context context) {
+ // VoiceInteractionService should not be enabled on any low RAM devices
+ // or devices that have not declared the recognition feature, unless the
+ // device's configuration has explicitly set the config flag for a fixed
+ // voice interaction service.
+ return (!ActivityManager.isLowRamDeviceStatic()
+ && context.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_VOICE_RECOGNIZERS)) ||
+ getForceVoiceInteractionServicePackage(context.getResources()) != null;
}
private String getForceVoiceInteractionServicePackage(Resources res) {
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
index 3788cf331600..b040a6324dbb 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
@@ -20,6 +20,7 @@ import static android.app.ActivityManager.START_ASSISTANT_HIDDEN_SESSION;
import static android.app.ActivityManager.START_ASSISTANT_NOT_ACTIVE_SESSION;
import static android.app.ActivityManager.START_VOICE_HIDDEN_SESSION;
import static android.app.ActivityManager.START_VOICE_NOT_ACTIVE_SESSION;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
import android.app.ActivityManager;
import android.app.ActivityManager.StackId;
@@ -222,8 +223,8 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne
}
intent = new Intent(intent);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- ActivityOptions options = ActivityOptions.makeBasic();
- options.setLaunchStackId(StackId.ASSISTANT_STACK_ID);
+ final ActivityOptions options = ActivityOptions.makeBasic();
+ options.setLaunchActivityType(ACTIVITY_TYPE_ASSISTANT);
return mAm.startAssistantActivity(mComponent.getPackageName(), callingPid, callingUid,
intent, resolvedType, options.toBundle(), mUser);
} catch (RemoteException e) {