summaryrefslogtreecommitdiff
path: root/chromium/ash/touch/touch_observer_hud.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/touch/touch_observer_hud.h')
-rw-r--r--chromium/ash/touch/touch_observer_hud.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/chromium/ash/touch/touch_observer_hud.h b/chromium/ash/touch/touch_observer_hud.h
new file mode 100644
index 00000000000..4e74e760727
--- /dev/null
+++ b/chromium/ash/touch/touch_observer_hud.h
@@ -0,0 +1,93 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_TOUCH_TOUCH_OBSERVER_HUD_H_
+#define ASH_TOUCH_TOUCH_OBSERVER_HUD_H_
+
+#include "ash/ash_export.h"
+#include "ash/display/display_controller.h"
+#include "ui/events/event_handler.h"
+#include "ui/gfx/display_observer.h"
+#include "ui/views/widget/widget_observer.h"
+
+#if defined(OS_CHROMEOS)
+#include "chromeos/display/output_configurator.h"
+#endif // defined(OS_CHROMEOS)
+
+namespace views {
+class Widget;
+}
+
+namespace ash {
+namespace internal {
+
+// An event filter which handles system level gesture events. Objects of this
+// class manage their own lifetime.
+class ASH_EXPORT TouchObserverHUD
+ : public ui::EventHandler,
+ public views::WidgetObserver,
+ public gfx::DisplayObserver,
+#if defined(OS_CHROMEOS)
+ public chromeos::OutputConfigurator::Observer,
+#endif // defined(OS_CHROMEOS)
+ public DisplayController::Observer {
+ public:
+ // Called to clear touch points and traces from the screen. Default
+ // implementation does nothing. Sub-classes should implement appropriately.
+ virtual void Clear();
+
+ // Removes the HUD from the screen.
+ void Remove();
+
+ int64 display_id() const { return display_id_; }
+
+ protected:
+ explicit TouchObserverHUD(aura::Window* initial_root);
+
+ virtual ~TouchObserverHUD();
+
+ virtual void SetHudForRootWindowController(
+ RootWindowController* controller) = 0;
+ virtual void UnsetHudForRootWindowController(
+ RootWindowController* controller) = 0;
+
+ views::Widget* widget() { return widget_; }
+
+ // Overriden from ui::EventHandler.
+ virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE;
+
+ // Overridden from views::WidgetObserver.
+ virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
+
+ // Overridden from gfx::DisplayObserver.
+ virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE;
+ virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE;
+ virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE;
+
+#if defined(OS_CHROMEOS)
+ // Overriden from chromeos::OutputConfigurator::Observer.
+ virtual void OnDisplayModeChanged(
+ const std::vector<chromeos::OutputConfigurator::OutputSnapshot>& outputs)
+ OVERRIDE;
+#endif // defined(OS_CHROMEOS)
+
+ // Overriden form DisplayController::Observer.
+ virtual void OnDisplayConfigurationChanging() OVERRIDE;
+ virtual void OnDisplayConfigurationChanged() OVERRIDE;
+
+ private:
+ friend class TouchHudTestBase;
+
+ const int64 display_id_;
+ aura::Window* root_window_;
+
+ views::Widget* widget_;
+
+ DISALLOW_COPY_AND_ASSIGN(TouchObserverHUD);
+};
+
+} // namespace internal
+} // namespace ash
+
+#endif // ASH_TOUCH_TOUCH_OBSERVER_HUD_H_