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