1ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// found in the LICENSE file. 4ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 5ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#ifndef ASH_SYSTEM_TRAY_TRACING_H_ 6ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#define ASH_SYSTEM_TRAY_TRACING_H_ 7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 8ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/ash_export.h" 9ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/tray/tray_image_item.h" 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 11ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace views { 12ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass View; 13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 15ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace ash { 16ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass ASH_EXPORT TracingObserver { 18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public: 19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual ~TracingObserver() {} 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 21ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Notifies when tracing mode changes. 22ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void OnTracingModeChanged(bool value) = 0; 23ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}; 24ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 25ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// This is the item that displays when users enable performance tracing at 26ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// chrome://slow. It alerts them that this mode is running, and provides an 27ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// easy way to open the page to disable it. 28ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochclass TrayTracing : public TrayImageItem, 29ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public TracingObserver { 30ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public: 31ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch explicit TrayTracing(SystemTray* system_tray); 32ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual ~TrayTracing(); 33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 34ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch private: 35ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch void SetTrayIconVisible(bool visible); 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Overridden from TrayImageItem. 38ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual bool GetInitialVisibility() OVERRIDE; 39ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 40ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 41ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void DestroyDefaultView() OVERRIDE; 42ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void DestroyDetailedView() OVERRIDE; 43ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 44ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Overridden from TracingObserver. 45ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual void OnTracingModeChanged(bool value) OVERRIDE; 46ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 47ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch views::View* default_; 48ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 49ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch DISALLOW_COPY_AND_ASSIGN(TrayTracing); 50ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}; 51ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 52ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace ash 53ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 54ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif // ASH_SYSTEM_TRAY_TRACING_H_ 55