Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(606)

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.h

Issue 2317333002: Refactor EventHandler out of RenderWidgetHostViewAura (Closed)
Patch Set: Fix Windows Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_aura.h
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h
index 84b07cf957132fb1f99fa791ae03795c333ddb1d..14a5f0ecccad6a69c3ddbadf789b5a524d74fc1b 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.h
+++ b/content/browser/renderer_host/render_widget_host_view_aura.h
@@ -15,6 +15,7 @@
#include <vector>
#include "base/callback.h"
+#include "base/compiler_specific.h"
#include "base/gtest_prod_util.h"
#include "base/macros.h"
#include "base/memory/linked_ptr.h"
@@ -27,6 +28,7 @@
#include "content/browser/compositor/owned_mailbox.h"
#include "content/browser/renderer_host/delegated_frame_host.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
+#include "content/browser/renderer_host/render_widget_host_view_event_handler.h"
#include "content/browser/renderer_host/text_input_manager.h"
#include "content/common/content_export.h"
#include "content/common/cursors/webcursor.h"
@@ -35,11 +37,9 @@
#include "ui/aura/client/cursor_client_observer.h"
#include "ui/aura/client/focus_change_observer.h"
#include "ui/aura/window_delegate.h"
-#include "ui/aura/window_tracker.h"
#include "ui/aura/window_tree_host_observer.h"
#include "ui/base/ime/text_input_client.h"
#include "ui/display/display_observer.h"
-#include "ui/events/gestures/motion_event_aura.h"
#include "ui/gfx/geometry/insets.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/selection_bound.h"
@@ -95,6 +95,7 @@ struct TextInputState;
// RenderWidgetHostView class hierarchy described in render_widget_host_view.h.
class CONTENT_EXPORT RenderWidgetHostViewAura
: public RenderWidgetHostViewBase,
+ NON_EXPORTED_BASE(public RenderWidgetHostViewEventHandler::Delegate),
public DelegatedFrameHostClient,
public TextInputManager::Observer,
public ui::TextInputClient,
@@ -129,6 +130,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
bool IsShowing() override;
gfx::Rect GetViewBounds() const override;
void SetBackgroundColor(SkColor color) override;
+ bool IsMouseLocked() override;
gfx::Size GetVisibleViewportSize() const override;
void SetInsets(const gfx::Insets& insets) override;
void FocusedNodeTouched(const gfx::Point& location_dips_screen,
@@ -307,18 +309,6 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
void SnapToPhysicalPixelBoundary();
- ui::TouchSelectionController* selection_controller() const {
- return selection_controller_.get();
- }
-
- TouchSelectionControllerClientAura* selection_controller_client() const {
- return selection_controller_client_.get();
- }
-
- OverscrollController* overscroll_controller() const {
- return overscroll_controller_.get();
- }
-
// Called when the context menu is about to be displayed.
// Returns true if the context menu should be displayed. We only return false
// on Windows if the context menu is being displayed in response to a long
@@ -334,6 +324,19 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// Exposed for tests.
cc::SurfaceId SurfaceIdForTesting() const override;
+ // RenderWidgetHostViewEventHandler::Delegate:
+ gfx::Rect ConvertRectToScreen(const gfx::Rect& rect) const override;
+ void ForwardKeyboardEvent(const NativeWebKeyboardEvent& event) override;
+ RenderFrameHostImpl* GetFocusedFrame();
+ bool NeedsMouseCapture() override;
+ void SetTooltipsEnabled(bool enable) override;
+ void ShowContextMenu(const ContextMenuParams& params) override;
+ void Shutdown() override;
+
+ RenderWidgetHostViewEventHandler* event_handler() {
+ return event_handler_.get();
+ }
+
protected:
~RenderWidgetHostViewAura() override;
@@ -344,8 +347,6 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
return delegated_frame_host_.get();
}
- const ui::MotionEventAura& pointer_state() const { return pointer_state_; }
-
private:
friend class InputMethodAuraTestBase;
friend class RenderWidgetHostViewAuraCopyRequestTest;
@@ -411,26 +412,9 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
ui::InputMethod* GetInputMethod() const;
- // Sends shutdown request.
- void Shutdown();
-
// Returns whether the widget needs an input grab to work properly.
bool NeedsInputGrab();
- // Returns whether the widget needs to grab mouse capture to work properly.
- bool NeedsMouseCapture();
-
- // Confirm existing composition text in the webpage and ask the input method
- // to cancel its ongoing composition session.
- void FinishImeCompositionSession();
-
- // This method computes movementX/Y and keeps track of mouse location for
- // mouse lock on all mouse move events.
- // |ui_mouse_event| contains the mouse event received.
- // |event| contains the WebMouseEvent being modified.
- void ModifyEventMovementAndCoords(const ui::MouseEvent& ui_mouse_event,
- blink::WebMouseEvent* event);
-
// Sends an IPC to the renderer process to communicate whether or not
// the mouse cursor is visible anywhere on the screen.
void NotifyRendererOfCursorVisibilityState(bool is_visible);
@@ -439,10 +423,6 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// SchedulePaint() is invoked for |rect|.
void SchedulePaintIfNotInClip(const gfx::Rect& rect, const gfx::Rect& clip);
- // Helper method to determine if, in mouse locked mode, the cursor should be
- // moved to center.
- bool ShouldMoveToCenter();
-
// Called after |window_| is parented to a WindowEventDispatcher.
void AddedToRootWindow();
@@ -486,34 +466,13 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// Detaches |this| from the input method object.
void DetachFromInputMethod();
- // Before calling RenderWidgetHost::ForwardKeyboardEvent(), this method
- // calls our keybindings handler against the event and send matched
- // edit commands to renderer instead.
- void ForwardKeyboardEvent(const NativeWebKeyboardEvent& event);
-
// Dismisses a Web Popup on a mouse or touch press outside the popup and its
// parent.
void ApplyEventFilterForPopupExit(ui::LocatedEvent* event);
- // Converts |rect| from window coordinate to screen coordinate.
- gfx::Rect ConvertRectToScreen(const gfx::Rect& rect) const;
-
// Converts |rect| from screen coordinate to window coordinate.
gfx::Rect ConvertRectFromScreen(const gfx::Rect& rect) const;
- // Helper function to set keyboard focus to the main window.
- void SetKeyboardFocus();
-
- RenderFrameHostImpl* GetFocusedFrame();
-
- // Returns true if the |event| passed in can be forwarded to the renderer.
- bool CanRendererHandleEvent(const ui::MouseEvent* event,
- bool mouse_locked,
- bool selection_popup) const;
-
- // Returns true when we can do SurfaceHitTesting for the event type.
- bool ShouldRouteEvent(const ui::Event* event) const;
-
// Called when the parent window bounds change.
void HandleParentBoundsChanged();
@@ -530,9 +489,9 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// Helper function to create a selection controller.
void CreateSelectionController();
- // Performs gesture handling needed for touch text selection. Sets event as
- // handled if it should not be further processed.
- void HandleGestureForTouchSelection(ui::GestureEvent* event);
+ // Used to set the |popup_child_host_view_| on the |popup_parent_host_view_|
+ // and to notify the |event_handler_|.
+ void SetPopupChild(RenderWidgetHostViewAura* popup_child_host_view);
// Forwards a mouse event to this view's parent window delegate.
void ForwardMouseEventToParent(ui::MouseEvent* event);
@@ -540,10 +499,6 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// Adds/Removes frame observer based on state.
void UpdateNeedsBeginFramesInternal();
- // Returns the RenderViewHostDelegateView instance for this view. Returns
- // NULL on failure.
- RenderViewHostDelegateView* GetRenderViewHostDelegateView();
-
// The model object.
RenderWidgetHostImpl* const host_;
@@ -564,9 +519,6 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// True if in the process of handling a window bounds changed notification.
bool in_bounds_changed_;
- // Is this a fullscreen view?
- bool is_fullscreen_;
-
// Our parent host view, if this is a popup. NULL otherwise.
RenderWidgetHostViewAura* popup_parent_host_view_;
@@ -583,17 +535,9 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// The cursor for the page. This is passed up from the renderer.
WebCursor current_cursor_;
- // Stores the current state of the active pointers targeting this
- // object.
- ui::MotionEventAura pointer_state_;
-
-
// Indicates if there is onging composition text.
bool has_composition_text_;
- // Whether return characters should be passed on to the RenderWidgetHostImpl.
- bool accept_return_character_;
-
// Current tooltip text.
base::string16 tooltip_;
@@ -610,25 +554,6 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// Whether or not a frame observer has been added.
bool added_frame_observer_;
- // Used to record the last position of the mouse.
- // While the mouse is locked, they store the last known position just as mouse
- // lock was entered.
- // Relative to the upper-left corner of the view.
- gfx::Point unlocked_mouse_position_;
- // Relative to the upper-left corner of the screen.
- gfx::Point unlocked_global_mouse_position_;
- // Last cursor position relative to screen. Used to compute movementX/Y.
- gfx::Point global_mouse_position_;
- // In mouse locked mode, we synthetically move the mouse cursor to the center
- // of the window when it reaches the window borders to avoid it going outside.
- // This flag is used to differentiate between these synthetic mouse move
- // events vs. normal mouse move events.
- bool synthetic_move_sent_;
-
- // Used to track the state of the window we're created from. Only used when
- // created fullscreen.
- std::unique_ptr<aura::WindowTracker> host_tracker_;
-
// Used to track the last cursor visibility update that was sent to the
// renderer via NotifyRendererOfCursorVisibilityState().
enum CursorVisibilityState {
@@ -667,12 +592,6 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
bool has_snapped_to_boundary_;
- std::unique_ptr<TouchSelectionControllerClientAura>
- selection_controller_client_;
- std::unique_ptr<ui::TouchSelectionController> selection_controller_;
-
- std::unique_ptr<OverscrollController> overscroll_controller_;
-
// The last scroll offset of the view.
gfx::Vector2dF last_scroll_offset_;
@@ -686,22 +605,17 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
// RenderWidgetHostViewGuest.
bool is_guest_view_hack_;
- // This flag when set ensures that we send over a notification to blink that
- // the current view has focus. Defaults to false.
- bool set_focus_on_mouse_down_or_key_event_;
-
float device_scale_factor_;
- // Allows tests to send gesture events for testing without first sending a
- // corresponding touch sequence, as would be required by
- // RenderWidgetHostInputEventRouter.
- bool disable_input_event_router_for_testing_;
-
// The routing and process IDs for the last RenderWidgetHost which had a
// TextInputState of non-NONE.
int32_t last_active_widget_process_id_;
int32_t last_active_widget_routing_id_;
+ // While this is a ui::EventHandler for targetting, |event_handler_| actually
+ // provides an implementation, and directs events to |host_|.
+ std::unique_ptr<RenderWidgetHostViewEventHandler> event_handler_;
+
base::WeakPtrFactory<RenderWidgetHostViewAura> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAura);

Powered by Google App Engine
This is Rietveld 408576698