ChromeOS has several types of system status and some of them should be notified to the user. This document summarizes which types of notifications are currently used and what kind of UI flow is necessary here.
The notifications are usually generated through the internal C++ API for the desktop notifications, which will appear as the rich notification as well.
Blocking and system notifications
Sometimes normal notifications should be blocked due to the current system status. For example, all notifications should be queued during the lock screen, and they should appear when unlocked. It also should be blocked when fullscreen state; notifications should be annoying when the user watches YouTube videos, or has a presentation (note: the notifications should appear in immersive fullscreen mode instead, because the shelf / message center UI is visible in such case).
However, the system status could be so important that they should appear in such cases. This does not mean all system notifications should appear; some could be misleading. For example, the notification for taking screenshot would behave as same as the normal notifications, so it should not appear in the lock screen. In addition, screenshot notification has the message to 'click to view' but click should not work in lock screen. On the other hand, connecting display would be okay to be notified even in the lock screen, it just notifies the new system status.
See also the notification blocking code update design doc.
List of the system notifications
|message center?||Component||Source||Message||Show Always? ("System")||Timeout||Secure? (Show on Lock Screen)||Customize?||(can be disabled)||Click Action||Button||Triggers|
|Yes||display||DisplayErrorObserver||Could not mirror displays...||No||Yes||Yes||No||None||display connection|
|Yes||display||DisplayErrorObserver||That monitor is not supported||No||Yes||Yes||No||None||display connection|
|Yes||display||ResolutionNotificationController||..resolution was changed to...||Yes||Both||No||No||Accept / Revert change||Accept / Revert change||settings change from chrome://settings/display|
|Yes||display||ScreenCaptureTrayItem||... is sharing your screen||Yes||No||No||None||Stop Capture||apps|
|Yes||display||ScreenShareTrayItem||Sharing control of your screen...||Yes||No||No||None||Stop Share||apps|
|Yes||display||ScreenshotTaker||Screenshot taken||No||Yes||No||Yes||Show FIles App||keyboard shortcut|
|Yes||display||TrayDisplay||Mirroring to...||No||Yes||Yes||No||Show Display Settings||settings change from chrome://settings/display, and keyboard shortcut|
|Yes||display||TrayDisplay||Extending screen to...||No||Yes||Yes||No||Show Display Settings||settings change from chrome://settings/display, and keyboard shortcut|
|Yes||display||TrayDisplay||Docked mode||No||Yes||Yes||No||Show Display Settings||close lid|
|Yes||language||LocaleNotificationController||The language has changed from...||No||No||No||No||Accept change||Revert change||login|
|No||language||TrayAccessability||Spoken feedback is enabled.||\*||Yes||No||None||keyboard shortcut|
|No||language||TrayCapsLock||CAPS LOCK is on||\*||Yes||No||None||keyboard shortcut|
|Yes||language||TrayIME||Your input method has changed...||No||Yes||No||No||Show IME detailed view||keyboard shortcut|
|Yes||network||DataPromoNotification||Google Chrome will use mobile data...||Yes||No||?||No||Promo URL or settings|
|Yes||network||network_connect||Activation of... requires a network connection||Yes||No||?||No||Show Settings|
|Yes||network||NetworkStateNotifier||...Your .. service has been activated||Yes||No||?||No||Show Settings|
|Yes||network||NetworkStateNotifier||You may have used up your mobile data...||Yes||No||?||No||Configure Network|
|Yes||network||NetworkStateNotifier||Failed to connect to network...||Yes||No||?||No||Show Settings|
|No||network||TraySms||SMS from ...||\*||No||No||Show SMS detailed view|
|No||power||TrayPower||Battery full OR %<X> remaining||\*||No / Never||Yes||No||None||low battery|
|Yes||power||TrayPower||Your Chromebook may not charge...||No||Yes||Yes||No||None||usb charger connected|
|Yes||user||TrayLocallyManagedUser||This user is supervised by...||Yes||No||No||No||None||login|
|Yes||user||TraySessionLengthLimit||This session will end in...||Yes||No||No||No||None||timeout set by policy / sync / remaining time change|
|No||user||TrayUser||You can only have up to three accounts in multiple sign-in||\*||\*||Yes||No||None|