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 13namespace ash { 14class LabelTrayView; 15class SystemTray; 16 17class 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