diff options
Diffstat (limited to 'chromium/ash/touch/touch_observer_hud.h')
-rw-r--r-- | chromium/ash/touch/touch_observer_hud.h | 93 |
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_ |