Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1729 commits
Select commit Hold shift + click to select a range
d54c12d
HeadsUp: add timeout option (1/2)
kufikugel Mar 27, 2016
39d55ea
Add kill button to notification guts [1/2]
dankoman30 Nov 27, 2018
48c7701
SystemUI: Allow disabling clipboard overlay [1/2]
adithya2306 Oct 23, 2022
ef14f25
Use IntArray instead of ArraySet<Integer> to store int lists
Mar 10, 2025
dd5aab1
SystemUI: Add switch for compact HUN [1/2]
someone5678 Jan 21, 2025
142d5b5
SystemUI: Integrate Google Lens into Screenshot UI
AshutoshSundresh Feb 6, 2022
ae18466
SystemUI: Implement burn-in protection for statusbar
arter97 Oct 9, 2021
20c08a7
Add toggle to disable charging animation [1/2]
SKULSHADY Jun 6, 2019
931351f
Allow tuning ambient display with sensors [1/3]
neobuddy89 Apr 8, 2017
42a3b45
base: Add bool to enable/disable doze by default
neobuddy89 Dec 8, 2016
bb28331
fwb: Implement cutout force full screen [1/2]
jhenrique09 Oct 3, 2020
8388d0e
SystemUI: Smart Pixels [1/2]
Jan 4, 2018
3d704a2
SystemUI: Allow devices to disable Smart Pixels on UDFPS
ShevT Dec 15, 2022
bde1865
fwb: Screen off animations [1/2]
AgentFabulous Jan 4, 2022
f063033
Fix crash with protected content with ElectronBeam/Scale screen-off a…
Albinoman887 May 17, 2022
e7c46e3
SystemUI: Allow toggling rotation button suggestion [1/2]
neobuddy89 Mar 24, 2024
8a6e57f
base: Add Doze-on-charge customization [1/2]
darkobas Oct 7, 2019
ed85163
Doze-on-charge: Add few improvements and fixes
neobuddy89 Apr 1, 2023
7842168
base: Allow scheduling always on display [1/2]
idoybh Feb 26, 2021
ea72209
SystemUI: Introduce Adaptive Playback [1/2]
imjyotiraditya Oct 30, 2020
635bebb
Implement DeviceConfigUtils and service
jhenrique09 Aug 10, 2023
990cf5c
SystemUI: Allow to pulse on new tracks
ezio84 Nov 2, 2019
0dde908
SystemUI: Fix heads up notification timeout on ambient display
HELLBOY017 Mar 22, 2023
e80118b
SystemUI: Add toggle for media squiggle animation
neobuddy89 Oct 19, 2025
40b23b4
SystemUI: Adapt screenshot sound to ringer modes
Ashwin4RC May 27, 2020
1229a6a
VolumeHaptics: Tune the primitives
neobuddy89 Dec 8, 2025
951bf4e
SystemUI: VolumeDialog: Add toggle for haptic feedback [1/2]
neobuddy89 Apr 13, 2025
778cad3
SystemUI: Adapt luminance and chroma factors to A16/QPR1
idoybh Dec 7, 2025
e540973
Revert "Adjust the threshold for disabling blur on thermal status"
RealJohnGalt Dec 6, 2025
13c7636
Revert "Disable blurs during critical thermal state"
RealJohnGalt Dec 6, 2025
72b6b60
Increase Zenmode max hour limit from 12 to 24
Oct 4, 2017
68a8b20
disable safe media volume management
muhomorr Dec 11, 2024
800492a
BiometricScheduler: Cancel operation if not idle
SagarMakhar Aug 17, 2022
ee951bf
SystemUI: QS: Add On-The-Go Tile
mydongistiny Jun 18, 2018
564ab7d
SystemUI: OnTheGo: Update tile more dynamically
neobuddy89 Jul 14, 2025
e290892
SystemUI: Add Sound tile to Quick Settings
Oct 16, 2021
2b4fb8c
SoundTile: Add DOUBLE_CLICK effect for vibrate mode
Jayant-Deshmukh Dec 10, 2024
f9a72fd
base: add CPU info overlay
maxwen Sep 27, 2019
6bb8ee7
QS: Add CPUInfo toggle tile
mydongistiny Dec 24, 2017
e89db14
SystemUI: FPS Info Overlay & Tile
darkobas Mar 10, 2020
522eb04
SystemUI: Rewrite FPSInfoService in kt from scratch
jhonboy121 Jan 5, 2022
ff13855
SystemUI: Add default path for FPS info service
neobuddy89 Apr 9, 2024
099ccf7
CPUInfoService: Rewrite from scratch
neobuddy89 Jul 16, 2025
b79e98f
FPSInfoService: Improvements and clean up
neobuddy89 Jul 16, 2025
a22c269
SystemUI: Add Compass tile
romanbb Sep 27, 2017
409e8cc
CompassTile: Make Compass point towards North
PowerUser64 May 16, 2025
4e78d61
* Based on OnePlus' OxygenOS tile, reworked to work with AOSP togglin…
Myself5 Nov 26, 2019
3819a98
SystemUI: Add tile to show volume panel
swapsCAPS Aug 17, 2015
c1f064e
SystemUI: Add Smart Pixels tile
adindotdev Apr 8, 2018
c3d7e7b
SystemUI: Add Weather tile based on OmniJaws client
neobuddy89 Oct 16, 2022
94cf2f5
BluetoothPowerStatsCollector: Handle onBluetoothActivityEnergyInfoErr…
userariii May 29, 2025
416415d
SystemUI: Add refresh rate tile
jhonboy121 Sep 14, 2021
a9a8f2c
SystemUI: Add Screenshot tile
ShevT Dec 19, 2022
582ce5a
SystemUI: Add Locale Tile
SpiritCroc Jan 22, 2023
59787ad
SystemUI: Re-designed caffeine tile icon
Nov 9, 2022
c73f438
SystemUI: CastTile: Open cast settings on long click
idoybh Jul 12, 2022
4585e86
SystemUI: Use secondary label for language QS tile
SKULSHADY May 13, 2021
5b682f4
SystemUI: Add affordance shorcut for AI Voice Assistant
minaripenguin Jan 9, 2024
e914be2
SystemUI: Update ChatGPT quickaffordance activity
aswin7469 Jun 27, 2024
d18d97b
SystemUI: Add private DNS QS tile
idoybh Apr 11, 2024
8cd445f
SystemUI: Introduce preferred network tile
cjh1249131356 Apr 11, 2022
a22c18e
PreferredNetworkTile: Disable tile on Wi-Fi tablets
Royna2544 Aug 28, 2023
0fdc98a
SystemUI: Inflate QS on orientation change
HELLBOY017 Oct 24, 2025
cd83231
SystemUI: Fix concurrent modification exception on config change
neobuddy89 Dec 9, 2025
04ef412
Shell: Use night/light theme for buttons/caption color instead of lum…
minaripenguin Aug 9, 2024
4ce9d81
base: Add support for LMOFreeform service
adithya2306 Aug 8, 2024
186e4ba
services: Add freeform system service
adithya2306 Aug 8, 2024
4abc414
wm: Add API to listen for secure content in display
adithya2306 Aug 31, 2024
dd6c59c
wm: Show rounded corners on freeform window on internal display
adithya2306 Oct 31, 2024
34f3e29
WindowManager: finally proper desktop mode handling
nift4 Apr 29, 2023
c113db1
wm: Skip freeform displays from forcing desktop mode
adithya2306 Sep 2, 2024
f3a188d
wm: Fixed screen flickering when launching horizontal apps from verti…
Jan 15, 2025
bfbb68d
wm: Ensure freeform tasks bounds gets updated when launching tasks
minaripenguin Jul 20, 2024
ce55f10
services: WindowOrientationListener: bail out if rotation resolver se…
jhonboy121 Nov 10, 2021
691c042
Fix timeout issue when Google Calculator app remains occluded after p…
zhanglian1 Sep 5, 2025
90c5fcd
base: Initial SenseProvider for FaceSense service
Sirhc95 Nov 25, 2023
ffcc001
FaceService: Conditionally add ParanoidSense
someone5678 Jan 8, 2024
2c0d3df
SystemUI: Disable FaceUnlock Lockouts
minaripenguin Apr 28, 2024
8dc7a19
SystemUI: Implement face unlock recognition animation and text
minaripenguin Nov 30, 2023
114e699
SystemUI: Use proper tint for face unlock icon
neobuddy89 Dec 3, 2023
6d01295
SystemUI: Implement bouncer face unlock animation
minaripenguin Dec 17, 2023
0d770bc
FaceUnlockImageView: Prevent statusBarStateController memory leak
rmp22 Mar 5, 2025
95ab4d1
SystemUI: Fix face unlock indication static calls
rmp22 Mar 26, 2025
c9616d0
SystemUI: biometrics: Follow user setting to confirm face unlock
neobuddy89 Jan 6, 2024
c7913d2
services: Force load FaceSense providers
neobuddy89 Oct 14, 2024
59da848
FaceSense: Vibrate on successful authentication
adithya2306 Dec 31, 2023
07f81d1
FaceUnlock: Remove background behind indicator on lockscreen
neobuddy89 Oct 26, 2024
df65488
SystemUI: Add face unlock icon to keyguard blueprint
neobuddy89 Jan 4, 2025
dde3738
SystemUI: Implement pocket lock check for faceunlock
33bca Jan 14, 2025
3b1c986
SenseProvider: Allow our face unlock to be used on third-party apps
jhenrique09 Feb 14, 2022
7814a66
Face: Do not throw exception if client does not support invalidation
HELLBOY017 Dec 11, 2024
53dc8f9
SystemUI: MediaHierarchyManager: Initiate allowMediaPlayerOnLockScreen
idoybh Apr 5, 2024
533254e
NSSLC: Prevent possible memory leak
minaripenguin Sep 8, 2024
ba3b7b5
Don't update OverScroller fling state if improper time passed
Oct 29, 2020
4e9dd6c
Fix incorrect text shown at PUK lock screen
Jan 17, 2023
69b2662
base: Allow tuning app switch key regardless hw key
neobuddy89 Dec 31, 2025
5b272a4
base: Use SingleKeyRule for app switch long press
neobuddy89 Nov 30, 2024
fbcfdce
base: Add customization for double tap recents key [2/3]
neobuddy89 Nov 30, 2024
594f702
Settings: Expose clipboard auto clear setting [1/3]
someone5678 Dec 1, 2024
907eaf5
Fix settings not applied on boot for device key actions
neobuddy89 Feb 23, 2025
7f6cc83
core: Expose method to toggle recent apps through Binder
someone5678 Jan 14, 2025
b7d60c4
PackageInstaller: Drop config requirement
Ghosuto Dec 8, 2025
373404a
Introduce `Force LTE_CA` override on per subscription basis [1/3]
userariii Nov 19, 2025
bd5b548
SystemUI: Disable edge gesture if navbar is disabled
neobuddy89 Mar 26, 2025
92feb97
NavigationModeController: Silence log spam
Tejasvp25 Jan 3, 2022
3f7537b
screenrecord: Set entire screenrecord as the default option
sourajitk Jan 29, 2025
40e3f8e
SystemUI: Fix NullPointerException in updateFocusOverlayRadii for mis…
nivlafx Dec 13, 2024
fa874b9
fix NPE system_server crash in F2fsUtils.getFilesRecursive()
muhomorr Mar 28, 2025
dc70e00
NetworkManagementService: fix crash when mUidCleartextPolicy is empty
rmp22 May 5, 2025
5c842a7
DeviceIdleController: fix google gms idle whitelist security exception
rmp22 Jun 9, 2025
551d998
PinnerService: catch exceptions while pinning files
rmp22 Jun 9, 2025
ec4fe74
don't delay setting observer callbacks for background system packages
muhomorr Feb 1, 2025
e19072c
Stop unsuspending packages in profiles
Mar 31, 2023
94756f7
Fix ArrayIndexOfBoundsException in WallpaperManagerService
May 22, 2025
041f5e8
Fix the system server restart issue caused by the fingerprint framework
May 22, 2025
adda3c1
QSAnimator: fix random crash
rmp22 Jun 18, 2025
4d96dc6
SystemUI: Reset when sleeping state change
May 7, 2025
fdedb55
Remove ServiceRecord from restart list if restart is cancelled as unn…
adaim-meta Apr 10, 2025
e982e39
InputEventReceiver: Catch error in finishInputEvent()
kde-yyds Aug 2, 2025
2fa9aac
base: Add readable annotation for Ringtone2
neobuddy89 Aug 10, 2025
9825862
services: Suppress double upgrade notification for cloned profile
neobuddy89 Aug 10, 2025
83dfb84
ignore virtual and overlay displays when turning displays off
yoelglus Sep 14, 2023
845ca96
display: Don't spam log when display state changes
adithya2306 Apr 14, 2021
6d89b88
SystemUI: InternetDialog: Fallback to first available subid
adithya2306 May 29, 2025
d8cc565
SystemUI: Alter constraints for privacy chip on large screen header too
adithya2306 Jul 24, 2025
738a358
Catch Runtime Exception thrown by ProtoOutputStream.flush() api
Jul 2, 2025
f93717d
AppOpsService: Do not error out user app that was system app earlier
neobuddy89 Nov 25, 2023
20bd675
AutoAODService: Add null checks to mSharedPreferences
minaripenguin Oct 16, 2024
6747d29
core: Broadcast intent when display power state changes
adithya2306 Nov 23, 2024
bef24c8
BootReceiver: Return early if trace_pipe doesn't exists
minaripenguin Dec 16, 2022
6e2c01a
base: Follow Dark/Light theme for Safe Mode dialog
Pulkit077 Sep 16, 2022
5d0c7d1
Fixes crash (race cond) when destroyActivity.
Mar 12, 2019
60d261a
ComputerEngine: Fix signature spoofing for microG revanced
rmp22 Mar 4, 2025
5cafcd7
Attestation: Update logging for keymint 4.0
neobuddy89 Oct 31, 2025
fd53ff8
KeyProviderManager: Accept N >= 1 certs per key [1/2]
idoybh Jul 28, 2025
fce105f
SettingsProvider: Fix NPE when upgrading
minaripenguin Jan 17, 2025
ee85050
SettingsProvider: Resolve google gms configurator denials
minaripenguin Apr 6, 2025
cd07ffc
SystemUI: Add matrix pulse renderer style
Ghosuto Nov 29, 2025
0d67a21
Broadcast radio power state changes
Feb 20, 2021
ea8e550
fixup! Broadcast radio power state changes
neobuddy89 Mar 22, 2025
c5c35fd
SystemUI: Prevent indicator text cutting off in biometric prompt
adithya2306 Jan 15, 2025
275bcb8
SystemUI: Redraw display cutout on overlay changes
adithya2306 Mar 4, 2021
fe5eed7
TelephonyManager: Gracefully handle null telephony service [2]
minaripenguin May 30, 2024
4f45350
Telephony: Gracefully handle data enablement checks
minaripenguin Jul 22, 2024
fb3f99f
TelephonyManager: Gracefully handle null telephony service - isNullCi…
pix106 Oct 19, 2024
384ca12
PowerStats: extend the MAX_STATS_ARRAY_LENGTH
Jan 23, 2025
8bffe5a
Fix NPE problem to avoid systemserver process crash.
Feb 7, 2025
67a3951
SystemUI: Hide QR code scanner tile if not launch activity available
neobuddy89 Feb 23, 2025
908808f
Ask pin for shutdown/reboot on secure lockscreen
DarkJoker360 Apr 15, 2020
5f7bc75
CUR_MAX_CACHED_PROCESSES is not greater than the maximum value allowed
Oct 7, 2023
6deaa17
services: Disallow max cached processes above 128
neobuddy89 Sep 6, 2024
f719a07
CachedAppOptimizer: Set thread group to background
neobuddy89 Nov 21, 2023
a36e3a1
CachedAppOptimizer: Fix persistent compact skipped
Apr 3, 2023
4d2fd7b
CachedAppOptimizer: Initialize compactProfile and compactTime
Jul 2, 2024
c2808e3
CachedAppOptimizer: Pageout File pages during system compaction
Dec 28, 2022
a6482c9
services: optimize memory on device wake
rmp22 Apr 23, 2025
d73f942
services: clean system_server heap memory on screen off
rmp22 Apr 28, 2025
c544955
SystemUI: clean heap memory on screen off
rmp22 Apr 28, 2025
a57fdc0
ActivityManagerService: Rewrite release memory on screen wake
neobuddy89 Sep 28, 2025
403f01f
services: Reduce memory release interval guard
neobuddy89 Sep 28, 2025
d97f9b4
SystemUI: Refresh system icons on theme change
StyloGey Jun 22, 2023
e7c7f34
SystemUI: Add flashlight strength control [SQUASHED]
HELLBOY017 Sep 13, 2025
b615e93
base: Allow disabling private DNS for VPN [1/2]
idoybh Dec 21, 2023
3c8e388
base: Add option to cycle through ringer modes [1/3]
ritujb Sep 3, 2022
e55a570
base: Add support for application downgrade [1/2]
libxzr Mar 17, 2022
8188297
SystemUI: Use privacy_chip_background for charger indicator bg
someone5678 Dec 29, 2024
f7262d2
SystemUI: write initial value of SHOW_QR_CODE_SCANNER_SETTING on firs…
maxwen Dec 14, 2022
ce55eef
frameworks/base: Import Xiaomi Image Tags defenitions
johnmart19 May 30, 2023
92c13f5
SystemUI: Fix Internet Tile showing no service
Jul 2, 2024
ec9d251
AudioService: do not block focus request from applications compiled w…
Jul 9, 2024
5950264
AudioService: Cancel old toasts when switching ringer mode
idoybh Nov 20, 2020
1a343c7
SystemUI: Constrain keyguard indication area burn-in offset
adithya2306 Jan 15, 2025
4b943c2
SystemUI: Remove split navigation bar layout for sw900dp
luk1337 Jan 5, 2025
c3b501b
don't remove app widgets from user's home screen when the user stops
muhomorr Oct 22, 2024
6c60ab7
fix NullPointerException in Animator:callOnList
Jul 29, 2025
4fd8aec
SystemUI: Add margin above small clock in lockscreen
neobuddy89 Aug 22, 2025
a97cb99
Optimize the DateTimeView logic time consumption when updating the Ui…
Sep 5, 2025
cd91f8f
fix missing notification backgrounds
bisuhkfurio Dec 12, 2025
00a65ab
SystemUI: Add hotspot toggle in QS internet dialog
adithya2306 Sep 17, 2022
90cc8e9
SystemUI: Introduce 5G toggle in internet connectivity dialog
libxzr Apr 23, 2022
418c593
SystemUI: Allow devices to disable 5G toggle
neobuddy89 Jan 21, 2025
d9b5f68
SystemUI: InternetTileNewImpl: Fix secondary click
rmp22 Jul 5, 2025
da82d5d
SystemUI: Screenrecord: Add delete action to the notification
sourajitk Dec 29, 2020
7926af3
Screenrecord: Fix notifications not being dismissed
idoybh Dec 18, 2023
a3cef2a
ScreenshotController: Clean up resources when dismissed
neobuddy89 Oct 5, 2025
27dc8e6
ScreenshotController: Play haptic feedback even on normal ringer mode
neobuddy89 Oct 5, 2025
b7e7fcc
adjust frame distance to make scrolling smoother.
Aug 18, 2025
5492260
Optimize the response speed of recents animations
Aug 20, 2025
a501319
Optimize home to desktop transition speed.
Aug 12, 2025
5deb23c
InputMethodManager: Prevent unnecessary invocation of IME
minaripenguin Nov 11, 2023
fd05921
Fix memory leak in car service
Sep 14, 2025
7b2fc44
Fix NullPointerException in ArtFastDataOutput.writeUTF()
Sep 23, 2025
2c712b8
am: Prevent ANRs by offloading dumps to a dedicated thread
Sep 11, 2025
fd4b93d
Move SaveUi from bottom to center
Sep 24, 2025
335727f
Minor code optimization.
Sep 28, 2025
4d5ee92
try-catch unlinkToDeath called on unlinked Binder.
Sep 28, 2025
7c1b1af
system: Postpone NetworkWatchlistService scan during boot
May 21, 2025
c35bf4b
Fix ConcurrentModificationException in LocaleStore
Abdulla-vcc Jul 7, 2025
0cf2381
SystemUI: Add toggle for doze wallpaper
neobuddy89 Oct 17, 2025
fc6ff55
CpuMonitorService: reduce cache size
rmp22 May 1, 2025
0adf8cf
SystemUI: Fix stale colors on power menu after UI mode change
neobuddy89 Oct 25, 2025
69e2542
SystemUI: Prevent NotifCollection illegal state on notification dump
neobuddy89 Oct 30, 2025
ce4d623
SystemUI: Prevent ShadeListBuilder illegal state on notification dump
neobuddy89 Nov 10, 2025
9e6f8ae
Fix index out of bounds exception in HandwritingModeController.
Nov 11, 2025
8eebf64
Fix it has two times return back if only press the back key one time.
Nov 11, 2025
59325e4
SystemUI: Hide data switch tile on non-voice capable devices
neobuddy89 Nov 15, 2025
76e690a
SettingsLib: Prevent NPE for fragments without divider
neobuddy89 Jul 5, 2025
57d988f
Fix RuntimeXfermode native memory leaks
Dec 26, 2025
6f2c645
ViewGroup: null-check child in dispatchDraw to avoid NPE
Dec 23, 2025
fc79a82
Reduce unnecessary calls to getLatestVsyncEventData
LiangliangSui Dec 29, 2025
a0fddea
Fix NullPointerException in PackageManagerService
Dec 29, 2025
ddd1f50
SystemUI: Fix keyguard back button background
neobuddy89 Jan 3, 2026
38aadc5
fixing contacts apps crash
rmp22 Dec 18, 2025
41d7171
fixing configuration controller crash
rmp22 Dec 24, 2025
f814709
services: Reduce grace window to kill cache after user unlock
neobuddy89 Sep 15, 2025
42c801a
ActivityManagerService: Adjust delay on boot system compaction
rmp22 May 29, 2025
3c3b9ee
ActivityManagerService: Perform system compaction with GC
neobuddy89 Sep 28, 2025
747ff56
Revert "Null safe package name in AppOps writeState"
muhomorr Jan 6, 2023
633b3d4
appops: skip ops for invalid null package during state serialization
muhomorr Jan 6, 2023
5fef0d5
preventing media album bitmaps from impacting performance
rmp22 Nov 27, 2025
16df267
center-cropping media bitmaps to improve quality
rmp22 Nov 27, 2025
6088bcb
SystemUI: Implement Reverse-engineered Smartspace
aswin7469 Jan 2, 2026
71b8802
SystemUI: smartspace: fix duplicate date view on lockscreen
aswin7469 Jan 2, 2026
6faf794
SystemUI: re enable KeyguardSliceProvider
RealJohnGalt Apr 22, 2024
52889fd
SystemUI: Align Smartspace DataProviders with updated BcSmartspaceDat…
kleidione Jan 7, 2026
0bcca1b
SystemUI: smartspace: fix media view mistake
ralph950412 Jan 7, 2026
0f8cda4
SystemUI: smartspace: refactor dagger
ralph950412 Jan 8, 2026
5a27392
SystemUI: smartspace: Open google weather on tapping smartspace
adithya2306 Jan 9, 2026
8cdfb95
SettingsLib: Don't show system overlays on apps list
cjh1249131356 Apr 5, 2024
22e865d
Fixes an issue where the lockscreen clock would display the incorrect…
Dec 25, 2025
eb58682
Add Fix Bluetooth status display issue after power cycle
Oct 23, 2025
3495256
totalScanTimeMs and totalWifiLockTimeMs may be 0, causing an Arithmet…
Oct 21, 2025
30c4da4
Remove Duplicate WIFI_DISPLAY permission entry
May 4, 2021
756a555
display: Allow HBM in manual brightness if no time limitation
adithya2306 Oct 21, 2023
907384a
fixing ShadeDialogContextRepo crash
rmp22 Jan 7, 2026
a2b9cf7
fixing app directory access
rmp22 Jan 7, 2026
1c4d975
SystemUI: Fix default font feature on lockscreen
neobuddy89 Jan 11, 2026
ef70925
Update Crowdin configuration file
gwolf2u Oct 31, 2024
dd6370a
New Crowdin updates (#1279)
gwolf2u Dec 31, 2025
c7623ec
Change how the ringer drawer background is aligned
Jul 1, 2025
40e5cfc
Add missing margin to landscape collapsed constraint set
Jul 29, 2025
9201c1a
Fix volume dialog ringer drawer rtl expansion
Sep 10, 2025
faa94e4
Add gravity end to the volume dialog root view
Apr 9, 2025
c438112
SystemUI: VolumeDialog: Fix layout issues with left gravity
shutter-cat Jan 14, 2026
0feafe6
fixup! Add toggle to enable brightness slider haptic feedback [1/2]
neobuddy89 Jan 19, 2026
8108935
New Crowdin updates (#1284)
gwolf2u Jan 21, 2026
b19176d
New translations cr_strings.xml (Chinese Simplified)
gwolf2u Jan 22, 2026
2bc2ad1
New translations cr_strings.xml (Czech)
gwolf2u Jan 23, 2026
bc7688f
New translations cr_strings.xml (Arabic)
gwolf2u Jan 23, 2026
ed27bc2
New translations cr_strings.xml (Vietnamese)
gwolf2u Jan 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions Android.bp
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,9 @@ filegroup {
":vold_aidl",
":deviceproductinfoconstants_aidl",

":adbrootservice_aidl",
":lmofreeform_aidl",

// For the generated R.java and Manifest.java
":framework-res{.aapt.srcjar}",

Expand Down Expand Up @@ -259,6 +262,7 @@ java_library {

"com.android.sysprop.localization",
"PlatformProperties",
"SurfaceFlingerProperties",
],
sdk_version: "core_platform",
installable: false,
Expand Down
1 change: 1 addition & 0 deletions CleanSpec.mk
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/symbols/system/lib/libhwui.so)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/libhwui.so)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/os/storage/*)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/content/IClipboard.P)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/pocket/*)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/telephony/java/com/android/internal/telephony/ITelephonyRegistry.P)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/docs/api-stubs*)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ void addPowerSaveTempWhitelistAppDirect(int uid, long duration,

boolean isAppOnWhitelist(int appid);

int[] getPowerSaveWhitelistSystemAppIds();

int[] getPowerSaveWhitelistUserAppIds();

int[] getPowerSaveTempWhitelistAppIds();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,12 @@ public class AppStateTrackerImpl implements AppStateTracker {
@GuardedBy("mLock")
final SparseBooleanArray mActiveUids = new SparseBooleanArray();

/**
* System exemption list in the device idle controller.
*/
@GuardedBy("mLock")
private int[] mPowerExemptSystemAppIds = new int[0];

/**
* System except-idle + user exemption list in the device idle controller.
*/
Expand Down Expand Up @@ -1046,13 +1052,15 @@ private void cleanUpArrayForUser(SparseBooleanArray array, int removedUserId) {
* Called by device idle controller to update the power save exemption lists.
*/
public void setPowerSaveExemptionListAppIds(
int[] powerSaveExemptionListSystemAppIdArray,
int[] powerSaveExemptionListExceptIdleAppIdArray,
int[] powerSaveExemptionListUserAppIdArray,
int[] tempExemptionListAppIdArray) {
synchronized (mLock) {
final int[] previousExemptionList = mPowerExemptAllAppIds;
final int[] previousTempExemptionList = mTempExemptAppIds;

mPowerExemptSystemAppIds = powerSaveExemptionListSystemAppIdArray;
mPowerExemptAllAppIds = powerSaveExemptionListExceptIdleAppIdArray;
mTempExemptAppIds = tempExemptionListAppIdArray;
mPowerExemptUserAppIds = powerSaveExemptionListUserAppIdArray;
Expand Down Expand Up @@ -1270,6 +1278,18 @@ public boolean isUidPowerSaveUserExempt(int uid) {
}
}

/**
* @return whether or not a UID is in either the user defined power-save exemption list or the
system full exemption list (not including except-idle)
*/
public boolean isUidPowerSaveIdleExempt(int uid) {
final int appId = UserHandle.getAppId(uid);
synchronized (mLock) {
return ArrayUtils.contains(mPowerExemptUserAppIds, appId)
|| ArrayUtils.contains(mPowerExemptSystemAppIds, appId);
}
}

/**
* @return whether a UID is in the temp power-save exemption list or not.
*
Expand Down Expand Up @@ -1305,6 +1325,9 @@ public void dump(IndentingPrintWriter pw) {
pw.print("Active uids: ");
dumpUids(pw, mActiveUids);

pw.print("System exemption list appids: ");
pw.println(Arrays.toString(mPowerExemptSystemAppIds));

pw.print("Except-idle + user exemption list appids: ");
pw.println(Arrays.toString(mPowerExemptAllAppIds));

Expand Down Expand Up @@ -1380,6 +1403,10 @@ public void dumpProto(ProtoOutputStream proto, long fieldId) {
}
}

for (int appId : mPowerExemptSystemAppIds) {
proto.write(AppStateTrackerProto.POWER_SAVE_SYSTEM_EXEMPT_APP_IDS, appId);
}

for (int appId : mPowerExemptAllAppIds) {
proto.write(AppStateTrackerProto.POWER_SAVE_EXEMPT_APP_IDS, appId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,12 @@ static String lightStateToString(int state) {
*/
private final SparseBooleanArray mPowerSaveWhitelistSystemAppIds = new SparseBooleanArray();

/**
* Current system app IDs that are in the complete power save white list. This array can
* be shared with others because it will not be modified once set.
*/
private int[] mPowerSaveWhitelistSystemAppIdArray = new int[0];

/**
* App IDs that have been white-listed to opt out of power save restrictions, except
* for device idle modes.
Expand Down Expand Up @@ -2388,6 +2394,11 @@ public String[] getFullPowerWhitelistExceptIdle() {
return DeviceIdleController.this.getFullPowerWhitelistInternalUnchecked();
}

@Override
public int[] getPowerSaveWhitelistSystemAppIds() {
return DeviceIdleController.this.getPowerSaveWhitelistSystemAppIds();
}

/**
* Returns the array of app ids whitelisted by user. Take care not to
* modify this, as it is a reference to the original copy. But the reference
Expand Down Expand Up @@ -2618,6 +2629,12 @@ boolean isAppOnWhitelistInternal(int appid) {
}
}

int[] getPowerSaveWhitelistSystemAppIds() {
synchronized (this) {
return mPowerSaveWhitelistSystemAppIdArray;
}
}

int[] getPowerSaveWhitelistUserAppIds() {
synchronized (this) {
return mPowerSaveWhitelistUserAppIdArray;
Expand All @@ -2628,6 +2645,16 @@ private static File getSystemDir() {
return new File(Environment.getDataDirectory(), "system");
}

/** Returns the keys of a SparseBooleanArray, paying no attention to its values. */
private static int[] keysToIntArray(final SparseBooleanArray sparseArray) {
final int size = sparseArray.size();
final int[] array = new int[size];
for (int i = 0; i < size; i++) {
array[i] = sparseArray.keyAt(i);
}
return array;
}

@Override
public void onStart() {
final PackageManager pm = getContext().getPackageManager();
Expand Down Expand Up @@ -2674,6 +2701,7 @@ public void onStart() {
} catch (PackageManager.NameNotFoundException e) {
}
}
mPowerSaveWhitelistSystemAppIdArray = keysToIntArray(mPowerSaveWhitelistSystemAppIds);

mConstants = mInjector.getConstants(this, mHandler, getContext().getContentResolver());

Expand Down Expand Up @@ -3203,9 +3231,11 @@ public int[] getAppIdTempWhitelistInternal() {
void addPowerSaveTempAllowlistAppChecked(String packageName, long duration,
int userId, @ReasonCode int reasonCode, @Nullable String reason)
throws RemoteException {
getContext().enforceCallingOrSelfPermission(
Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST,
"No permission to change device idle whitelist");
if (!packageName.equals("com.google.android.gms")) {
getContext().enforceCallingOrSelfPermission(
Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST,
"No permission to change device idle whitelist");
}
final int callingUid = Binder.getCallingUid();
userId = ActivityManager.getService().handleIncomingUser(
Binder.getCallingPid(),
Expand Down Expand Up @@ -4488,6 +4518,7 @@ private void reportTempWhitelistChangedLocked(final int uid, final boolean added

private void passWhiteListsToForceAppStandbyTrackerLocked() {
mAppStateTracker.setPowerSaveExemptionListAppIds(
mPowerSaveWhitelistSystemAppIdArray,
mPowerSaveWhitelistExceptIdleAppIdArray,
mPowerSaveWhitelistUserAppIdArray,
mTempWhitelistAppIdArray);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2737,7 +2737,7 @@ public void set(String callingPackage,
} else if (workSource == null && (UserHandle.isCore(callingUid)
|| UserHandle.isSameApp(callingUid, mSystemUiUid)
|| ((mAppStateTracker != null)
&& mAppStateTracker.isUidPowerSaveUserExempt(callingUid)))) {
&& mAppStateTracker.isUidPowerSaveIdleExempt(callingUid)))) {
flags |= FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED;
flags &= ~(FLAG_ALLOW_WHILE_IDLE | FLAG_PRIORITIZE);
}
Expand Down Expand Up @@ -5559,7 +5559,7 @@ private void decrementAlarmCount(int uid, int decrement) {
}
}
if (oldCount < decrement) {
Slog.wtf(TAG, "Attempt to decrement existing alarm count " + oldCount + " by "
Slog.w(TAG, "Attempt to decrement existing alarm count " + oldCount + " by "
+ decrement + " for uid " + uid);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ private String getServiceProcessLocked(JobStatus jobStatus) {
}

ServiceInfo si;
boolean jobCleared = false;
try {
// createContextAsUser may potentially be expensive
// TODO: cache user context or improve ContextImpl implementation if this becomes
Expand All @@ -168,12 +169,16 @@ private String getServiceProcessLocked(JobStatus jobStatus) {
if (mService.areUsersStartedLocked(jobStatus)) {
// User is fully unlocked but PM still says the package doesn't exist.
Slog.e(TAG, "Job exists for non-existent package: " + service.getPackageName());
mService.getJobStore().remove(jobStatus, true);
jobCleared = true;
}
// Write null to the cache so we don't keep querying PM.
si = null;
}
final String processName = si == null ? null : si.processName;
mServiceProcessCache.add(userId, service, processName);
if (!jobCleared) {
mServiceProcessCache.add(userId, service, processName);
}

return processName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ public final class DeviceIdleJobsController extends StateController {
* True when in device idle mode, so we don't want to schedule any jobs.
*/
private boolean mDeviceIdleMode;
private int[] mPowerSaveWhitelistSystemAppIds;
private int[] mDeviceIdleWhitelistAppIds;
private int[] mPowerSaveTempWhitelistAppIds;

Expand Down Expand Up @@ -145,6 +146,8 @@ public DeviceIdleJobsController(JobSchedulerService service) {
mLocalDeviceIdleController =
LocalServices.getService(DeviceIdleInternal.class);
mDeviceIdleWhitelistAppIds = mLocalDeviceIdleController.getPowerSaveWhitelistUserAppIds();
mPowerSaveWhitelistSystemAppIds =
mLocalDeviceIdleController.getPowerSaveWhitelistSystemAppIds();
mPowerSaveTempWhitelistAppIds =
mLocalDeviceIdleController.getPowerSaveTempWhitelistAppIds();
mDeviceIdleUpdateFunctor = new DeviceIdleUpdateFunctor();
Expand Down Expand Up @@ -209,8 +212,9 @@ public void setUidActiveLocked(int uid, boolean active) {
* Checks if the given job's scheduling app id exists in the device idle user whitelist.
*/
boolean isWhitelistedLocked(JobStatus job) {
return Arrays.binarySearch(mDeviceIdleWhitelistAppIds,
UserHandle.getAppId(job.getSourceUid())) >= 0;
final int appId = UserHandle.getAppId(job.getSourceUid());
return Arrays.binarySearch(mDeviceIdleWhitelistAppIds, appId) >= 0
|| Arrays.binarySearch(mPowerSaveWhitelistSystemAppIds, appId) >= 0;
}

/**
Expand Down
4 changes: 3 additions & 1 deletion cmds/idmap2/idmap2d/Idmap2Service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ using PolicyBitmask = android::ResTable_overlayable_policy_header::PolicyBitmask
namespace {

constexpr std::string_view kFrameworkPath = "/system/framework/framework-res.apk";
constexpr std::string_view kLineagePath = "/system/framework/org.lineageos.platform-res.apk";

Status ok() {
return Status::ok();
Expand Down Expand Up @@ -242,9 +243,10 @@ Status Idmap2Service::createIdmap(const std::string& target_path, const std::str
idmap2::Result<Idmap2Service::TargetResourceContainerPtr> Idmap2Service::GetTargetContainer(
const std::string& target_path) {
const bool is_framework = target_path == kFrameworkPath;
const bool is_lineage_framework = target_path == kLineagePath;
bool use_cache;
struct stat st = {};
if (is_framework || !::stat(target_path.c_str(), &st)) {
if (is_framework || is_lineage_framework || !::stat(target_path.c_str(), &st)) {
use_cache = true;
} else {
LOG(WARNING) << "failed to stat target path '" << target_path << "' for the cache";
Expand Down
8 changes: 0 additions & 8 deletions core/api/current.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13239,7 +13239,6 @@ package android.content.pm {
method @Deprecated @Nullable public android.content.pm.PackageInstaller.SessionInfo getActiveStagedSession();
method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getActiveStagedSessions();
method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllSessions();
method @FlaggedApi("android.content.pm.verification_service") @Nullable public final String getDeveloperVerificationServiceProvider();
method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getMySessions();
method @Nullable public android.content.pm.PackageInstaller.SessionInfo getSessionInfo(int);
method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getStagedSessions();
Expand All @@ -13263,12 +13262,6 @@ package android.content.pm {
field public static final String ACTION_SESSION_COMMITTED = "android.content.pm.action.SESSION_COMMITTED";
field public static final String ACTION_SESSION_DETAILS = "android.content.pm.action.SESSION_DETAILS";
field public static final String ACTION_SESSION_UPDATED = "android.content.pm.action.SESSION_UPDATED";
field @FlaggedApi("android.content.pm.verification_service") public static final int DEVELOPER_VERIFICATION_FAILED_REASON_DEVELOPER_BLOCKED = 2; // 0x2
field @FlaggedApi("android.content.pm.verification_service") public static final int DEVELOPER_VERIFICATION_FAILED_REASON_NETWORK_UNAVAILABLE = 1; // 0x1
field @FlaggedApi("android.content.pm.verification_service") public static final int DEVELOPER_VERIFICATION_FAILED_REASON_UNKNOWN = 0; // 0x0
field @FlaggedApi("android.content.pm.verification_service") public static final String EXTRA_DEVELOPER_VERIFICATION_EXTENSION_RESPONSE = "android.content.pm.extra.DEVELOPER_VERIFICATION_EXTENSION_RESPONSE";
field @FlaggedApi("android.content.pm.verification_service") public static final String EXTRA_DEVELOPER_VERIFICATION_FAILURE_REASON = "android.content.pm.extra.DEVELOPER_VERIFICATION_FAILURE_REASON";
field @FlaggedApi("android.content.pm.verification_service") public static final String EXTRA_DEVELOPER_VERIFICATION_LITE_PERFORMED = "android.content.pm.extra.DEVELOPER_VERIFICATION_LITE_PERFORMED";
field public static final String EXTRA_INSTALL_CONSTRAINTS = "android.content.pm.extra.INSTALL_CONSTRAINTS";
field public static final String EXTRA_INSTALL_CONSTRAINTS_RESULT = "android.content.pm.extra.INSTALL_CONSTRAINTS_RESULT";
field public static final String EXTRA_OTHER_PACKAGE_NAME = "android.content.pm.extra.OTHER_PACKAGE_NAME";
Expand Down Expand Up @@ -13458,7 +13451,6 @@ package android.content.pm {
method @FlaggedApi("android.content.pm.sdk_dependency_installer") public void setAutoInstallDependenciesEnabled(boolean);
method @Deprecated public void setAutoRevokePermissionsMode(boolean);
method public void setDontKillApp(boolean);
method @FlaggedApi("android.content.pm.verification_service") public void setExtensionParams(@NonNull android.os.PersistableBundle);
method public void setInstallLocation(int);
method public void setInstallReason(int);
method public void setInstallScenario(int);
Expand Down
7 changes: 7 additions & 0 deletions core/api/module-lib-current.txt
Original file line number Diff line number Diff line change
Expand Up @@ -272,12 +272,19 @@ package android.net {
method @Nullable @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public android.telephony.SubscriptionPlan getSubscriptionPlan(@NonNull android.net.NetworkTemplate);
method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public boolean isUidNetworkingBlocked(int, boolean);
method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public boolean isUidRestrictedOnMeteredNetworks(int);
method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void notifyDenylistChanged(@NonNull int[], @NonNull int[]);
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void notifyStatsProviderLimitReached();
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void notifyStatsProviderWarningReached();
method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void registerAllowedTransportsCallback(@Nullable java.util.concurrent.Executor, @NonNull android.net.NetworkPolicyManager.AllowedTransportsCallback);
method @Deprecated @FlaggedApi("android.net.platform.flags.deprecate_network_policy_callback") @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void registerNetworkPolicyCallback(@Nullable java.util.concurrent.Executor, @NonNull android.net.NetworkPolicyManager.NetworkPolicyCallback);
method @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void unregisterAllowedTransportsCallback(@NonNull android.net.NetworkPolicyManager.AllowedTransportsCallback);
method @Deprecated @FlaggedApi("android.net.platform.flags.deprecate_network_policy_callback") @RequiresPermission(android.Manifest.permission.OBSERVE_NETWORK_POLICY) public void unregisterNetworkPolicyCallback(@NonNull android.net.NetworkPolicyManager.NetworkPolicyCallback);
}

public static interface NetworkPolicyManager.AllowedTransportsCallback {
method public default void onUidsAllowedTransportsChanged(@NonNull int[], @NonNull long[]);
}

@Deprecated @FlaggedApi("android.net.platform.flags.deprecate_network_policy_callback") public static interface NetworkPolicyManager.NetworkPolicyCallback {
method @Deprecated public default void onUidBlockedReasonChanged(int, int);
}
Expand Down
Loading