Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimized navigation with the three buttons #69

Closed
wants to merge 254 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
254 commits
Select commit Hold shift + click to select a range
9307ad7
SystemUI: Stop using marquee on qs tiles label
minaripenguin Sep 20, 2022
4d80781
[MASTER]: NativeMessageQueue: ensure nativeDestroy success
Sep 8, 2022
7ed9646
Fix the problem that system apps cannot drag
Sep 8, 2022
decff18
SystemUI: Fix SystemUI Crash
Jul 7, 2017
d79de23
base: Supress telephony crashing platform
neobuddy89 Feb 22, 2019
6ea17ea
privapp-permissions: Grant missing TelephonyProvider perm.
spezi77 Jan 19, 2022
6e9c34d
development: Address NPE when removing preferences out of developer o…
Sep 23, 2018
c3f5d56
ServiceRegistry: Don't throw an exception if OEM_LOCK is missing
Tortel Jan 27, 2019
082bdca
Fix incorrect context classloader initialization in system_server
Apr 6, 2017
0d7959b
fix error com.google.android.gms.persistent
IronSharpensIron2717 Nov 13, 2019
b4191d6
libs: hwui: Build using ThinLTO
mydongistiny Sep 29, 2019
80286a3
Parcel: fix memory leak
Oct 4, 2022
a194283
Not run hideDotView as an animation
Jul 27, 2022
2de8d97
Use `timeout -i` to distinguish cases where logcat is making progress.
enh-google Aug 8, 2022
3859818
Update HWUI to use GrGLMakeNativeInterface instead of deprecated GrGL…
bsalomon Mar 22, 2022
d2458f0
Recheck the condition before really killing
Jun 13, 2022
1c1f3b5
[Bugfix][Stability] Fix system_server kills itself by mistake.
Oct 12, 2022
9df19e4
UsageStatsService: ignore removed users in persistPendingEventsLocked()
ebiggers May 27, 2022
79cd4be
[NMS] Call isServiceTokenValidLocked with lock.
Jun 17, 2022
429d393
PowerStatsService: Prevent NPE in BatteryTrigger.
Sep 5, 2022
f944867
Fix potential NPE when callback remote animator
shawnlinboy Sep 22, 2022
2e4c7cf
[Bugfix] NPE on RuntimeInit uncaughtException
Nov 23, 2021
a037c73
Use package broadcast receiver to handle multiple users app for synci…
Sep 5, 2022
4a016dc
[Bugfix] Avoid Removing uid from mActiveUids again
Jan 19, 2021
3a44380
Initialize ContentObserver in startObserving().
Oct 10, 2022
0e8eedb
Change the default value of sync mode to NORMAL
Sep 13, 2022
8d56664
MessageQueue: remove leaked on-fd-event-listener
Sep 2, 2022
2704609
use Cloudflare DNS as the default fallback
thestinger Apr 2, 2018
17539ee
SystemUI: Skip screen-on animation in all scenarios
kdrag0n Dec 16, 2020
c282503
Fix crash when init QrCamera to start preview
shawnlinboy Oct 17, 2022
61e7dfc
SystemUI: Add missing location permission
neobuddy89 Oct 19, 2022
34ed422
PackageInfo: Optimize ApplicationInfo creation
kdrag0n Apr 6, 2021
8266f8e
Avoid setting unnecessary display state when booting.
jeraon Nov 16, 2021
b4f7b34
EventLog: Disable event writing in production builds
kdrag0n Apr 6, 2021
b663ebe
AOD: Sleep when proximity is covered for 3 secs
PMS22 Nov 30, 2019
b6376e3
KernelCpuUidActiveTimeReader: Do not spam log with negative active time
cjh1249131356 Apr 15, 2022
49e03b1
SystemUI: Name Cellular Tile based on carrier
Jun 7, 2018
e2ca072
SettingsLib: Make progressbar like OOS13
minaripenguin Oct 27, 2022
1986556
Keep the order of visible tasks in the same order as the system when …
Oct 20, 2022
03f4cc3
Fixed permananent failure behaviors
Oct 21, 2022
1f28070
AudioSystem: add missing native audio formats
Oct 28, 2022
1c3f463
Fixed ConcurrentModificationException in LockoutResetDispatcher
Oct 28, 2022
6a57226
Fix potential race condition problem
Oct 31, 2022
044d40f
Add interface for battery stats reset
neobuddy89 Oct 12, 2022
f8e6a76
BatteryStatsService: limit logspam
Oct 29, 2022
b28b596
Fix potential crash when exit splash screen
shawnlinboy Nov 9, 2022
67445a5
Fix NPE when finishing remote animation
miaojian2 Oct 19, 2022
03c0b0b
libandroid_defaults: use whole program vtables lto optimization
RealJohnGalt Nov 9, 2022
14f1f9b
Services: WM: Boost critical UI animations
minaripenguin Nov 10, 2022
4c4591f
SystemUI: Increase blur depth radius to 225px
minaripenguin Nov 14, 2022
460be58
ColorUtils: Prevent crash if alpha component is translucent
neobuddy89 Nov 14, 2022
3232c03
services: Increase boosting durations to 5ms
minaripenguin Nov 14, 2022
1d1edcd
SettingsLib: Redesign the switch widget
minaripenguin Nov 15, 2022
c0c40c3
SystemUI: Redesign reticker notification
Ghosuto Nov 16, 2022
a732990
Toast: Fix the concurrency problem of mAuthenticator
hupeng3 Oct 24, 2022
d453bd2
disable safe volume everywhere, not just the US
rustybird Apr 22, 2020
652bf52
Fix broken anchor tags.
bbadour Aug 10, 2022
04cc2c0
fixup! SystemUI: Allow Wi-Fi/cell tiles to co-exist with provider model
adithya2306 Apr 9, 2022
21f0a95
ViewConfiguration: Fix multi-thread safety issue
minaripenguin Nov 20, 2022
324d2a7
Revert "EventLog: Disable event writing in production builds"
aviraxp Nov 23, 2022
4b0b448
[Bugfix][Stability] Fix SystemUI NPE when ScreenDecorations is disabled
Aug 19, 2022
6239351
Fallback ESC to BACK
webgeek1234 Jul 26, 2020
874afcc
Added surface alpha color in reticker bg
drkphnx Nov 28, 2022
0c09482
hwui: Disable vtable optimization
minaripenguin Nov 27, 2022
eaec7d9
Introduce trimMemory to AppIconCacheManager
shawnlinboy Nov 18, 2022
110aad8
base: Make hwui renderer property persistent
libxzr Nov 27, 2022
8b41c81
frameworks: Reset battery stats [1/2]
jruesga Nov 24, 2015
8c0984a
Do not assistant delay for media notifications
Aug 23, 2022
3df9f99
Apply wakelock for notification sound
Nov 15, 2022
6dcbba2
Return no optmization info for package "android".
jiakaiz-g Oct 21, 2022
5f9ef0a
Revert "libs: hwui: Build using ThinLTO"
minaripenguin Nov 20, 2022
a054cd7
Delete all templates that do not match
May 20, 2022
0aab809
styles: Use user fonts for Material UI themes
kdrag0n Jul 8, 2021
23eb396
Fix network leaks with split-tunnel VPNs
Aug 11, 2022
758bba7
neko/Cat: Mark FLAG_IMMUTABLE PendingIntent with FLAG_MUTABLE
PainKiller3 Dec 30, 2021
2ad115e
Revert "Fix network leaks with split-tunnel VPNs"
chirayudesai Dec 5, 2022
63edb2b
Revert "libandroid_defaults: use whole program vtables lto optimization"
minaripenguin Dec 9, 2022
3fcc43f
core: Make all list dividers transparent
minaripenguin Dec 19, 2022
a334784
ImageWallpaper: Use GLEngine by default
minaripenguin Dec 18, 2022
36825ec
SystemUI: Apply QPR2 beta QS panel UI changes
minaripenguin Dec 13, 2022
4ddb57c
HWUI: Use kMirror instead of kClamp
minaripenguin Jul 6, 2022
b7c4d4a
Do not preload ThreadLocalRandom class.
Yqwed Jun 9, 2022
b1f0247
SystemUI: Add missing init for isDeviceProvisioned in PhoneStatusBarP…
maxwen Mar 31, 2022
45132ad
improve PendingIntent security check compatibility
thestinger Mar 18, 2022
2bb2613
InsetsStateController: Replace ArrayMap with HashMap for performance
kdrag0n Oct 6, 2021
e82ccb5
Implement Inter Dynamic Metrics for system UI font
kdrag0n Feb 18, 2022
1722a9d
fonts: Respect font scale for dynamic tracking calculations
kdrag0n Apr 11, 2022
3dbc63e
LayoutInflater: remove less frequently used apps
xdevs23 Jun 30, 2022
ef78caf
Fix exception caused by system app setting wallpaper
Sep 8, 2022
1130ed9
Prevent FGS notification from exceeding allowed
Aug 25, 2022
c0c6c9e
Fix sticky firstEventAfterDiscontinuity setting
bduddie Sep 9, 2022
613cd31
BatteryMeterView: Fix NPE that occurs when onDensityOrFontScaleChange…
spezi77 Jan 7, 2022
52a0ad9
SystemUI: Fix issue that log can't be enabled in MobileSignalController
WeijieWanng Apr 11, 2022
49401c6
ListView: Disable dividers by default
neobuddy89 Mar 28, 2020
96a0285
DisplayPowerController: Fix incall proximity not turning off display
sooti Sep 21, 2020
a88cdac
libs: hwui: Build using ThinLTO
mydongistiny Sep 29, 2019
4c3d6a0
SystemUI: Avoid NPE in QS footer data usage
adithya2306 Oct 10, 2022
1f935e0
Fix com.android.server.wm.TaskFpsCallbackController#unregisterListene…
RikkaW Aug 21, 2022
45861cd
Make all activities resizable
AndyCGYan Mar 17, 2018
154d61c
fwb: GLSurfaceView: Be less picky about EGLConfig alpha sizes
Jan 15, 2013
c30ade2
Remove unnecessary HashMap instantiation
Aug 24, 2022
e94e3d4
Avoid crash when dream starts
Jul 12, 2018
e5a105c
Allow fabricated RROs to survive a reboot in non-user builds
edsj-sony Jun 17, 2022
bdaf2ba
Fix DozeLogger NPE crash when DozeMachine.State is null
shawnlinboy Oct 17, 2022
3ad9570
Only create clip bound object when RenderNode is not quick rejected
zhqin Oct 14, 2022
dcd5b5b
Deadlock problem
Oct 19, 2022
e49385c
Send <Request ARC Termination> when Standby
Aug 23, 2022
1f625f2
base: Silence broadcast warnings logspam
minaripenguin Oct 19, 2022
d469140
Fix bug for user removed case
Oct 14, 2022
136449a
Update Lockscreen after DPM cleared password
May 20, 2019
5a42ad2
Add null check for RemoteAnimationController#onAnimationFinished
Apr 22, 2022
4f8c7ef
Avoid repeated loading of mutable runtime overlays in the form of sha…
Nov 18, 2021
1d9c7dd
Fix the NullPointerException in Android S Version:mServicesData
Feb 7, 2022
ca0816d
Fix getRootTask may be null led to client NPE
Jul 11, 2022
f57c50b
fixup! Wallpaper: Make ImageWallpaper zooming tunable
ReallySnow Oct 24, 2022
8cde9e0
SystemUI: Controllable squiggle animation [1/2]
ReallySnow Oct 26, 2022
8fb09d9
base: TtsEngines: fix yet another NPE
jhonboy121 Dec 2, 2021
2fe82d5
AudioManager: Make error log a warning instead.
dway123 Oct 20, 2022
db0d157
Remove MSG_REPORT_KEEP_CLEAR_RECTS when remove window
Oct 14, 2022
cd7d904
EventLog: Disable event writing in production builds
kdrag0n Apr 6, 2021
007454b
TwilightService: Use temporary TwilightState when location is not ava…
ritujb Jul 25, 2020
ea8e87d
TwilightService: Save and use last fetched location
idoybh Aug 21, 2021
261ffb7
Update value for vibrate tile duration
drkphnx Dec 15, 2022
3d088dc
base: Update few drawables
Nov 12, 2018
4f4331b
Shorten wait time for shutdown time optimization
Aug 2, 2017
c963542
Singleton use DCL(double check lock).
walfud Nov 9, 2020
461e361
AppOpsService: Don't log stack traces for isolated processes
Oct 30, 2022
656e409
Set callback before hal connection to avoid NPE on startup
chrmhoffmann Oct 28, 2022
96e3a0b
AudioSystem: Add AUDIO_FORMAT_APTX_ADAPTIVE_{QLEA|R4}
Oct 28, 2022
bc7e0a6
wm: Migrate deprecated getColor to one with Theme
utzcoz Oct 5, 2022
5d6d858
Add HandlerThread constructor with ThreadGroup
stoyicker Oct 29, 2022
3e5c876
CutoutFullScreenController: force full screen important apps
Nov 1, 2022
3260260
Revert "LayoutInflater: remove less frequently used apps"
Nov 2, 2022
d3b7d54
Revert "LayoutInflater: Opportunistically create views directly for p…
Nov 2, 2022
fe9ac2e
Fix errorprone 2.15.0 errors
sbgoog Sep 19, 2022
474c311
Freezer: Check app frozen status before async binder notify
Nov 2, 2022
2785a9a
Catch exceptions from prepareUserStorage() in loadPrivatePackagesInner()
ebiggers Oct 31, 2022
ece79f4
[quick panel] Fix problem that sub user`s active CustomTile can`t be …
Nov 2, 2022
6097888
Reset PowerGroup.mIsSandmanSummoned while waking up.
jeraon Oct 31, 2022
e25ae23
Rely on Display#getRealSize when dumping XML hierarchy
dpeykov Oct 25, 2022
ab1e059
MediaCodec: check for exceptions when creating crypto info
gburgessiv Nov 2, 2022
8ba27e3
BatteryStatsImpl: Guard against OOB
idoybh Jun 1, 2022
ebd7997
Fix a new recent task added with an empty one not removed
Nov 4, 2022
a1b675e
CEC: Do not allow null callback
vavadhani Jun 27, 2022
1f7995f
toString() of StringBuilder need to create a array copy with count, i…
May 5, 2022
b41cb88
AudioService: catch RuntimeException for IServiceManager.getService
devinmoore-goog Apr 20, 2022
23757cc
Avoid needless Integer.valueOf() object allocation.
15characterlimi Apr 21, 2016
b93b92d
[BugFix] fix ViewConfiguration's ArrayIndexOutOfBoundsException
cwjzd6 Nov 7, 2022
200e5fb
SystemUI: Redesign reticker notification
minaripenguin Nov 10, 2022
ccadd15
libandroid_defaults: use whole program vtables lto optimization
RealJohnGalt Nov 9, 2022
b47523d
Improve performance by resolving MediaCodec.BufferInfo members outsid…
Nov 1, 2022
2da19e0
Revert "Fix incorrect context classloader initialization in system_se…
minaripenguin Nov 10, 2022
177b086
Fix erroneous self deletion on SkImage creation failure
nscobie Oct 24, 2022
c9cb71b
core: Port code linaro's scaling changes
minaripenguin Nov 12, 2022
229f193
SettingsLib: Redesign the switch widget
minaripenguin Nov 15, 2022
c79116a
SettingsProvider: Disable "Mobile data always Active" by default
minaripenguin Nov 15, 2022
fa78e28
Fix error message being cut off.
cferris1000 Nov 2, 2022
9fb0b84
Fix module-file name collisions
Colecf Aug 29, 2022
acebf58
Fix SuspendPackageHelperTest after Kotlin 1.7.20
wangchaohui Oct 6, 2022
606ddd1
Fix more kotlin 1.7.0 errors
colincross Jun 24, 2022
445789b
Fix unused-but-set-variable warnings
kongy Jul 20, 2022
7232753
AudioService: RecordActivityMonitor: fix unbounded list growth
Aug 11, 2022
ab89049
noop - fix 'jobject -> jclass' in native jni code signature.
zenczykowski Jul 12, 2022
a8302cf
Revert "libs: hwui: Build using ThinLTO"
minaripenguin Nov 20, 2022
fe0008b
Fix kotlin deprecation warnings
Colecf Jun 2, 2022
2d0f816
ViewConfiguration: Fix multi-thread safety issue
minaripenguin Nov 20, 2022
f25495b
Fix NullPointerException when starting app with old ApplicationInfo
Nov 11, 2022
7a46b32
Fix errorprone warnings that should be errors
Colecf Nov 19, 2022
1221308
base: Update some icons to MD2
SKULSHADY Sep 23, 2019
e0a498b
modify requestLocationUpdates
heesung6701 Oct 24, 2022
a47dce8
Easteregg: Fix wrong PendingIntent flag at BubbleMetadata
kyungmin-park Nov 3, 2021
22f44e1
ViewGroup: Remove child parent when a new view is added
mydongistiny Sep 2, 2018
4adc6f7
Replace LinkedList by a more performant collection
Feb 23, 2022
d2bc85d
[BugFixed][OOM_ADJ] use max_adj to control process final adj
Nov 25, 2022
0a4c189
Revert "udfps: Trigger onFingerDown with regular action down events too"
anayw2001 Nov 10, 2022
168e139
Revert "Revert "udfps: Trigger onFingerDown with regular action down …
drkphnx Dec 18, 2022
1191cef
Revert "MessageQueue: remove leaked on-fd-event-listener"
minaripenguin Nov 30, 2022
c5cccd3
Move "mVold.onSecureKeyguardStateChanged" to handler thread
Oct 21, 2022
435279e
Change the order of Notification writeToParcel
Jan 14, 2022
dff8a60
Fix BluetoothRouteProvider unsync randon crash
Oct 25, 2022
37504b2
[Bugfix]Switch back to the application on /system when UID and path c…
Nov 29, 2022
106abac
SystemUI:Adjust Blur radius for media artwork
drkphnx Dec 4, 2022
c08adc2
[SQUASH] Mutiple reverts for miuicamera
spkal01 Oct 24, 2022
e2fea38
Revert "QS Styles: Revert back to old qs Tile Height"
drkphnx Dec 10, 2022
5c45ae1
Revert "InsetsStateController: Replace ArrayMap with HashMap for perf…
drkphnx Dec 16, 2022
5aeaf22
ScrimDrawable: Increase ScrimDrawable animation duration
minaripenguin Dec 14, 2022
2901008
QS: LocationTile: make it cycle modes
ezio84 Sep 10, 2022
936d803
SystemUI: Re-evaluate theme when adjusting clock text size
minaripenguin Dec 13, 2022
e2c49b5
Fix watchdog when NaN lux is reported.
Dec 1, 2022
8112e19
Disable Predictive back feature by default
minaripenguin Dec 11, 2022
5c65afc
keyguard: Actually kill Fancy Colon
frap129 Jan 16, 2018
4aab613
always auto-grant permissions that have "normal" protectionLevel
muhomorr Dec 3, 2022
ba5a410
fixup! QS: LocationTile
drkphnx Dec 17, 2022
8e5de2e
BootReceiver: Return early if trace_pipe doesn't exists
minaripenguin Dec 16, 2022
1c3dd76
SystemUI: Match lockscreen clock font with system
neobuddy89 Dec 17, 2022
2ce7c99
SystemUI: Make Lens work without independent package installed
cjh1249131356 Jul 6, 2022
4a765c9
Fix for NullPointerException in SmsMessage
Oct 12, 2022
61de7c7
SystemUI: Check whether the selected WFD route is available
WeijieWanng Sep 20, 2022
e482469
Update various corner radiuses to align with AOSP apps
edsj-sony Mar 25, 2022
ad80ce7
base: Stop the spamming of background start not allowed
Kapp509840 Nov 1, 2022
7940f7e
base: PSSSSST! disable some DEBUG logspill
maxwen Oct 16, 2021
c999e26
Revert "Fix a new recent task added with an empty one not removed"
drkphnx Dec 16, 2022
dca2bb6
Remove RESET_BATTERY_STATS permission for resetting stats
neobuddy89 Dec 13, 2022
4dae192
[LE Audio] Add BT LE headset check for voice call to update the icon
Nov 29, 2022
1bd26f3
BleAudioVolume: Fix calculation for the activated device
Sep 21, 2022
0da7b6a
AudioService: Use proper stream context for Le Audio stream volume
Oct 12, 2022
ce6a5a5
fix notifyListeners UI performance issues
Dec 11, 2022
2dee56d
Make center clock follow paddingTop
cjh1249131356 Dec 23, 2020
6d6d353
SystemUI: Fix up status bar end side content layout
neobuddy89 Dec 21, 2022
1f0528f
SystemUI: Fix up status bar start side content layout
neobuddy89 Dec 20, 2022
7b5a771
Fix incorrect context classloader initialization in system_server
Apr 6, 2017
77ee747
Fix MtpDatabase multithreading NullPointerException
Jul 5, 2018
bf9663e
SystemUI: clock_default_large: Don't hardcode monospace font
idoybh Dec 8, 2022
29fca27
aapt: Default to 0 compression ratio
arter97 Apr 7, 2015
09a3e5d
crdroid: Add OmniJawsClient
maxwen Oct 22, 2021
4f3f484
OmniJaws: add force refresh hook
maxwen Feb 20, 2022
c57213e
OmniJaws: Use google icon set by default
neobuddy89 Sep 18, 2022
2cba2ad
SystemUI: add OmniJaws keyguard slice provider
maxwen Oct 18, 2021
46b7bde
SystemUI: Enable new combined QS header layout
adithya2306 Dec 22, 2022
dc390a1
SystemUI: Added Double-line Clock
Ghosuto Dec 26, 2022
0d53ff6
BluetoothControllerImpl: Synchronize mConnectedDevices access
jhonboy121 Mar 18, 2022
36ca645
SystemUI: Fetch bluetooth battery level from any device
jhonboy121 Mar 22, 2022
0d07e49
Switch back to multiple listeners in RecentTasksController
octocorvus Dec 24, 2022
a6f8d65
PixelPropsUtils: Spoof Pixel 7 Pro to SMS Organizer
gokulkgm Dec 24, 2022
ec071ef
fix PixelPropsUtils: Netflix Spoof
Ghosuto Dec 26, 2022
4cacfb6
base: Grant storage permission to ThemePicker
SKULSHADY Oct 11, 2019
49e3bf6
base: Allow Launcher3 to use android.permission.FORCE_STOP_PACKAGES
neobuddy89 Nov 28, 2021
560eef9
Improve small clock design
Ghosuto Dec 27, 2022
e31bb84
increase large clock design
Ghosuto Dec 27, 2022
5c774be
Few Experimental Changes
drkphnx Dec 27, 2022
e7319ea
SystemUI: Remove existing icon group if its overriding
adithya2306 Dec 23, 2022
0f1283d
audio: Don't play sound effects if stream is muted
Apr 3, 2016
976cc10
SystemUI: Fix keyguard user avatar margins
minaripenguin Dec 26, 2022
ab686fe
sounds: Implement new screenshot sound effect
minaripenguin Dec 26, 2022
3fbcbcd
sounds: Import rice system sound effects pack
minaripenguin Sep 9, 2022
001bbf3
StatusBarIconController: Avoid crash due to incorrect casting
adithya2306 Dec 21, 2022
bfe5108
base: Whitelist DocumentsUIGoogle for Parallel space
joeyhuab Jul 11, 2016
82ad8f0
base: Blacklist OPlusExtras for Parallel space
AnierinBliss Dec 25, 2022
370db39
[Bugfix]create different pendingintent via appwidgetId
Dec 27, 2022
c1a0d61
Use getPackagesForOps instead of iterating packages by checkOperation
Dec 22, 2022
572b886
Fix an issue that the FoldStateListener induces a memory leak
kk48-park Aug 12, 2022
e334467
ViewConfiguration: Optimize ripple animation
minaripenguin Oct 10, 2022
0ac937a
core: Enable limited alpha composting by default
minaripenguin Aug 17, 2022
cd56b9b
ProcessList: Silence lmkd retries logspam
minaripenguin Aug 19, 2022
f0a8988
fwb: Link more elements to `config_dialogCornerRadius `
minaripenguin Dec 29, 2022
3742ef7
Keyguard: Remove Weather city from Lockscreen weather
Ghosuto Dec 30, 2022
d8bc2a1
Navbar Compact layout
odmfl Dec 30, 2022
304836b
Navbar compact layout
odmfl Dec 30, 2022
a32af03
Update to md2 icon
odmfl Dec 30, 2022
531dde3
Merge branch 'pyro' into pyro
odmfl Dec 30, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
PackageInfo: Optimize ApplicationInfo creation
When opening and closing activities in Settings, a significant amount of
CPU time is spent in ART interface method call trampolines, as reported
by simpleperf:

