| Index: content/renderer/render_view_impl.cc
|
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
| index 1b23b7a9413320275ef3fbc39b092877b59e20f5..f537332bcbd76ca8ea542e5c5ced373b4dd1b431 100644
|
| --- a/content/renderer/render_view_impl.cc
|
| +++ b/content/renderer/render_view_impl.cc
|
| @@ -1306,6 +1306,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 = 8 * 1024 * 1024;
|
| + 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
|
| @@ -1417,6 +1431,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)
|
|
|