1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ash/system/system_notifier.h"
7 #include "base/logging.h"
9 #if defined(OS_CHROMEOS)
10 #include "ui/chromeos/network/network_state_notifier.h"
14 namespace system_notifier
{
18 // See http://dev.chromium.org/chromium-os/chromiumos-design-docs/
19 // system-notifications for the reasoning.
21 // |kAlwaysShownSystemNotifierIds| is the list of system notification sources
22 // which can appear regardless of the situation, such like login screen or lock
24 const char* kAlwaysShownSystemNotifierIds
[] = {
27 kNotifierDisplayError
,
28 #if defined(OS_CHROMEOS)
29 ui::NetworkStateNotifier::kNotifierNetworkError
,
32 // Note: Order doesn't matter here, so keep this in alphabetic order, don't
33 // just add your stuff at the end!
36 // |kAshSystemNotifiers| is the list of normal system notification sources for
37 // ash events. These notifications can be hidden in some context.
38 const char* kAshSystemNotifiers
[] = {
40 kNotifierDisplayResolutionChange
,
42 kNotifierMultiProfileFirstRun
,
43 #if defined(OS_CHROMEOS)
44 ui::NetworkStateNotifier::kNotifierNetwork
,
46 kNotifierNetworkPortalDetector
,
48 kNotifierScreenCapture
,
50 kNotifierSessionLengthTimeout
,
51 kNotifierSupervisedUser
,
52 // Note: Order doesn't matter here, so keep this in alphabetic order, don't
53 // just add your stuff at the end!
57 bool MatchSystemNotifierId(const message_center::NotifierId
& notifier_id
,
58 const char* id_list
[]) {
59 if (notifier_id
.type
!= message_center::NotifierId::SYSTEM_COMPONENT
)
62 for (size_t i
= 0; id_list
[i
] != NULL
; ++i
) {
63 if (notifier_id
.id
== id_list
[i
])
71 const char kNotifierBattery
[] = "ash.battery";
72 const char kNotifierBluetooth
[] = "ash.bluetooth";
73 const char kNotifierDisplay
[] = "ash.display";
74 const char kNotifierDisplayError
[] = "ash.display.error";
75 const char kNotifierDisplayResolutionChange
[] = "ash.display.resolution-change";
76 const char kNotifierLocale
[] = "ash.locale";
77 const char kNotifierMultiProfileFirstRun
[] = "ash.multi-profile.first-run";
78 const char kNotifierNetworkPortalDetector
[] = "ash.network.portal-detector";
79 const char kNotifierPower
[] = "ash.power";
80 const char kNotifierScreenshot
[] = "ash.screenshot";
81 const char kNotifierScreenCapture
[] = "ash.screen-capture";
82 const char kNotifierScreenShare
[] = "ash.screen-share";
83 const char kNotifierSessionLengthTimeout
[] = "ash.session-length-timeout";
84 const char kNotifierSupervisedUser
[] = "ash.locally-managed-user";
86 bool ShouldAlwaysShowPopups(const message_center::NotifierId
& notifier_id
) {
87 return MatchSystemNotifierId(notifier_id
, kAlwaysShownSystemNotifierIds
);
90 bool IsAshSystemNotifier(const message_center::NotifierId
& notifier_id
) {
91 return ShouldAlwaysShowPopups(notifier_id
) ||
92 MatchSystemNotifierId(notifier_id
, kAshSystemNotifiers
);
95 } // namespace system_notifier