Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / ash / system / system_notifier.cc
blob8356a59076257a7c0da2456da1b3e5b753d8c818
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"
11 #endif
13 namespace ash {
14 namespace system_notifier {
16 namespace {
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
23 // screen.
24 const char* kAlwaysShownSystemNotifierIds[] = {
25 kNotifierDeprecatedAccelerator,
26 kNotifierBattery,
27 kNotifierDisplay,
28 kNotifierDisplayError,
29 #if defined(OS_CHROMEOS)
30 ui::NetworkStateNotifier::kNotifierNetworkError,
31 #endif
32 kNotifierPower,
33 // Note: Order doesn't matter here, so keep this in alphabetic order, don't
34 // just add your stuff at the end!
35 NULL};
37 // |kAshSystemNotifiers| is the list of normal system notification sources for
38 // ash events. These notifications can be hidden in some context.
39 const char* kAshSystemNotifiers[] = {
40 kNotifierBluetooth,
41 kNotifierDisplayResolutionChange,
42 kNotifierLocale,
43 kNotifierMultiProfileFirstRun,
44 #if defined(OS_CHROMEOS)
45 ui::NetworkStateNotifier::kNotifierNetwork,
46 #endif
47 kNotifierNetworkPortalDetector,
48 kNotifierScreenshot,
49 kNotifierScreenCapture,
50 kNotifierScreenShare,
51 kNotifierSessionLengthTimeout,
52 kNotifierSupervisedUser,
53 // Note: Order doesn't matter here, so keep this in alphabetic order, don't
54 // just add your stuff at the end!
55 NULL
58 bool MatchSystemNotifierId(const message_center::NotifierId& notifier_id,
59 const char* id_list[]) {
60 if (notifier_id.type != message_center::NotifierId::SYSTEM_COMPONENT)
61 return false;
63 for (size_t i = 0; id_list[i] != NULL; ++i) {
64 if (notifier_id.id == id_list[i])
65 return true;
67 return false;
70 } // namespace
72 const char kNotifierBattery[] = "ash.battery";
73 const char kNotifierBluetooth[] = "ash.bluetooth";
74 const char kNotifierDeprecatedAccelerator[] = "ash.accelerator-controller";
75 const char kNotifierDisplay[] = "ash.display";
76 const char kNotifierDisplayError[] = "ash.display.error";
77 const char kNotifierDisplayResolutionChange[] = "ash.display.resolution-change";
78 const char kNotifierLocale[] = "ash.locale";
79 const char kNotifierMultiProfileFirstRun[] = "ash.multi-profile.first-run";
80 const char kNotifierNetworkPortalDetector[] = "ash.network.portal-detector";
81 const char kNotifierPower[] = "ash.power";
82 const char kNotifierScreenshot[] = "ash.screenshot";
83 const char kNotifierScreenCapture[] = "ash.screen-capture";
84 const char kNotifierScreenShare[] = "ash.screen-share";
85 const char kNotifierSessionLengthTimeout[] = "ash.session-length-timeout";
86 const char kNotifierSupervisedUser[] = "ash.locally-managed-user";
88 bool ShouldAlwaysShowPopups(const message_center::NotifierId& notifier_id) {
89 return MatchSystemNotifierId(notifier_id, kAlwaysShownSystemNotifierIds);
92 bool IsAshSystemNotifier(const message_center::NotifierId& notifier_id) {
93 return ShouldAlwaysShowPopups(notifier_id) ||
94 MatchSystemNotifierId(notifier_id, kAshSystemNotifiers);
97 } // namespace system_notifier
98 } // namespace ash