1 // Copyright 2014 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. 4 5 #ifndef ASH_SYSTEM_CHROMEOS_SUPERVISED_TRAY_SUPERVISED_USER_H 6 #define ASH_SYSTEM_CHROMEOS_SUPERVISED_TRAY_SUPERVISED_USER_H 7 8 #include "ash/ash_export.h" 9 #include "ash/system/tray/system_tray_item.h" 10 #include "ash/system/tray/view_click_listener.h" 11 #include "base/strings/string16.h" 12 13 namespace ash { 14 class LabelTrayView; 15 class SystemTray; 16 17 class ASH_EXPORT TraySupervisedUser : public SystemTrayItem, 18 public ViewClickListener { 19 public: 20 explicit TraySupervisedUser(SystemTray* system_tray); 21 virtual ~TraySupervisedUser(); 22 23 // If message is not empty updates content of default view, otherwise hides 24 // tray items. 25 void UpdateMessage(); 26 27 // Overridden from SystemTrayItem. 28 virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 29 virtual void DestroyDefaultView() OVERRIDE; 30 virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE; 31 32 // Overridden from ViewClickListener. 33 virtual void OnViewClicked(views::View* sender) OVERRIDE; 34 35 private: 36 friend class TraySupervisedUserTest; 37 38 static const char kNotificationId[]; 39 40 void CreateOrUpdateNotification(const base::string16& new_message); 41 42 LabelTrayView* tray_view_; 43 // Previous login status to avoid showing notification upon unlock. 44 user::LoginStatus status_; 45 46 // Previous user supervised state to avoid showing notification upon unlock. 47 bool is_user_supervised_; 48 49 DISALLOW_COPY_AND_ASSIGN(TraySupervisedUser); 50 }; 51 52 } // namespace ash 53 54 #endif // ASH_SYSTEM_CHROMEOS_SUPERVISED_TRAY_SUPERVISED_USER_H 55