Index: ui/aura/root_window.h |
diff --git a/ui/aura/root_window.h b/ui/aura/root_window.h |
deleted file mode 100644 |
index bbdabd3f753c2b7720050eea5c3de827289f2ea9..0000000000000000000000000000000000000000 |
--- a/ui/aura/root_window.h |
+++ /dev/null |
@@ -1,329 +0,0 @@ |
-// 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 UI_AURA_ROOT_WINDOW_H_ |
-#define UI_AURA_ROOT_WINDOW_H_ |
- |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/gtest_prod_util.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/message_loop/message_loop.h" |
-#include "ui/aura/aura_export.h" |
-#include "ui/aura/client/capture_delegate.h" |
-#include "ui/aura/window_tree_host.h" |
-#include "ui/aura/window_tree_host_delegate.h" |
-#include "ui/base/cursor/cursor.h" |
-#include "ui/compositor/compositor.h" |
-#include "ui/compositor/layer_animation_observer.h" |
-#include "ui/events/event_constants.h" |
-#include "ui/events/event_processor.h" |
-#include "ui/events/event_targeter.h" |
-#include "ui/events/gestures/gesture_recognizer.h" |
-#include "ui/events/gestures/gesture_types.h" |
-#include "ui/gfx/native_widget_types.h" |
-#include "ui/gfx/point.h" |
- |
-namespace gfx { |
-class Size; |
-class Transform; |
-} |
- |
-namespace ui { |
-class GestureEvent; |
-class GestureRecognizer; |
-class KeyEvent; |
-class LayerAnimationSequence; |
-class MouseEvent; |
-class ScrollEvent; |
-class TouchEvent; |
-class ViewProp; |
-} |
- |
-namespace aura { |
-class WindowTreeHost; |
-class RootWindowObserver; |
-class TestScreen; |
-class WindowTargeter; |
- |
-// RootWindow is responsible for hosting a set of windows. |
-class AURA_EXPORT WindowEventDispatcher : public ui::EventProcessor, |
- public ui::GestureEventHelper, |
- public ui::LayerAnimationObserver, |
- public client::CaptureDelegate, |
- public WindowTreeHostDelegate { |
- public: |
- struct AURA_EXPORT CreateParams { |
- // CreateParams with initial_bounds and default host in pixel. |
- explicit CreateParams(const gfx::Rect& initial_bounds); |
- ~CreateParams() {} |
- |
- gfx::Rect initial_bounds; |
- |
- // A host to use in place of the default one that RootWindow will create. |
- // NULL by default. |
- WindowTreeHost* host; |
- }; |
- |
- explicit WindowEventDispatcher(const CreateParams& params); |
- virtual ~WindowEventDispatcher(); |
- |
- // Returns the WindowTreeHost for the specified accelerated widget, or NULL |
- // if there is none associated. |
- static WindowEventDispatcher* GetForAcceleratedWidget( |
- gfx::AcceleratedWidget widget); |
- |
- Window* window() { |
- return const_cast<Window*>( |
- const_cast<const WindowEventDispatcher*>(this)->window()); |
- } |
- const Window* window() const { return window_.get(); } |
- WindowTreeHost* host() { |
- return const_cast<WindowTreeHost*>( |
- const_cast<const WindowEventDispatcher*>(this)->host()); |
- } |
- const WindowTreeHost* host() const { return host_.get(); } |
- Window* mouse_pressed_handler() { return mouse_pressed_handler_; } |
- Window* mouse_moved_handler() { return mouse_moved_handler_; } |
- |
- // Stop listening events in preparation for shutdown. |
- void PrepareForShutdown(); |
- |
- // Repost event for re-processing. Used when exiting context menus. |
- // We only support the ET_MOUSE_PRESSED and ET_GESTURE_TAP_DOWN event |
- // types (although the latter is currently a no-op). |
- void RepostEvent(const ui::LocatedEvent& event); |
- |
- WindowTreeHostDelegate* AsWindowTreeHostDelegate(); |
- |
- // Invoked when the mouse events get enabled or disabled. |
- void OnMouseEventsEnableStateChanged(bool enabled); |
- |
- // Returns a target window for the given gesture event. |
- Window* GetGestureTarget(ui::GestureEvent* event); |
- |
- // Handles a gesture event. Returns true if handled. Unlike the other |
- // event-dispatching function (e.g. for touch/mouse/keyboard events), gesture |
- // events are dispatched from GestureRecognizer instead of WindowTreeHost. |
- void DispatchGestureEvent(ui::GestureEvent* event); |
- |
- // Invoked when |window| is being destroyed. |
- void OnWindowDestroying(Window* window); |
- |
- // Invoked when |window|'s bounds have changed. |contained_mouse| indicates if |
- // the bounds before change contained the |last_moust_location()|. |
- void OnWindowBoundsChanged(Window* window, bool contained_mouse); |
- |
- // Dispatches OnMouseExited to the |window| which is hiding if nessessary. |
- void DispatchMouseExitToHidingWindow(Window* window); |
- |
- // Dispatches a ui::ET_MOUSE_EXITED event at |point|. |
- void DispatchMouseExitAtPoint(const gfx::Point& point); |
- |
- // Invoked when |window|'s visibility has changed. |
- void OnWindowVisibilityChanged(Window* window, bool is_visible); |
- |
- // Invoked when |window|'s tranfrom has changed. |contained_mouse| |
- // indicates if the bounds before change contained the |
- // |last_moust_location()|. |
- void OnWindowTransformed(Window* window, bool contained_mouse); |
- |
- // Invoked when the keyboard mapping (in X11 terms: the mapping between |
- // keycodes and keysyms) has changed. |
- void OnKeyboardMappingChanged(); |
- |
- // The system windowing system has sent a request that we close our window. |
- void OnWindowTreeHostCloseRequested(); |
- |
- // Add/remove observer. There is no need to remove the observer if |
- // the root window is being deleted. In particular, you SHOULD NOT remove |
- // in |WindowObserver::OnWindowDestroying| of the observer observing |
- // the root window because it is too late to remove it. |
- void AddRootWindowObserver(RootWindowObserver* observer); |
- void RemoveRootWindowObserver(RootWindowObserver* observer); |
- |
- // Gesture Recognition ------------------------------------------------------- |
- |
- // When a touch event is dispatched to a Window, it may want to process the |
- // touch event asynchronously. In such cases, the window should consume the |
- // event during the event dispatch. Once the event is properly processed, the |
- // window should let the WindowEventDispatcher know about the result of the |
- // event processing, so that gesture events can be properly created and |
- // dispatched. |
- void ProcessedTouchEvent(ui::TouchEvent* event, |
- Window* window, |
- ui::EventResult result); |
- |
- // These methods are used to defer the processing of mouse/touch events |
- // related to resize. A client (typically a RenderWidgetHostViewAura) can call |
- // HoldPointerMoves when an resize is initiated and then ReleasePointerMoves |
- // once the resize is completed. |
- // |
- // More than one hold can be invoked and each hold must be cancelled by a |
- // release before we resume normal operation. |
- void HoldPointerMoves(); |
- void ReleasePointerMoves(); |
- |
- // Gets the last location seen in a mouse event in this root window's |
- // coordinates. This may return a point outside the root window's bounds. |
- gfx::Point GetLastMouseLocationInRoot() const; |
- |
- private: |
- FRIEND_TEST_ALL_PREFIXES(WindowEventDispatcherTest, |
- KeepTranslatedEventInRoot); |
- |
- friend class Window; |
- friend class TestScreen; |
- |
- // The parameter for OnWindowHidden() to specify why window is hidden. |
- enum WindowHiddenReason { |
- WINDOW_DESTROYED, // Window is destroyed. |
- WINDOW_HIDDEN, // Window is hidden. |
- WINDOW_MOVING, // Window is temporarily marked as hidden due to move |
- // across root windows. |
- }; |
- |
- // Updates the event with the appropriate transform for the device scale |
- // factor. The WindowTreeHostDelegate dispatches events in the physical pixel |
- // coordinate. But the event processing from WindowEventDispatcher onwards |
- // happen in device-independent pixel coordinate. So it is necessary to update |
- // the event received from the host. |
- void TransformEventForDeviceScaleFactor(ui::LocatedEvent* event); |
- |
- // Dispatches the specified event type (intended for enter/exit) to the |
- // |mouse_moved_handler_|. |
- ui::EventDispatchDetails DispatchMouseEnterOrExit( |
- const ui::MouseEvent& event, |
- ui::EventType type) WARN_UNUSED_RESULT; |
- ui::EventDispatchDetails ProcessGestures( |
- ui::GestureRecognizer::Gestures* gestures) WARN_UNUSED_RESULT; |
- |
- // Called when a Window is attached or detached from the |
- // WindowEventDispatcher. |
- void OnWindowAddedToRootWindow(Window* window); |
- void OnWindowRemovedFromRootWindow(Window* window, Window* new_root); |
- |
- // Called when a window becomes invisible, either by being removed |
- // from root window hierarchy, via SetVisible(false) or being destroyed. |
- // |reason| specifies what triggered the hiding. Note that becoming invisible |
- // will cause a window to lose capture and some windows may destroy themselves |
- // on capture (like DragDropTracker). |
- void OnWindowHidden(Window* invisible, WindowHiddenReason reason); |
- |
- // Cleans up the state of gestures for all windows in |window| (including |
- // |window| itself). This includes cancelling active touch points. |
- void CleanupGestureState(Window* window); |
- |
- // Overridden from aura::client::CaptureDelegate: |
- virtual void UpdateCapture(Window* old_capture, Window* new_capture) OVERRIDE; |
- virtual void OnOtherRootGotCapture() OVERRIDE; |
- virtual void SetNativeCapture() OVERRIDE; |
- virtual void ReleaseNativeCapture() OVERRIDE; |
- |
- // Overridden from ui::EventProcessor: |
- virtual ui::EventTarget* GetRootTarget() OVERRIDE; |
- virtual void PrepareEventForDispatch(ui::Event* event) OVERRIDE; |
- |
- // Overridden from ui::EventDispatcherDelegate. |
- virtual bool CanDispatchToTarget(ui::EventTarget* target) OVERRIDE; |
- virtual ui::EventDispatchDetails PreDispatchEvent(ui::EventTarget* target, |
- ui::Event* event) OVERRIDE; |
- virtual ui::EventDispatchDetails PostDispatchEvent( |
- ui::EventTarget* target, const ui::Event& event) OVERRIDE; |
- |
- // Overridden from ui::GestureEventHelper. |
- virtual bool CanDispatchToConsumer(ui::GestureConsumer* consumer) OVERRIDE; |
- virtual void DispatchPostponedGestureEvent(ui::GestureEvent* event) OVERRIDE; |
- virtual void DispatchCancelTouchEvent(ui::TouchEvent* event) OVERRIDE; |
- |
- // Overridden from ui::LayerAnimationObserver: |
- virtual void OnLayerAnimationEnded( |
- ui::LayerAnimationSequence* animation) OVERRIDE; |
- virtual void OnLayerAnimationScheduled( |
- ui::LayerAnimationSequence* animation) OVERRIDE; |
- virtual void OnLayerAnimationAborted( |
- ui::LayerAnimationSequence* animation) OVERRIDE; |
- |
- // Overridden from aura::WindowTreeHostDelegate: |
- virtual void OnHostCancelMode() OVERRIDE; |
- virtual void OnHostActivated() OVERRIDE; |
- virtual void OnHostLostWindowCapture() OVERRIDE; |
- virtual void OnHostLostMouseGrab() OVERRIDE; |
- virtual void OnHostMoved(const gfx::Point& origin) OVERRIDE; |
- virtual void OnHostResized(const gfx::Size& size) OVERRIDE; |
- virtual void OnCursorMovedToRootLocation( |
- const gfx::Point& root_location) OVERRIDE; |
- virtual WindowEventDispatcher* AsDispatcher() OVERRIDE; |
- virtual const WindowEventDispatcher* AsDispatcher() const OVERRIDE; |
- virtual ui::EventProcessor* GetEventProcessor() OVERRIDE; |
- |
- // We hold and aggregate mouse drags and touch moves as a way of throttling |
- // resizes when HoldMouseMoves() is called. The following methods are used to |
- // dispatch held and newly incoming mouse and touch events, typically when an |
- // event other than one of these needs dispatching or a matching |
- // ReleaseMouseMoves()/ReleaseTouchMoves() is called. NOTE: because these |
- // methods dispatch events from WindowTreeHost the coordinates are in terms of |
- // the root. |
- |
- ui::EventDispatchDetails DispatchHeldEvents() WARN_UNUSED_RESULT; |
- // Creates and dispatches synthesized mouse move event using the |
- // current mouse location. |
- ui::EventDispatchDetails SynthesizeMouseMoveEvent() WARN_UNUSED_RESULT; |
- |
- void SynthesizeMouseMoveEventAsync(); |
- |
- // Posts a task to send synthesized mouse move event if there |
- // is no a pending task. |
- void PostMouseMoveEventAfterWindowChange(); |
- |
- void PreDispatchLocatedEvent(Window* target, ui::LocatedEvent* event); |
- void PreDispatchMouseEvent(Window* target, ui::MouseEvent* event); |
- void PreDispatchTouchEvent(Window* target, ui::TouchEvent* event); |
- |
- // TODO(beng): evaluate the ideal ownership model. |
- scoped_ptr<Window> window_; |
- |
- scoped_ptr<WindowTreeHost> host_; |
- |
- // Touch ids that are currently down. |
- uint32 touch_ids_down_; |
- |
- ObserverList<RootWindowObserver> observers_; |
- |
- Window* mouse_pressed_handler_; |
- Window* mouse_moved_handler_; |
- Window* event_dispatch_target_; |
- Window* old_dispatch_target_; |
- |
- bool synthesize_mouse_move_; |
- |
- // How many move holds are outstanding. We try to defer dispatching |
- // touch/mouse moves while the count is > 0. |
- int move_hold_count_; |
- // The location of |held_move_event_| is in |window_|'s coordinate. |
- scoped_ptr<ui::LocatedEvent> held_move_event_; |
- |
- // Allowing for reposting of events. Used when exiting context menus. |
- scoped_ptr<ui::LocatedEvent> held_repostable_event_; |
- |
- // Set when dispatching a held event. |
- bool dispatching_held_event_; |
- |
- scoped_ptr<ui::ViewProp> prop_; |
- |
- // Used to schedule reposting an event. |
- base::WeakPtrFactory<WindowEventDispatcher> repost_event_factory_; |
- |
- // Used to schedule DispatchHeldEvents() when |move_hold_count_| goes to 0. |
- base::WeakPtrFactory<WindowEventDispatcher> held_event_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WindowEventDispatcher); |
-}; |
- |
-} // namespace aura |
- |
-#endif // UI_AURA_ROOT_WINDOW_H_ |