Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ash / touch / touch_observer_hud.h
1 // Copyright (c) 2012 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_OBSERVER_HUD_H_
6 #define ASH_TOUCH_TOUCH_OBSERVER_HUD_H_
7
8 #include "ash/ash_export.h"
9 #include "ash/display/display_controller.h"
10 #include "ui/events/event_handler.h"
11 #include "ui/gfx/display_observer.h"
12 #include "ui/views/widget/widget_observer.h"
13
14 #if defined(OS_CHROMEOS)
15 #include "ui/display/chromeos/display_configurator.h"
16 #endif  // defined(OS_CHROMEOS)
17
18 namespace views {
19 class Widget;
20 }
21
22 namespace ash {
23
24 // An event filter which handles system level gesture events. Objects of this
25 // class manage their own lifetime.
26 class ASH_EXPORT TouchObserverHUD : public ui::EventHandler,
27                                     public views::WidgetObserver,
28                                     public gfx::DisplayObserver,
29 #if defined(OS_CHROMEOS)
30                                     public ui::DisplayConfigurator::Observer,
31 #endif  // defined(OS_CHROMEOS)
32                                     public DisplayController::Observer {
33  public:
34   // Called to clear touch points and traces from the screen. Default
35   // implementation does nothing. Sub-classes should implement appropriately.
36   virtual void Clear();
37
38   // Removes the HUD from the screen.
39   void Remove();
40
41   int64 display_id() const { return display_id_; }
42
43  protected:
44   explicit TouchObserverHUD(aura::Window* initial_root);
45
46   ~TouchObserverHUD() override;
47
48   virtual void SetHudForRootWindowController(
49       RootWindowController* controller) = 0;
50   virtual void UnsetHudForRootWindowController(
51       RootWindowController* controller) = 0;
52
53   views::Widget* widget() { return widget_; }
54
55   // Overriden from ui::EventHandler.
56   void OnTouchEvent(ui::TouchEvent* event) override;
57
58   // Overridden from views::WidgetObserver.
59   void OnWidgetDestroying(views::Widget* widget) override;
60
61   // Overridden from gfx::DisplayObserver.
62   void OnDisplayAdded(const gfx::Display& new_display) override;
63   void OnDisplayRemoved(const gfx::Display& old_display) override;
64   void OnDisplayMetricsChanged(const gfx::Display& display,
65                                uint32_t metrics) override;
66
67 #if defined(OS_CHROMEOS)
68   // Overriden from ui::DisplayConfigurator::Observer.
69   virtual void OnDisplayModeChanged(
70       const ui::DisplayConfigurator::DisplayStateList& outputs) override;
71 #endif  // defined(OS_CHROMEOS)
72
73   // Overriden form DisplayController::Observer.
74   void OnDisplaysInitialized() override;
75   void OnDisplayConfigurationChanging() override;
76   void OnDisplayConfigurationChanged() override;
77
78  private:
79   friend class TouchHudTestBase;
80
81   const int64 display_id_;
82   aura::Window* root_window_;
83
84   views::Widget* widget_;
85
86   DISALLOW_COPY_AND_ASSIGN(TouchObserverHUD);
87 };
88
89 }  // namespace ash
90
91 #endif  // ASH_TOUCH_TOUCH_OBSERVER_HUD_H_