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