Index: content/browser/renderer_host/render_widget_host_view_aura.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc |
index 27a81b918938a8a67879766d15765e9ba7da83bd..c734282d2f2084ca67d7fdf72ce19b3aa3ca7a0e 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc |
@@ -629,7 +629,8 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host) |
accelerated_compositing_state_changed_(false), |
can_lock_compositor_(YES), |
paint_observer_(NULL), |
- accessible_parent_(NULL) { |
+ accessible_parent_(NULL), |
+ touch_editing_client_(NULL) { |
host_->SetView(this); |
window_observer_.reset(new WindowObserver(this)); |
aura::client::SetTooltipText(window_, &tooltip_); |
@@ -791,6 +792,10 @@ void RenderWidgetHostViewAura::SetBounds(const gfx::Rect& rect) { |
} |
window_->SetBounds(rect); |
host_->WasResized(); |
+ if (touch_editing_client_) { |
+ touch_editing_client_->OnSelectionOrCursorChanged(selection_anchor_rect_, |
+ selection_focus_rect_); |
+ } |
} |
gfx::NativeView RenderWidgetHostViewAura::GetNativeView() const { |
@@ -996,6 +1001,8 @@ void RenderWidgetHostViewAura::TextInputStateChanged( |
can_compose_inline_ = params.can_compose_inline; |
if (GetInputMethod()) |
GetInputMethod()->OnTextInputTypeChanged(this); |
+ if (touch_editing_client_) |
+ touch_editing_client_->OnTextInputTypeChanged(text_input_type_); |
} |
} |
@@ -1111,6 +1118,11 @@ void RenderWidgetHostViewAura::SelectionBoundsChanged( |
if (GetInputMethod()) |
GetInputMethod()->OnCaretBoundsChanged(this); |
+ |
+ if (touch_editing_client_) { |
+ touch_editing_client_->OnSelectionOrCursorChanged(selection_anchor_rect_, |
+ selection_focus_rect_); |
+ } |
} |
void RenderWidgetHostViewAura::ScrollOffsetChanged() { |
@@ -1718,6 +1730,11 @@ gfx::Rect RenderWidgetHostViewAura::GetBoundsInRootWindow() { |
return window_->GetToplevelWindow()->GetBoundsInScreen(); |
} |
+void RenderWidgetHostViewAura::GestureEventAck(int gesture_event_type) { |
+ if (touch_editing_client_) |
+ touch_editing_client_->GestureEventAck(gesture_event_type); |
+} |
+ |
void RenderWidgetHostViewAura::ProcessAckedTouchEvent( |
const WebKit::WebTouchEvent& touch_event, InputEventAckState ack_result) { |
ScopedVector<ui::TouchEvent> events; |
@@ -2059,6 +2076,8 @@ bool RenderWidgetHostViewAura::CanFocus() { |
void RenderWidgetHostViewAura::OnCaptureLost() { |
host_->LostCapture(); |
+ if (touch_editing_client_) |
+ touch_editing_client_->EndTouchEditing(); |
} |
void RenderWidgetHostViewAura::OnPaint(gfx::Canvas* canvas) { |
@@ -2178,6 +2197,9 @@ scoped_refptr<ui::Texture> RenderWidgetHostViewAura::CopyTexture() { |
void RenderWidgetHostViewAura::OnKeyEvent(ui::KeyEvent* event) { |
TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnKeyEvent"); |
+ if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event)) |
+ return; |
+ |
if (popup_child_host_view_ && popup_child_host_view_->NeedsInputGrab()) { |
popup_child_host_view_->OnKeyEvent(event); |
if (event->handled()) |
@@ -2227,6 +2249,9 @@ void RenderWidgetHostViewAura::OnKeyEvent(ui::KeyEvent* event) { |
void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) { |
TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnMouseEvent"); |
+ if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event)) |
+ return; |
+ |
if (mouse_locked_) { |
// Hide the cursor if someone else has shown it. |
aura::client::CursorClient* cursor_client = |
@@ -2331,6 +2356,9 @@ void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) { |
void RenderWidgetHostViewAura::OnScrollEvent(ui::ScrollEvent* event) { |
TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnScrollEvent"); |
+ if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event)) |
+ return; |
+ |
if (event->type() == ui::ET_SCROLL) { |
if (event->finger_count() != 2) |
return; |
@@ -2355,6 +2383,9 @@ void RenderWidgetHostViewAura::OnScrollEvent(ui::ScrollEvent* event) { |
void RenderWidgetHostViewAura::OnTouchEvent(ui::TouchEvent* event) { |
TRACE_EVENT0("browser", "RenderWidgetHostViewAura::OnTouchEvent"); |
+ if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event)) |
+ return; |
+ |
// Update the touch event first. |
WebKit::WebTouchPoint* point = UpdateWebTouchEventFromUIEvent(*event, |
&touch_event_); |
@@ -2385,6 +2416,9 @@ void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) { |
return; |
} |
+ if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event)) |
+ return; |
+ |
RenderViewHostDelegate* delegate = NULL; |
if (popup_type_ == WebKit::WebPopupTypeNone && !is_fullscreen_) |
delegate = RenderViewHost::From(host_)->GetDelegate(); |
@@ -2502,6 +2536,8 @@ void RenderWidgetHostViewAura::OnWindowFocused(aura::Window* gained_focus, |
in_shutdown_ = true; |
host_->Shutdown(); |
} |
+ if (touch_editing_client_) |
+ touch_editing_client_->EndTouchEditing(); |
} |
} |
@@ -2640,6 +2676,8 @@ void RenderWidgetHostViewAura::OnLostResources() { |
RenderWidgetHostViewAura::~RenderWidgetHostViewAura() { |
if (paint_observer_) |
paint_observer_->OnViewDestroyed(); |
+ if (touch_editing_client_) |
+ touch_editing_client_->OnViewDestroyed(); |
if (!shared_surface_handle_.is_null()) { |
ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
factory->DestroySharedSurfaceHandle(shared_surface_handle_); |