0.32%     /apex/com.android.art/lib64/libart.so                                                                                                     art_quick_imt_conflict_trampoline

PackageInfoWithoutStateUtils is responsible for a substantial portion of
the time:

0.34%     0.24%  /apex/com.android.art/lib64/libart.so                                                                                   art_quick_imt_conflict_trampoline
       |
       -- art_quick_imt_conflict_trampoline
          |
          |--5.48%-- android.content.pm.parsing.PackageInfoWithoutStateUtils.appInfoFlags
          |          com.android.server.pm.parsing.pkg.PackageImpl.toAppInfoWithoutState
          |          android.content.pm.parsing.PackageInfoWithoutStateUtils.generateApplicationInfoUnchecked
          |          com.android.server.pm.parsing.PackageInfoUtils.generateApplicationInfo
          |    |
          |    |--33.53%-- com.android.server.pm.parsing.PackageInfoUtils.generateActivityInfo
          |    |    |
          |    |    |--76.24%-- com.android.server.pm.ComponentResolver$ActivityIntentResolver.newResult

To avoid the overhead of calling methods through interfaces,
opportunistically cast ParsingPackageRead objects to the real
implementation and access fields directly on it. This isn't pretty, but
it reduces the CPU time wasted on interface method calls.

Test: simpleperf record -a; verify that PackageInfoWithoutStateUtils.appInfoFlags
      no longer appears under art_quick_imt_conflict_trampoline
