• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_TOUCH_TOUCH_HUD_DEBUG_H_
6 #define ASH_TOUCH_TOUCH_HUD_DEBUG_H_
7 
8 #include <map>
9 
10 #include "ash/ash_export.h"
11 #include "ash/touch/touch_observer_hud.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "base/values.h"
14 
15 namespace views {
16 class Label;
17 class View;
18 }
19 
20 namespace ash {
21 namespace internal {
22 
23 class TouchHudCanvas;
24 class TouchLog;
25 
26 // A heads-up display to show touch traces on the screen and log touch events.
27 // As a derivative of TouchObserverHUD, objects of this class manage their own
28 // lifetime.
29 class ASH_EXPORT TouchHudDebug : public TouchObserverHUD {
30  public:
31   enum Mode {
32     FULLSCREEN,
33     REDUCED_SCALE,
34     INVISIBLE,
35   };
36 
37   explicit TouchHudDebug(aura::Window* initial_root);
38 
39   // Returns the log of touch events for all displays as a dictionary mapping id
40   // of each display to its touch log.
41   static scoped_ptr<DictionaryValue> GetAllAsDictionary();
42 
43   // Changes the display mode (e.g. scale, visibility). Calling this repeatedly
44   // cycles between a fixed number of display modes.
45   void ChangeToNextMode();
46 
47   // Returns log of touch events as a list value. Each item in the list is a
48   // trace of one touch point.
49   scoped_ptr<ListValue> GetLogAsList() const;
50 
mode()51   Mode mode() const { return mode_; }
52 
53   // Overriden from TouchObserverHUD.
54   virtual void Clear() OVERRIDE;
55 
56  private:
57   virtual ~TouchHudDebug();
58 
59   void SetMode(Mode mode);
60 
61   void UpdateTouchPointLabel(int index);
62 
63   // Overriden from TouchObserverHUD.
64   virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE;
65   virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE;
66   virtual void SetHudForRootWindowController(
67       RootWindowController* controller) OVERRIDE;
68   virtual void UnsetHudForRootWindowController(
69       RootWindowController* controller) OVERRIDE;
70 
71   static const int kMaxTouchPoints = 32;
72 
73   Mode mode_;
74 
75   scoped_ptr<TouchLog> touch_log_;
76 
77   TouchHudCanvas* canvas_;
78   views::View* label_container_;
79   views::Label* touch_labels_[kMaxTouchPoints];
80 
81   DISALLOW_COPY_AND_ASSIGN(TouchHudDebug);
82 };
83 
84 }  // namespace internal
85 }  // namespace ash
86 
87 #endif  // ASH_TOUCH_TOUCH_HUD_DEBUG_H_
88