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

Unified Diff: content/renderer/render_view_impl.cc

Issue 14487003: Add a new pair of IPC categories for messages that need handling as input events (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addresses feedback Created 7 years, 8 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
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | content/renderer/render_widget.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 6f1b764f5eaba05664aa4c254707fbb66d410ece..136fe6bd52fd004ec44e39a12c8a2377e55cec47 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -35,6 +35,7 @@
#include "content/common/fileapi/file_system_dispatcher.h"
#include "content/common/fileapi/webfilesystem_callback_dispatcher.h"
#include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h"
+#include "content/common/input_messages.h"
#include "content/common/java_bridge_messages.h"
#include "content/common/pepper_messages.h"
#include "content/common/pepper_plugin_registry.h"
@@ -1000,31 +1001,35 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
bool msg_is_ok = true;
IPC_BEGIN_MESSAGE_MAP_EX(RenderViewImpl, message, msg_is_ok)
+ IPC_MESSAGE_HANDLER(InputMsg_Copy, OnCopy)
+ IPC_MESSAGE_HANDLER(InputMsg_Cut, OnCut)
+ IPC_MESSAGE_HANDLER(InputMsg_Delete, OnDelete)
+ IPC_MESSAGE_HANDLER(InputMsg_ExecuteEditCommand, OnExecuteEditCommand)
+ IPC_MESSAGE_HANDLER(InputMsg_MoveCaret, OnMoveCaret)
+ IPC_MESSAGE_HANDLER(InputMsg_Paste, OnPaste)
+ IPC_MESSAGE_HANDLER(InputMsg_PasteAndMatchStyle, OnPasteAndMatchStyle)
+ IPC_MESSAGE_HANDLER(InputMsg_Redo, OnRedo)
+ IPC_MESSAGE_HANDLER(InputMsg_Replace, OnReplace)
+ IPC_MESSAGE_HANDLER(InputMsg_ReplaceMisspelling, OnReplaceMisspelling)
+ IPC_MESSAGE_HANDLER(InputMsg_ScrollFocusedEditableNodeIntoRect,
+ OnScrollFocusedEditableNodeIntoRect)
+ IPC_MESSAGE_HANDLER(InputMsg_SelectAll, OnSelectAll)
+ IPC_MESSAGE_HANDLER(InputMsg_SelectRange, OnSelectRange)
+ IPC_MESSAGE_HANDLER(InputMsg_SetEditCommandsForNextKeyEvent,
+ OnSetEditCommandsForNextKeyEvent)
+ IPC_MESSAGE_HANDLER(InputMsg_Undo, OnUndo)
+ IPC_MESSAGE_HANDLER(InputMsg_Unselect, OnUnselect)
IPC_MESSAGE_HANDLER(ViewMsg_Navigate, OnNavigate)
IPC_MESSAGE_HANDLER(ViewMsg_Stop, OnStop)
IPC_MESSAGE_HANDLER(ViewMsg_ReloadFrame, OnReloadFrame)
- IPC_MESSAGE_HANDLER(ViewMsg_Undo, OnUndo)
- IPC_MESSAGE_HANDLER(ViewMsg_Redo, OnRedo)
- IPC_MESSAGE_HANDLER(ViewMsg_Cut, OnCut)
- IPC_MESSAGE_HANDLER(ViewMsg_Copy, OnCopy)
- IPC_MESSAGE_HANDLER(ViewMsg_Paste, OnPaste)
- IPC_MESSAGE_HANDLER(ViewMsg_PasteAndMatchStyle, OnPasteAndMatchStyle)
- IPC_MESSAGE_HANDLER(ViewMsg_Replace, OnReplace)
- IPC_MESSAGE_HANDLER(ViewMsg_ReplaceMisspelling, OnReplaceMisspelling)
- IPC_MESSAGE_HANDLER(ViewMsg_Delete, OnDelete)
IPC_MESSAGE_HANDLER(ViewMsg_SetName, OnSetName)
- IPC_MESSAGE_HANDLER(ViewMsg_SelectAll, OnSelectAll)
- IPC_MESSAGE_HANDLER(ViewMsg_Unselect, OnUnselect)
IPC_MESSAGE_HANDLER(ViewMsg_SetEditableSelectionOffsets,
OnSetEditableSelectionOffsets)
IPC_MESSAGE_HANDLER(ViewMsg_SetCompositionFromExistingText,
OnSetCompositionFromExistingText)
IPC_MESSAGE_HANDLER(ViewMsg_ExtendSelectionAndDelete,
OnExtendSelectionAndDelete)
- IPC_MESSAGE_HANDLER(ViewMsg_SelectRange, OnSelectRange)
- IPC_MESSAGE_HANDLER(ViewMsg_MoveCaret, OnMoveCaret)
IPC_MESSAGE_HANDLER(ViewMsg_CopyImageAt, OnCopyImageAt)
- IPC_MESSAGE_HANDLER(ViewMsg_ExecuteEditCommand, OnExecuteEditCommand)
IPC_MESSAGE_HANDLER(ViewMsg_Find, OnFind)
IPC_MESSAGE_HANDLER(ViewMsg_StopFinding, OnStopFinding)
IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom)
@@ -1047,8 +1052,6 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
OnDragSourceSystemDragEnded)
IPC_MESSAGE_HANDLER(ViewMsg_AllowBindings, OnAllowBindings)
IPC_MESSAGE_HANDLER(ViewMsg_SetInitialFocus, OnSetInitialFocus)
- IPC_MESSAGE_HANDLER(ViewMsg_ScrollFocusedEditableNodeIntoRect,
- OnScrollFocusedEditableNodeIntoRect)
IPC_MESSAGE_HANDLER(ViewMsg_UpdateTargetURL_ACK, OnUpdateTargetURLAck)
IPC_MESSAGE_HANDLER(ViewMsg_UpdateWebPreferences, OnUpdateWebPreferences)
IPC_MESSAGE_HANDLER(ViewMsg_TimezoneChange, OnUpdateTimezone)
@@ -1077,8 +1080,6 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
OnOrientationChangeEvent)
IPC_MESSAGE_HANDLER(ViewMsg_PluginActionAt, OnPluginActionAt)
IPC_MESSAGE_HANDLER(ViewMsg_SetActive, OnSetActive)
- IPC_MESSAGE_HANDLER(ViewMsg_SetEditCommandsForNextKeyEvent,
- OnSetEditCommandsForNextKeyEvent)
IPC_MESSAGE_HANDLER(ViewMsg_CustomContextMenuAction,
OnCustomContextMenuAction)
IPC_MESSAGE_HANDLER(ViewMsg_AsyncOpenFile_ACK, OnAsyncFileOpened)
@@ -1101,7 +1102,7 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_SetAccessibilityMode, OnSetAccessibilityMode)
IPC_MESSAGE_HANDLER(ViewMsg_DisownOpener, OnDisownOpener)
#if defined(OS_ANDROID)
- IPC_MESSAGE_HANDLER(ViewMsg_ActivateNearestFindResult,
+ IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult,
OnActivateNearestFindResult)
IPC_MESSAGE_HANDLER(ViewMsg_FindMatchRects, OnFindMatchRects)
IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItems, OnSelectPopupMenuItems)
@@ -1110,7 +1111,7 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_UpdateTopControlsState,
OnUpdateTopControlsState)
#elif defined(OS_MACOSX)
- IPC_MESSAGE_HANDLER(ViewMsg_CopyToFindPboard, OnCopyToFindPboard)
+ IPC_MESSAGE_HANDLER(InputMsg_CopyToFindPboard, OnCopyToFindPboard)
IPC_MESSAGE_HANDLER(ViewMsg_PluginImeCompositionCompleted,
OnPluginImeCompositionCompleted)
IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItem, OnSelectPopupMenuItem)
@@ -1360,15 +1361,6 @@ void RenderViewImpl::OnCopyImageAt(int x, int y) {
webview()->copyImageAt(WebPoint(x, y));
}
-void RenderViewImpl::OnExecuteEditCommand(const std::string& name,
- const std::string& value) {
- if (!webview() || !webview()->focusedFrame())
- return;
-
- webview()->focusedFrame()->executeCommand(
- WebString::fromUTF8(name), WebString::fromUTF8(value));
-}
-
void RenderViewImpl::OnUpdateTargetURLAck() {
// Check if there is a targeturl waiting to be sent.
if (target_url_status_ == TARGET_PENDING) {
@@ -1379,52 +1371,47 @@ void RenderViewImpl::OnUpdateTargetURLAck() {
target_url_status_ = TARGET_NONE;
}
-void RenderViewImpl::OnUndo() {
+void RenderViewImpl::OnCopy() {
if (!webview())
return;
- webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Undo"));
+ base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
+ webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Copy"),
+ context_menu_node_);
}
-void RenderViewImpl::OnRedo() {
+void RenderViewImpl::OnCut() {
if (!webview())
return;
- webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Redo"));
+ base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
+ webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Cut"));
}
-void RenderViewImpl::OnCut() {
+void RenderViewImpl::OnDelete() {
if (!webview())
return;
- base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
- webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Cut"));
+ webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Delete"));
}
-void RenderViewImpl::OnCopy() {
- if (!webview())
+void RenderViewImpl::OnExecuteEditCommand(const std::string& name,
+ const std::string& value) {
+ if (!webview() || !webview()->focusedFrame())
return;
- base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
- webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Copy"),
- context_menu_node_);
+ webview()->focusedFrame()->executeCommand(
+ WebString::fromUTF8(name), WebString::fromUTF8(value));
}
-#if defined(OS_MACOSX)
-void RenderViewImpl::OnCopyToFindPboard() {
+void RenderViewImpl::OnMoveCaret(const gfx::Point& point) {
if (!webview())
return;
- // Since the find pasteboard supports only plain text, this can be simpler
- // than the |OnCopy()| case.
- WebFrame* frame = webview()->focusedFrame();
- if (frame->hasSelection()) {
- string16 selection = frame->selectionAsText();
- RenderThread::Get()->Send(
- new ClipboardHostMsg_FindPboardWriteStringAsync(selection));
- }
+ Send(new ViewHostMsg_MoveCaret_ACK(routing_id_));
+
+ webview()->focusedFrame()->moveCaretSelectionTowardsWindowPoint(point);
}
-#endif
void RenderViewImpl::OnPaste() {
if (!webview())
@@ -1443,6 +1430,13 @@ void RenderViewImpl::OnPasteAndMatchStyle() {
WebString::fromUTF8("PasteAndMatchStyle"));
}
+void RenderViewImpl::OnRedo() {
+ if (!webview())
+ return;
+
+ webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Redo"));
+}
+
void RenderViewImpl::OnReplace(const string16& text) {
if (!webview())
return;
@@ -1465,27 +1459,47 @@ void RenderViewImpl::OnReplaceMisspelling(const string16& text) {
frame->replaceMisspelledRange(text);
}
-void RenderViewImpl::OnDelete() {
+void RenderViewImpl::OnScrollFocusedEditableNodeIntoRect(
+ const gfx::Rect& rect) {
+ WebKit::WebNode node = GetFocusedNode();
+ if (!node.isNull()) {
+ if (IsEditableNode(node)) {
+ webview()->saveScrollAndScaleState();
+ webview()->scrollFocusedNodeIntoRect(rect);
+ }
+ }
+}
+
+void RenderViewImpl::OnSelectAll() {
if (!webview())
return;
- webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Delete"));
+ base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
+ webview()->focusedFrame()->executeCommand(
+ WebString::fromUTF8("SelectAll"));
}
-void RenderViewImpl::OnSetName(const std::string& name) {
+void RenderViewImpl::OnSelectRange(const gfx::Point& start,
+ const gfx::Point& end) {
if (!webview())
return;
- webview()->mainFrame()->setName(WebString::fromUTF8(name));
+ Send(new ViewHostMsg_SelectRange_ACK(routing_id_));
+
+ base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
+ webview()->focusedFrame()->selectRange(start, end);
}
-void RenderViewImpl::OnSelectAll() {
+void RenderViewImpl::OnSetEditCommandsForNextKeyEvent(
+ const EditCommands& edit_commands) {
+ edit_commands_ = edit_commands;
+}
+
+void RenderViewImpl::OnUndo() {
if (!webview())
return;
- base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
- webview()->focusedFrame()->executeCommand(
- WebString::fromUTF8("SelectAll"));
+ webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Undo"));
}
void RenderViewImpl::OnUnselect() {
@@ -1496,6 +1510,29 @@ void RenderViewImpl::OnUnselect() {
webview()->focusedFrame()->executeCommand(WebString::fromUTF8("Unselect"));
}
+#if defined(OS_MACOSX)
+void RenderViewImpl::OnCopyToFindPboard() {
+ if (!webview())
+ return;
+
+ // Since the find pasteboard supports only plain text, this can be simpler
+ // than the |OnCopy()| case.
+ WebFrame* frame = webview()->focusedFrame();
+ if (frame->hasSelection()) {
+ string16 selection = frame->selectionAsText();
+ RenderThread::Get()->Send(
+ new ClipboardHostMsg_FindPboardWriteStringAsync(selection));
+ }
+}
+#endif
+
+void RenderViewImpl::OnSetName(const std::string& name) {
+ if (!webview())
+ return;
+
+ webview()->mainFrame()->setName(WebString::fromUTF8(name));
+}
+
void RenderViewImpl::OnSetEditableSelectionOffsets(int start, int end) {
base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
DCHECK(!handling_ime_event_);
@@ -1527,26 +1564,6 @@ void RenderViewImpl::OnExtendSelectionAndDelete(int before, int after) {
UpdateTextInputState(DO_NOT_SHOW_IME);
}
-void RenderViewImpl::OnSelectRange(const gfx::Point& start,
- const gfx::Point& end) {
- if (!webview())
- return;
-
- Send(new ViewHostMsg_SelectRange_ACK(routing_id_));
-
- base::AutoReset<bool> handling_select_range(&handling_select_range_, true);
- webview()->focusedFrame()->selectRange(start, end);
-}
-
-void RenderViewImpl::OnMoveCaret(const gfx::Point& point) {
- if (!webview())
- return;
-
- Send(new ViewHostMsg_MoveCaret_ACK(routing_id_));
-
- webview()->focusedFrame()->moveCaretSelectionTowardsWindowPoint(point);
-}
-
void RenderViewImpl::OnSetHistoryLengthAndPrune(int history_length,
int32 minimum_page_id) {
DCHECK_GE(history_length, 0);
@@ -1585,17 +1602,6 @@ void RenderViewImpl::OnSetInLiveResize(bool in_live_resize) {
}
#endif
-void RenderViewImpl::OnScrollFocusedEditableNodeIntoRect(
- const gfx::Rect& rect) {
- WebKit::WebNode node = GetFocusedNode();
- if (!node.isNull()) {
- if (IsEditableNode(node)) {
- webview()->saveScrollAndScaleState();
- webview()->scrollFocusedNodeIntoRect(rect);
- }
- }
-}
-
#if defined(OS_ANDROID)
void RenderViewImpl::OnUndoScrollFocusedEditableNodeIntoRect() {
const WebNode node = GetFocusedNode();
@@ -5708,11 +5714,6 @@ void RenderViewImpl::OnPluginImeCompositionCompleted(const string16& text,
}
#endif // OS_MACOSX
-void RenderViewImpl::OnSetEditCommandsForNextKeyEvent(
- const EditCommands& edit_commands) {
- edit_commands_ = edit_commands;
-}
-
void RenderViewImpl::Close() {
// We need to grab a pointer to the doomed WebView before we destroy it.
WebView* doomed = webview();
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | content/renderer/render_widget.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698