Make System Updater notifications “fixed”, with the REBOOT channel configured as non-blockable.#107
Conversation
Statically grant Updater permission for "fixed" notifications; set most notifications to be blockable by users, but set notifications on the REBOOT channel to be non-blockable. Some users have gotten "stuck" by disabling the notification to reboot the system to install a new release. Updater can't download and prepare a later release until the previously-prepared release has been installed, so it is important to avoid losing the please-reboot notification.
|
@haok1402 This had to be reverted due to causing an unusual behavior where some users who previously modified a channel can't modify any of the channel settings anymore. This shouldn't be the case because whether a channel is blockable is configurable. Going to be doing another release without it included for now. In order for it to be included, the reason for it causing this issue for several users will need to be identified and solved. |
|
@haok1402 We think your change is completely correct. The issue seems to be caused by an OS bug or intended but unexpected behavior resulting in strange behavior for a priv_app using fixed notifications. |
|
Thanks for the follow-up and the extra context — really appreciate it. Glad to hear the approach itself seems sound. I didn’t expect it to cause that kind of behavior with the channel settings, especially since I was able to toggle them on and off multiple times during testing without any issues. @thestinger Would you happen to know of any priv_app-related code or system components I could look into to better understand what might be causing this? Happy to dig deeper and see if I can help narrow it down. |
|
@haok1402 The issue is likely a problem with this code in the Settings app or something it uses: |
|
I ran two incremental-OTA update paths on Pixel 6a, from 2025052000 to 2025060100, and an older one from 2024010400. For each path I first (a) disabled one of the System Updater notification channel and, in a separate run, (b) disabled the app‑level notification switch entirely. After the update completed and the device rebooted, the prior states on channels other than REBOOT got preserved, and can be toggled. For REBOOT, regardless of its prior states, it was overridden to be ON, and can't be switched off. As a result, I'm unable to reproduce the reported regression on this device. It would be helpful if we can obtain the prior release or device model where the issue occurs. |
|
Issue apparently can happen if the Updater is set to only run on certain conditions. Previous version of Updater only did #118 reapplies this PR with conflict fixes; it's not clear if there's any other bugs in the OS code around this |
Description:
This PR improves System Updater behavior by making its notifications “fixed” and marking only the REBOOT notification channel as non-blockable. This prevents users who intend to silence some notifications from accidentally disabling the critical notification that the system must be rebooted to install a pending update..
This approach follows the model used in other system apps (e.g. GmsCompat), where notifications are fixed but individual channels can still be selectively disabled — except for the critical ones.
Changes:
/etc/default-permissions/app.seamlessupdate.client.xml, so users can disable only blockable notifications.Testing:
Tested on Pixel 6a with 2025052000 release to ensure:
A screenshot of the System Updater notification settings demonstrating these blockable channels can be found here: https://drive.google.com/file/d/1bbqeMaGjaT-LQj5_H0TXzv2CbUk85VVi/view?usp=drive_link
Additionally, a recording showing a user explicitly disabling the up-to-date notification is available here: https://drive.google.com/file/d/10RXgOeVZSo-7ZayeQdJeKu1yF0Zs8kZY/view?usp=drive_link
Expected Behavior:
These notification changes may make the alert behavior in #102 unnecessary, since users will no longer be able to disable the reboot notification. However, I believe the alerts about mismatched networks proposed in #105 remain relevant even if #102 is superseded by this PR.
Resolves: #101, #102
I am happy to revise and resubmit the code if any changes are desired.