Since some NotificationDelegate handlers will effectively live in other processes (i.e. in a client process, not ash), NotificationDelegate can't have return values.
bool HasClickedListener() --- can be removed in favor of Notification::clickable()
bool SettingsClick() --- return value can be removed in favor of enum in Notification (see ShouldDisplaySettingsButton)
bool ShouldDisplaySettingsButton() --- can be a three-value enum in Notification --- Yes (show default), Yes (let delegate perform a custom action), and No
bool ShouldDisplayOverFullscreen() --- the logic for this checks the notification's origin against what tab (if any) is currently fullscreen. This can probably also be a bit in Notification since it's only called at show-time. If we enter fullscreen when a notification is already showing we can probably just hide the notification. Supporting an async return value seems like a lot more effort than value.
CreateCustomMessageView() --- this doesn't seem like it belongs in NotificationDelegate. Maybe MessageCenterTray instead? It's not clear to me how arc notifications and their surfaces will work.
Comment 1 by bugdroid1@chromium.org
, Oct 19 2017