Chromium Code Reviews| Index: content/renderer/render_view_impl.cc |
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
| index 154c0cb394b79dffdb49ebec54066ddb1cfd9ce1..c677e34ff0819d75e4de674db70847b3c9de8e3d 100644 |
| --- a/content/renderer/render_view_impl.cc |
| +++ b/content/renderer/render_view_impl.cc |
| @@ -1016,6 +1016,20 @@ void RenderViewImpl::PluginFocusChanged(bool focused, int plugin_id) { |
| Send(new ViewHostMsg_PluginFocusChanged(routing_id(), focused, plugin_id)); |
| } |
| +void RenderViewImpl::OnGetRenderedText() { |
| + if (!webview()) |
| + return; |
| + // Get rendered text from WebLocalFrame. |
| + // TODO: Currently IPC truncates any data that has a |
| + // size > kMaximumMessageSize. May be split the text into smaller chunks and |
| + // send back using multiple IPC. See http://crbug.com/393444. |
| + static const size_t kMaximumMessageSize = 64 * 128 * 1024; |
|
jamesr
2014/07/28 22:19:26
64 * 128 * 1024 is hard to parse. can you just say
sarka
2014/07/30 15:56:58
Done.
|
| + std::string text = webview()->mainFrame()->contentAsText( |
| + kMaximumMessageSize).utf8(); |
| + |
| + Send(new ViewMsg_GetRenderedTextCompleted(routing_id(), text)); |
| +} |
| + |
| void RenderViewImpl::StartPluginIme() { |
| IPC::Message* msg = new ViewHostMsg_StartPluginIme(routing_id()); |
| // This message can be sent during event-handling, and needs to be delivered |
| @@ -1128,6 +1142,8 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { |
| OnUpdateTopControlsState) |
| IPC_MESSAGE_HANDLER(ViewMsg_ExtractSmartClipData, OnExtractSmartClipData) |
| #elif defined(OS_MACOSX) |
| + IPC_MESSAGE_HANDLER(ViewMsg_GetRenderedText, |
| + OnGetRenderedText) |
| IPC_MESSAGE_HANDLER(ViewMsg_PluginImeCompositionCompleted, |
| OnPluginImeCompositionCompleted) |
| IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItem, OnSelectPopupMenuItem) |