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. 4 5#ifndef ASH_SYSTEM_TRAY_TRACING_H_ 6#define ASH_SYSTEM_TRAY_TRACING_H_ 7 8#include "ash/ash_export.h" 9#include "ash/system/tray/tray_image_item.h" 10 11namespace views { 12class View; 13} 14 15namespace ash { 16 17class ASH_EXPORT TracingObserver { 18 public: 19 virtual ~TracingObserver() {} 20 21 // Notifies when tracing mode changes. 22 virtual void OnTracingModeChanged(bool value) = 0; 23}; 24 25namespace internal { 26 27// This is the item that displays when users enable performance tracing at 28// chrome://slow. It alerts them that this mode is running, and provides an 29// easy way to open the page to disable it. 30class TrayTracing : public TrayImageItem, 31 public TracingObserver { 32 public: 33 explicit TrayTracing(SystemTray* system_tray); 34 virtual ~TrayTracing(); 35 36 private: 37 void SetTrayIconVisible(bool visible); 38 39 // Overridden from TrayImageItem. 40 virtual bool GetInitialVisibility() OVERRIDE; 41 virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 42 virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 43 virtual void DestroyDefaultView() OVERRIDE; 44 virtual void DestroyDetailedView() OVERRIDE; 45 46 // Overridden from TracingObserver. 47 virtual void OnTracingModeChanged(bool value) OVERRIDE; 48 49 views::View* default_; 50 51 DISALLOW_COPY_AND_ASSIGN(TrayTracing); 52}; 53 54} // namespace internal 55} // namespace ash 56 57#endif // ASH_SYSTEM_TRAY_TRACING_H_ 58