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