Change-Id: I475ba804c61739c7537e664b09973665f001270b
Signed-off-by: darkphnx <dark.phnx12@gmail.com>
kdrag0n authored and drkphnx committed Dec 27, 2022
commit 34ed422f10f1aa1a07c9b0ddf5c802b98b9a039c
Original file line number Diff line number Diff line change
@@ -828,58 +828,112 @@ private static int flag(boolean hasFlag, int flag) {
*/
public static int appInfoFlags(ParsingPackageRead pkg) {
// @formatter:off
return flag(pkg.isExternalStorage(), ApplicationInfo.FLAG_EXTERNAL_STORAGE)
| flag(pkg.isBaseHardwareAccelerated(), ApplicationInfo.FLAG_HARDWARE_ACCELERATED)
| flag(pkg.isAllowBackup(), ApplicationInfo.FLAG_ALLOW_BACKUP)
| flag(pkg.isKillAfterRestore(), ApplicationInfo.FLAG_KILL_AFTER_RESTORE)
| flag(pkg.isRestoreAnyVersion(), ApplicationInfo.FLAG_RESTORE_ANY_VERSION)
| flag(pkg.isFullBackupOnly(), ApplicationInfo.FLAG_FULL_BACKUP_ONLY)
| flag(pkg.isPersistent(), ApplicationInfo.FLAG_PERSISTENT)
| flag(pkg.isDebuggable(), ApplicationInfo.FLAG_DEBUGGABLE)
| flag(pkg.isVmSafeMode(), ApplicationInfo.FLAG_VM_SAFE_MODE)
| flag(pkg.isHasCode(), ApplicationInfo.FLAG_HAS_CODE)
| flag(pkg.isAllowTaskReparenting(), ApplicationInfo.FLAG_ALLOW_TASK_REPARENTING)
| flag(pkg.isAllowClearUserData(), ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA)
| flag(pkg.isLargeHeap(), ApplicationInfo.FLAG_LARGE_HEAP)
| flag(pkg.isUsesCleartextTraffic(), ApplicationInfo.FLAG_USES_CLEARTEXT_TRAFFIC)
| flag(pkg.isSupportsRtl(), ApplicationInfo.FLAG_SUPPORTS_RTL)
| flag(pkg.isTestOnly(), ApplicationInfo.FLAG_TEST_ONLY)
| flag(pkg.isMultiArch(), ApplicationInfo.FLAG_MULTIARCH)
| flag(pkg.isExtractNativeLibs(), ApplicationInfo.FLAG_EXTRACT_NATIVE_LIBS)
| flag(pkg.isGame(), ApplicationInfo.FLAG_IS_GAME)
| flag(pkg.isSupportsSmallScreens(), ApplicationInfo.FLAG_SUPPORTS_SMALL_SCREENS)
| flag(pkg.isSupportsNormalScreens(), ApplicationInfo.FLAG_SUPPORTS_NORMAL_SCREENS)
| flag(pkg.isSupportsLargeScreens(), ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS)
| flag(pkg.isSupportsExtraLargeScreens(), ApplicationInfo.FLAG_SUPPORTS_XLARGE_SCREENS)
| flag(pkg.isResizeable(), ApplicationInfo.FLAG_RESIZEABLE_FOR_SCREENS)
| flag(pkg.isAnyDensity(), ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES);
if (pkg instanceof ParsingPackageImpl) {
ParsingPackageImpl pkgi = (ParsingPackageImpl) pkg;
return flag(pkgi.isExternalStorage(), ApplicationInfo.FLAG_EXTERNAL_STORAGE)
| flag(pkgi.isBaseHardwareAccelerated(), ApplicationInfo.FLAG_HARDWARE_ACCELERATED)
| flag(pkgi.isAllowBackup(), ApplicationInfo.FLAG_ALLOW_BACKUP)
| flag(pkgi.isKillAfterRestore(), ApplicationInfo.FLAG_KILL_AFTER_RESTORE)
| flag(pkgi.isRestoreAnyVersion(), ApplicationInfo.FLAG_RESTORE_ANY_VERSION)
| flag(pkgi.isFullBackupOnly(), ApplicationInfo.FLAG_FULL_BACKUP_ONLY)
| flag(pkgi.isPersistent(), ApplicationInfo.FLAG_PERSISTENT)
| flag(pkgi.isDebuggable(), ApplicationInfo.FLAG_DEBUGGABLE)
| flag(pkgi.isVmSafeMode(), ApplicationInfo.FLAG_VM_SAFE_MODE)
| flag(pkgi.isHasCode(), ApplicationInfo.FLAG_HAS_CODE)
| flag(pkgi.isAllowTaskReparenting(), ApplicationInfo.FLAG_ALLOW_TASK_REPARENTING)
| flag(pkgi.isAllowClearUserData(), ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA)
| flag(pkgi.isLargeHeap(), ApplicationInfo.FLAG_LARGE_HEAP)
| flag(pkgi.isUsesCleartextTraffic(), ApplicationInfo.FLAG_USES_CLEARTEXT_TRAFFIC)
| flag(pkgi.isSupportsRtl(), ApplicationInfo.FLAG_SUPPORTS_RTL)
| flag(pkgi.isTestOnly(), ApplicationInfo.FLAG_TEST_ONLY)
| flag(pkgi.isMultiArch(), ApplicationInfo.FLAG_MULTIARCH)
| flag(pkgi.isExtractNativeLibs(), ApplicationInfo.FLAG_EXTRACT_NATIVE_LIBS)
| flag(pkgi.isGame(), ApplicationInfo.FLAG_IS_GAME)
| flag(pkgi.isSupportsSmallScreens(), ApplicationInfo.FLAG_SUPPORTS_SMALL_SCREENS)
| flag(pkgi.isSupportsNormalScreens(), ApplicationInfo.FLAG_SUPPORTS_NORMAL_SCREENS)
| flag(pkgi.isSupportsLargeScreens(), ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS)
| flag(pkgi.isSupportsExtraLargeScreens(), ApplicationInfo.FLAG_SUPPORTS_XLARGE_SCREENS)
| flag(pkgi.isResizeable(), ApplicationInfo.FLAG_RESIZEABLE_FOR_SCREENS)
| flag(pkgi.isAnyDensity(), ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES);
} else {
return flag(pkg.isExternalStorage(), ApplicationInfo.FLAG_EXTERNAL_STORAGE)
| flag(pkg.isBaseHardwareAccelerated(), ApplicationInfo.FLAG_HARDWARE_ACCELERATED)
| flag(pkg.isAllowBackup(), ApplicationInfo.FLAG_ALLOW_BACKUP)
| flag(pkg.isKillAfterRestore(), ApplicationInfo.FLAG_KILL_AFTER_RESTORE)
| flag(pkg.isRestoreAnyVersion(), ApplicationInfo.FLAG_RESTORE_ANY_VERSION)
| flag(pkg.isFullBackupOnly(), ApplicationInfo.FLAG_FULL_BACKUP_ONLY)
| flag(pkg.isPersistent(), ApplicationInfo.FLAG_PERSISTENT)
| flag(pkg.isDebuggable(), ApplicationInfo.FLAG_DEBUGGABLE)
| flag(pkg.isVmSafeMode(), ApplicationInfo.FLAG_VM_SAFE_MODE)
| flag(pkg.isHasCode(), ApplicationInfo.FLAG_HAS_CODE)
| flag(pkg.isAllowTaskReparenting(), ApplicationInfo.FLAG_ALLOW_TASK_REPARENTING)
| flag(pkg.isAllowClearUserData(), ApplicationInfo.FLAG_ALLOW_CLEAR_USER_DATA)
| flag(pkg.isLargeHeap(), ApplicationInfo.FLAG_LARGE_HEAP)
| flag(pkg.isUsesCleartextTraffic(), ApplicationInfo.FLAG_USES_CLEARTEXT_TRAFFIC)
| flag(pkg.isSupportsRtl(), ApplicationInfo.FLAG_SUPPORTS_RTL)
| flag(pkg.isTestOnly(), ApplicationInfo.FLAG_TEST_ONLY)
| flag(pkg.isMultiArch(), ApplicationInfo.FLAG_MULTIARCH)
| flag(pkg.isExtractNativeLibs(), ApplicationInfo.FLAG_EXTRACT_NATIVE_LIBS)
| flag(pkg.isGame(), ApplicationInfo.FLAG_IS_GAME)
| flag(pkg.isSupportsSmallScreens(), ApplicationInfo.FLAG_SUPPORTS_SMALL_SCREENS)
| flag(pkg.isSupportsNormalScreens(), ApplicationInfo.FLAG_SUPPORTS_NORMAL_SCREENS)
| flag(pkg.isSupportsLargeScreens(), ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS)
| flag(pkg.isSupportsExtraLargeScreens(), ApplicationInfo.FLAG_SUPPORTS_XLARGE_SCREENS)
| flag(pkg.isResizeable(), ApplicationInfo.FLAG_RESIZEABLE_FOR_SCREENS)
| flag(pkg.isAnyDensity(), ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES);
}
// @formatter:on
}

/** @see ApplicationInfo#privateFlags */
public static int appInfoPrivateFlags(ParsingPackageRead pkg) {
// @formatter:off
int privateFlags = flag(pkg.isStaticSharedLibrary(), ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY)
| flag(pkg.isOverlay(), ApplicationInfo.PRIVATE_FLAG_IS_RESOURCE_OVERLAY)
| flag(pkg.isIsolatedSplitLoading(), ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING)
| flag(pkg.isHasDomainUrls(), ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS)
| flag(pkg.isProfileableByShell(), ApplicationInfo.PRIVATE_FLAG_PROFILEABLE_BY_SHELL)
| flag(pkg.isBackupInForeground(), ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND)
| flag(pkg.isUseEmbeddedDex(), ApplicationInfo.PRIVATE_FLAG_USE_EMBEDDED_DEX)
| flag(pkg.isDefaultToDeviceProtectedStorage(), ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE)
| flag(pkg.isDirectBootAware(), ApplicationInfo.PRIVATE_FLAG_DIRECT_BOOT_AWARE)
| flag(pkg.isPartiallyDirectBootAware(), ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE)
| flag(pkg.isAllowClearUserDataOnFailedRestore(), ApplicationInfo.PRIVATE_FLAG_ALLOW_CLEAR_USER_DATA_ON_FAILED_RESTORE)
| flag(pkg.isAllowAudioPlaybackCapture(), ApplicationInfo.PRIVATE_FLAG_ALLOW_AUDIO_PLAYBACK_CAPTURE)
| flag(pkg.isRequestLegacyExternalStorage(), ApplicationInfo.PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE)
| flag(pkg.isUsesNonSdkApi(), ApplicationInfo.PRIVATE_FLAG_USES_NON_SDK_API)
| flag(pkg.isHasFragileUserData(), ApplicationInfo.PRIVATE_FLAG_HAS_FRAGILE_USER_DATA)
| flag(pkg.isCantSaveState(), ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE)
| flag(pkg.isResizeableActivityViaSdkVersion(), ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION)
| flag(pkg.isAllowNativeHeapPointerTagging(), ApplicationInfo.PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING);
int privateFlags;
Boolean resizeableActivity;
if (pkg instanceof ParsingPackageImpl) {
ParsingPackageImpl pkgi = (ParsingPackageImpl) pkg;
privateFlags = flag(pkgi.isStaticSharedLibrary(), ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY)
| flag(pkgi.isOverlay(), ApplicationInfo.PRIVATE_FLAG_IS_RESOURCE_OVERLAY)
| flag(pkgi.isIsolatedSplitLoading(), ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING)
| flag(pkgi.isHasDomainUrls(), ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS)
| flag(pkgi.isProfileableByShell(), ApplicationInfo.PRIVATE_FLAG_PROFILEABLE_BY_SHELL)
| flag(pkgi.isBackupInForeground(), ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND)
| flag(pkgi.isUseEmbeddedDex(), ApplicationInfo.PRIVATE_FLAG_USE_EMBEDDED_DEX)
| flag(pkgi.isDefaultToDeviceProtectedStorage(), ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE)
| flag(pkgi.isDirectBootAware(), ApplicationInfo.PRIVATE_FLAG_DIRECT_BOOT_AWARE)
| flag(pkgi.isPartiallyDirectBootAware(), ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE)
| flag(pkgi.isAllowClearUserDataOnFailedRestore(), ApplicationInfo.PRIVATE_FLAG_ALLOW_CLEAR_USER_DATA_ON_FAILED_RESTORE)
| flag(pkgi.isAllowAudioPlaybackCapture(), ApplicationInfo.PRIVATE_FLAG_ALLOW_AUDIO_PLAYBACK_CAPTURE)
| flag(pkgi.isRequestLegacyExternalStorage(), ApplicationInfo.PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE)
| flag(pkgi.isUsesNonSdkApi(), ApplicationInfo.PRIVATE_FLAG_USES_NON_SDK_API)
| flag(pkgi.isHasFragileUserData(), ApplicationInfo.PRIVATE_FLAG_HAS_FRAGILE_USER_DATA)
| flag(pkgi.isCantSaveState(), ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE)
| flag(pkgi.isResizeableActivityViaSdkVersion(), ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION)
| flag(pkgi.isAllowNativeHeapPointerTagging(), ApplicationInfo.PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING);
resizeableActivity = pkgi.getResizeableActivity();
} else {
privateFlags = flag(pkg.isStaticSharedLibrary(), ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY)
| flag(pkg.isOverlay(), ApplicationInfo.PRIVATE_FLAG_IS_RESOURCE_OVERLAY)
| flag(pkg.isIsolatedSplitLoading(), ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING)
| flag(pkg.isHasDomainUrls(), ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS)
| flag(pkg.isProfileableByShell(), ApplicationInfo.PRIVATE_FLAG_PROFILEABLE_BY_SHELL)
| flag(pkg.isBackupInForeground(), ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND)
| flag(pkg.isUseEmbeddedDex(), ApplicationInfo.PRIVATE_FLAG_USE_EMBEDDED_DEX)
| flag(pkg.isDefaultToDeviceProtectedStorage(), ApplicationInfo.PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE)
| flag(pkg.isDirectBootAware(), ApplicationInfo.PRIVATE_FLAG_DIRECT_BOOT_AWARE)
| flag(pkg.isPartiallyDirectBootAware(), ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE)
| flag(pkg.isAllowClearUserDataOnFailedRestore(), ApplicationInfo.PRIVATE_FLAG_ALLOW_CLEAR_USER_DATA_ON_FAILED_RESTORE)
| flag(pkg.isAllowAudioPlaybackCapture(), ApplicationInfo.PRIVATE_FLAG_ALLOW_AUDIO_PLAYBACK_CAPTURE)
| flag(pkg.isRequestLegacyExternalStorage(), ApplicationInfo.PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE)
| flag(pkg.isUsesNonSdkApi(), ApplicationInfo.PRIVATE_FLAG_USES_NON_SDK_API)
| flag(pkg.isHasFragileUserData(), ApplicationInfo.PRIVATE_FLAG_HAS_FRAGILE_USER_DATA)
| flag(pkg.isCantSaveState(), ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE)
| flag(pkg.isResizeableActivityViaSdkVersion(), ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION)
| flag(pkg.isAllowNativeHeapPointerTagging(), ApplicationInfo.PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING);
resizeableActivity = pkg.getResizeableActivity();
}
// @formatter:on

Boolean resizeableActivity = pkg.getResizeableActivity();
if (resizeableActivity != null) {
if (resizeableActivity) {
privateFlags |= ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE;
@@ -894,14 +948,25 @@ public static int appInfoPrivateFlags(ParsingPackageRead pkg) {
/** @see ApplicationInfo#privateFlagsExt */
public static int appInfoPrivateFlagsExt(ParsingPackageRead pkg) {
// @formatter:off
int privateFlagsExt =
flag(pkg.isProfileable(), ApplicationInfo.PRIVATE_FLAG_EXT_PROFILEABLE)
int privateFlagsExt;
if (pkg instanceof ParsingPackageImpl) {
ParsingPackageImpl pkgi = (ParsingPackageImpl) pkg;
privateFlagsExt = flag(pkgi.isProfileable(), ApplicationInfo.PRIVATE_FLAG_EXT_PROFILEABLE)
| flag(pkgi.hasRequestForegroundServiceExemption(),
ApplicationInfo.PRIVATE_FLAG_EXT_REQUEST_FOREGROUND_SERVICE_EXEMPTION)
| flag(pkgi.areAttributionsUserVisible(),
ApplicationInfo.PRIVATE_FLAG_EXT_ATTRIBUTIONS_ARE_USER_VISIBLE)
| flag(pkgi.isOnBackInvokedCallbackEnabled(),
ApplicationInfo.PRIVATE_FLAG_EXT_ENABLE_ON_BACK_INVOKED_CALLBACK);
} else {
privateFlagsExt = flag(pkg.isProfileable(), ApplicationInfo.PRIVATE_FLAG_EXT_PROFILEABLE)
| flag(pkg.hasRequestForegroundServiceExemption(),
ApplicationInfo.PRIVATE_FLAG_EXT_REQUEST_FOREGROUND_SERVICE_EXEMPTION)
| flag(pkg.areAttributionsUserVisible(),
ApplicationInfo.PRIVATE_FLAG_EXT_ATTRIBUTIONS_ARE_USER_VISIBLE)
| flag(pkg.isOnBackInvokedCallbackEnabled(),
ApplicationInfo.PRIVATE_FLAG_EXT_ENABLE_ON_BACK_INVOKED_CALLBACK);
}
// @formatter:on
return privateFlagsExt;
}