12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/tray/system_tray_notifier.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(OS_CHROMEOS)
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ash/system/chromeos/network/network_state_notifier.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ash {
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SystemTrayNotifier::SystemTrayNotifier() {
14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(OS_CHROMEOS)
15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  network_state_notifier_.reset(new NetworkStateNotifier());
16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SystemTrayNotifier::~SystemTrayNotifier() {
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddAccessibilityObserver(
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    AccessibilityObserver* observer) {
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  accessibility_observers_.AddObserver(observer);
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveAccessibilityObserver(
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    AccessibilityObserver* observer) {
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  accessibility_observers_.RemoveObserver(observer);
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::AddAudioObserver(AudioObserver* observer) {
33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  audio_observers_.AddObserver(observer);
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::RemoveAudioObserver(AudioObserver* observer) {
37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  audio_observers_.RemoveObserver(observer);
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::AddBluetoothObserver(BluetoothObserver* observer) {
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  bluetooth_observers_.AddObserver(observer);
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::RemoveBluetoothObserver(BluetoothObserver* observer) {
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  bluetooth_observers_.RemoveObserver(observer);
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddClockObserver(ClockObserver* observer) {
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  clock_observers_.AddObserver(observer);
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveClockObserver(ClockObserver* observer) {
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  clock_observers_.RemoveObserver(observer);
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddIMEObserver(IMEObserver* observer) {
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ime_observers_.AddObserver(observer);
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveIMEObserver(IMEObserver* observer) {
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ime_observers_.RemoveObserver(observer);
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddLocaleObserver(LocaleObserver* observer) {
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  locale_observers_.AddObserver(observer);
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveLocaleObserver(LocaleObserver* observer) {
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  locale_observers_.RemoveObserver(observer);
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid SystemTrayNotifier::AddTracingObserver(TracingObserver* observer) {
73ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  tracing_observers_.AddObserver(observer);
74ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
75ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
76ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid SystemTrayNotifier::RemoveTracingObserver(TracingObserver* observer) {
77ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  tracing_observers_.RemoveObserver(observer);
78ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
79ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddUpdateObserver(UpdateObserver* observer) {
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  update_observers_.AddObserver(observer);
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveUpdateObserver(UpdateObserver* observer) {
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  update_observers_.RemoveObserver(observer);
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddUserObserver(UserObserver* observer) {
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  user_observers_.AddObserver(observer);
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveUserObserver(UserObserver* observer) {
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  user_observers_.RemoveObserver(observer);
942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS)
97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::AddLogoutButtonObserver(
99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    LogoutButtonObserver* observer) {
100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  logout_button_observers_.AddObserver(observer);
101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::RemoveLogoutButtonObserver(
104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    LogoutButtonObserver* observer) {
105a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  logout_button_observers_.RemoveObserver(observer);
106a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
107a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::AddSessionLengthLimitObserver(
109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    SessionLengthLimitObserver* observer) {
110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  session_length_limit_observers_.AddObserver(observer);
111a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
112a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
113a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::RemoveSessionLengthLimitObserver(
114a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    SessionLengthLimitObserver* observer) {
115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  session_length_limit_observers_.RemoveObserver(observer);
116a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
117a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddNetworkObserver(NetworkObserver* observer) {
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  network_observers_.AddObserver(observer);
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveNetworkObserver(NetworkObserver* observer) {
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  network_observers_.RemoveObserver(observer);
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
126a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::AddNetworkPortalDetectorObserver(
127a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    NetworkPortalDetectorObserver* observer) {
128a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  network_portal_detector_observers_.AddObserver(observer);
129a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
130a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::RemoveNetworkPortalDetectorObserver(
132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    NetworkPortalDetectorObserver* observer) {
133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  network_portal_detector_observers_.RemoveObserver(observer);
134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddEnterpriseDomainObserver(
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EnterpriseDomainObserver* observer) {
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  enterprise_domain_observers_.AddObserver(observer);
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveEnterpriseDomainObserver(
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EnterpriseDomainObserver* observer) {
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  enterprise_domain_observers_.RemoveObserver(observer);
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
146010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void SystemTrayNotifier::AddMediaCaptureObserver(
147010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    MediaCaptureObserver* observer) {
148010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  media_capture_observers_.AddObserver(observer);
149010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
150010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void SystemTrayNotifier::RemoveMediaCaptureObserver(
152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    MediaCaptureObserver* observer) {
153010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  media_capture_observers_.RemoveObserver(observer);
154010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
155010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::AddScreenCaptureObserver(
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ScreenCaptureObserver* observer) {
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  screen_capture_observers_.AddObserver(observer);
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::RemoveScreenCaptureObserver(
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ScreenCaptureObserver* observer) {
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  screen_capture_observers_.RemoveObserver(observer);
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
166868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void SystemTrayNotifier::AddScreenShareObserver(
167868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    ScreenShareObserver* observer) {
168868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  screen_share_observers_.AddObserver(observer);
169868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
170868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
171868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void SystemTrayNotifier::RemoveScreenShareObserver(
172868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    ScreenShareObserver* observer) {
173868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  screen_share_observers_.RemoveObserver(observer);
174868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::AddLastWindowClosedObserver(
177a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    LastWindowClosedObserver* observer) {
178a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  last_window_closed_observers_.AddObserver(observer);
179a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
181a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::RemoveLastWindowClosedObserver(
182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    LastWindowClosedObserver* observer) {
183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  last_window_closed_observers_.RemoveObserver(observer);
184a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyAccessibilityModeChanged(
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    AccessibilityNotificationVisibility notify) {
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      AccessibilityObserver,
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      accessibility_observers_,
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      OnAccessibilityModeChanged(notify));
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
195a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyAudioOutputVolumeChanged() {
196a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(
197a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      AudioObserver,
198a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      audio_observers_,
199a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OnOutputVolumeChanged());
200a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
201a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
202a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyAudioOutputMuteChanged() {
203a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(
204a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      AudioObserver,
205a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      audio_observers_,
206a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OnOutputMuteChanged());
207a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
208a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
209a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyAudioNodesChanged() {
210a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(
211a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      AudioObserver,
212a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      audio_observers_,
213a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OnAudioNodesChanged());
214a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
215a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
216a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyAudioActiveOutputNodeChanged() {
217a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(
218a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      AudioObserver,
219a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      audio_observers_,
220a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OnActiveOutputNodeChanged());
221a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
222a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
223a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyAudioActiveInputNodeChanged() {
224a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(
225a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      AudioObserver,
226a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      audio_observers_,
227a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OnActiveInputNodeChanged());
228a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
229a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
230ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid SystemTrayNotifier::NotifyTracingModeChanged(bool value) {
231ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  FOR_EACH_OBSERVER(
232ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      TracingObserver,
233ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      tracing_observers_,
234ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      OnTracingModeChanged(value));
235ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
236ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyRefreshBluetooth() {
2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(BluetoothObserver,
2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    bluetooth_observers_,
2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    OnBluetoothRefresh());
2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyBluetoothDiscoveringChanged() {
2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(BluetoothObserver,
2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    bluetooth_observers_,
2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    OnBluetoothDiscoveringChanged());
2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyRefreshClock() {
2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(ClockObserver, clock_observers_, Refresh());
2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyDateFormatChanged() {
2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(ClockObserver,
2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    clock_observers_,
2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    OnDateFormatChanged());
2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifySystemClockTimeUpdated() {
2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(ClockObserver,
2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    clock_observers_,
2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    OnSystemClockTimeUpdated());
2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid SystemTrayNotifier::NotifySystemClockCanSetTimeChanged(bool can_set_time) {
2665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  FOR_EACH_OBSERVER(ClockObserver,
2675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                    clock_observers_,
2685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                    OnSystemClockCanSetTimeChanged(can_set_time));
2695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
2705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
271a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyRefreshIME() {
2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(IMEObserver,
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    ime_observers_,
274a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    OnIMERefresh());
2755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
2765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyLocaleChanged(
2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    LocaleObserver::Delegate* delegate,
2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& cur_locale,
2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& from_locale,
2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& to_locale) {
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(
2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LocaleObserver,
2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      locale_observers_,
2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      OnLocaleChanged(delegate, cur_locale, from_locale, to_locale));
2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyUpdateRecommended(
2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    UpdateObserver::UpdateSeverity severity) {
2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(UpdateObserver,
2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    update_observers_,
2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    OnUpdateRecommended(severity));
2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyUserUpdate() {
2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(UserObserver,
2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    user_observers_,
2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    OnUserUpdate());
2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)void SystemTrayNotifier::NotifyUserAddedToSession() {
3024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FOR_EACH_OBSERVER(UserObserver,
3034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    user_observers_,
3044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    OnUserAddedToSession());
3054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS)
3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
309a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyShowLoginButtonChanged(bool show_login_button) {
310a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(LogoutButtonObserver,
311a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    logout_button_observers_,
312a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    OnShowLogoutButtonInTrayChanged(show_login_button));
313a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
314a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
315a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyLogoutDialogDurationChanged(
316a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    base::TimeDelta duration) {
317a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(LogoutButtonObserver,
318a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    logout_button_observers_,
319a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    OnLogoutDialogDurationChanged(duration));
320a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
321a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
322a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifySessionStartTimeChanged() {
323a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(SessionLengthLimitObserver,
324a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    session_length_limit_observers_,
325a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    OnSessionStartTimeChanged());
326a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
327a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
328a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifySessionLengthLimitChanged() {
329a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(SessionLengthLimitObserver,
330a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    session_length_limit_observers_,
331a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    OnSessionLengthLimitChanged());
332a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
333a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
33490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void SystemTrayNotifier::NotifyRequestToggleWifi() {
3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(NetworkObserver,
3362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    network_observers_,
33790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                    RequestToggleWifi());
3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
340a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyOnCaptivePortalDetected(
341a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    const std::string& service_path) {
342a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(NetworkPortalDetectorObserver,
343a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    network_portal_detector_observers_,
344a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    OnCaptivePortalDetected(service_path));
345a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
346a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
3472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyEnterpriseDomainChanged() {
3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(EnterpriseDomainObserver, enterprise_domain_observers_,
3492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      OnEnterpriseDomainChanged());
3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
352010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void SystemTrayNotifier::NotifyMediaCaptureChanged() {
353010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  FOR_EACH_OBSERVER(
354010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      MediaCaptureObserver, media_capture_observers_, OnMediaCaptureChanged());
355010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
356010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
3572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyScreenCaptureStart(
3582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const base::Closure& stop_callback,
359c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const base::string16& sharing_app_name) {
3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(ScreenCaptureObserver, screen_capture_observers_,
3612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    OnScreenCaptureStart(stop_callback, sharing_app_name));
3622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
3632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SystemTrayNotifier::NotifyScreenCaptureStop() {
3652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FOR_EACH_OBSERVER(ScreenCaptureObserver, screen_capture_observers_,
3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    OnScreenCaptureStop());
3672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
369868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void SystemTrayNotifier::NotifyScreenShareStart(
370868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    const base::Closure& stop_callback,
371868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    const base::string16& helper_name) {
372868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FOR_EACH_OBSERVER(ScreenShareObserver, screen_share_observers_,
373868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                    OnScreenShareStart(stop_callback, helper_name));
374868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
375868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
376868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)void SystemTrayNotifier::NotifyScreenShareStop() {
377868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FOR_EACH_OBSERVER(ScreenShareObserver, screen_share_observers_,
378868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                    OnScreenShareStop());
379868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
380868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
381a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SystemTrayNotifier::NotifyLastWindowClosed() {
382a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  FOR_EACH_OBSERVER(LastWindowClosedObserver,
383a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    last_window_closed_observers_,
384a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                    OnLastWindowClosed());
385a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
386a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // OS_CHROMEOS
3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace ash
390