Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 2b8bcf0f6e9019f91f36b77e5f9a36f3ce3f46a3..86d9a3a75d3761d04d8383417b912e998e2fddbb 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -824,6 +824,7 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) { |
IPC_MESSAGE_HANDLER(InputMsg_SelectAll, OnSelectAll) |
IPC_MESSAGE_HANDLER(InputMsg_SelectRange, OnSelectRange) |
IPC_MESSAGE_HANDLER(InputMsg_Unselect, OnUnselect) |
+ IPC_MESSAGE_HANDLER(InputMsg_MoveSelectionExtent, OnMoveSelectionExtent) |
IPC_MESSAGE_HANDLER(InputMsg_Replace, OnReplace) |
IPC_MESSAGE_HANDLER(InputMsg_ReplaceMisspelling, OnReplaceMisspelling) |
IPC_MESSAGE_HANDLER(InputMsg_ExtendSelectionAndDelete, |
@@ -1224,6 +1225,15 @@ void RenderFrameImpl::OnUnselect() { |
frame_->executeCommand(WebString::fromUTF8("Unselect"), GetFocusedElement()); |
} |
+void RenderFrameImpl::OnMoveSelectionExtent(const gfx::Point& point) { |
+ // This IPC is dispatched by RenderWidgetHost, so use its routing id. |
+ Send(new ViewHostMsg_MoveSelectionExtent_ACK( |
+ GetRenderWidget()->routing_id())); |
+ |
+ base::AutoReset<bool> handling_select_range(&handling_select_range_, true); |
+ frame_->moveSelectionExtent(point); |
+} |
+ |
void RenderFrameImpl::OnReplace(const base::string16& text) { |
if (!frame_->hasSelection()) |
frame_->selectWordAroundCaret(); |