15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef ASH_SYSTEM_CHROMEOS_SUPERVISED_TRAY_SUPERVISED_USER_H
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define ASH_SYSTEM_CHROMEOS_SUPERVISED_TRAY_SUPERVISED_USER_H
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ash/ash_export.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/system/tray/system_tray_item.h"
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/system/tray/view_click_listener.h"
113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/strings/string16.h"
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace ash {
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class LabelTrayView;
15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass SystemTray;
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ASH_EXPORT TraySupervisedUser : public SystemTrayItem,
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                      public ViewClickListener {
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public:
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  explicit TraySupervisedUser(SystemTray* system_tray);
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual ~TraySupervisedUser();
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // If message is not empty updates content of default view, otherwise hides
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // tray items.
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void UpdateMessage();
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Overridden from SystemTrayItem.
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void DestroyDefaultView() OVERRIDE;
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE;
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Overridden from ViewClickListener.
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void OnViewClicked(views::View* sender) OVERRIDE;
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private:
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  friend class TraySupervisedUserTest;
373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  static const char kNotificationId[];
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  void CreateOrUpdateNotification(const base::string16& new_message);
413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  LabelTrayView* tray_view_;
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Previous login status to avoid showing notification upon unlock.
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  user::LoginStatus status_;
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Previous user supervised state to avoid showing notification upon unlock.
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool is_user_supervised_;
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TraySupervisedUser);
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace ash
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif  // ASH_SYSTEM_CHROMEOS_SUPERVISED_TRAY_SUPERVISED_USER_H
55