diff options
author | mlamouri@chromium.org <mlamouri@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-17 15:35:04 +0000 |
---|---|---|
committer | mlamouri@chromium.org <mlamouri@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-17 15:35:04 +0000 |
commit | 4dda6a6cb797c4aab5fa82be360687c72d9079d2 (patch) | |
tree | 761f47a69d05501c645e8d63bd370984c059520d | |
parent | 151eaa001ed7b11b190c1dd0c6d3dfc9f35125d9 (diff) | |
download | chromium_src-4dda6a6cb797c4aab5fa82be360687c72d9079d2.zip chromium_src-4dda6a6cb797c4aab5fa82be360687c72d9079d2.tar.gz chromium_src-4dda6a6cb797c4aab5fa82be360687c72d9079d2.tar.bz2 |
Allow browser process to request selection of word around caret.
This adds an IPC message for the browser process to be able to
request the renderer to select the word around the caret.
If the selection happens, the browser process will received a
SelectionChanged message back.
BUG=330238
Review URL: https://codereview.chromium.org/267563003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271206 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/browser/renderer_host/render_view_host_impl.cc | 4 | ||||
-rw-r--r-- | content/browser/renderer_host/render_view_host_impl.h | 1 | ||||
-rw-r--r-- | content/common/view_messages.h | 2 | ||||
-rw-r--r-- | content/public/browser/render_view_host.h | 3 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 10 | ||||
-rw-r--r-- | content/renderer/render_view_impl.h | 1 |
6 files changed, 21 insertions, 0 deletions
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc index 5503d2f..5f211dc 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc @@ -1691,4 +1691,8 @@ void RenderViewHostImpl::AttachToFrameTree() { frame_tree->ResetForMainFrameSwap(); } +void RenderViewHostImpl::SelectWordAroundCaret() { + Send(new ViewMsg_SelectWordAroundCaret(GetRoutingID())); +} + } // namespace content diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h index 4e3d5ce..cc67af9 100644 --- a/content/browser/renderer_host/render_view_host_impl.h +++ b/content/browser/renderer_host/render_view_host_impl.h @@ -210,6 +210,7 @@ class CONTENT_EXPORT RenderViewHostImpl virtual void GetAudioOutputControllers( const GetAudioOutputControllersCallback& callback) const OVERRIDE; virtual void SetWebUIHandle(mojo::ScopedMessagePipeHandle handle) OVERRIDE; + virtual void SelectWordAroundCaret() OVERRIDE; #if defined(OS_ANDROID) virtual void ActivateNearestFindResult(int request_id, diff --git a/content/common/view_messages.h b/content/common/view_messages.h index 462ac60..08c9ed3 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -994,6 +994,8 @@ IPC_MESSAGE_ROUTED2(ViewMsg_ReclaimCompositorResources, uint32 /* output_surface_id */, cc::CompositorFrameAck /* ack */) +IPC_MESSAGE_ROUTED0(ViewMsg_SelectWordAroundCaret) + // ----------------------------------------------------------------------------- // Messages sent from the renderer to the browser. diff --git a/content/public/browser/render_view_host.h b/content/public/browser/render_view_host.h index 629cdbd..559c0ef 100644 --- a/content/public/browser/render_view_host.h +++ b/content/public/browser/render_view_host.h @@ -213,6 +213,9 @@ class CONTENT_EXPORT RenderViewHost : virtual public RenderWidgetHost { // Sets the mojo handle for WebUI pages. virtual void SetWebUIHandle(mojo::ScopedMessagePipeHandle handle) = 0; + // Notify the render view host to select the word around the caret. + virtual void SelectWordAroundCaret() = 0; + #if defined(OS_ANDROID) // Selects and zooms to the find result nearest to the point (x,y) // defined in find-in-page coordinates. diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index a2be9c7..b1dd1b9 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc @@ -1124,6 +1124,7 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { OnReleaseDisambiguationPopupBitmap) IPC_MESSAGE_HANDLER(ViewMsg_WindowSnapshotCompleted, OnWindowSnapshotCompleted) + IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret) #if defined(OS_ANDROID) IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, OnActivateNearestFindResult) @@ -1151,6 +1152,15 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) { return handled; } +void RenderViewImpl::OnSelectWordAroundCaret() { + if (!webview()) + return; + + handling_input_event_ = true; + webview()->focusedFrame()->selectWordAroundCaret(); + handling_input_event_ = false; +} + void RenderViewImpl::OnNavigate(const FrameMsg_Navigate_Params& params) { FOR_EACH_OBSERVER(RenderViewObserver, observers_, Navigate(params.url)); } diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h index 0f41643..ff4fc33 100644 --- a/content/renderer/render_view_impl.h +++ b/content/renderer/render_view_impl.h @@ -766,6 +766,7 @@ class CONTENT_EXPORT RenderViewImpl void OnDisownOpener(); void OnWindowSnapshotCompleted(const int snapshot_id, const gfx::Size& size, const std::vector<unsigned char>& png); + void OnSelectWordAroundCaret(); #if defined(OS_ANDROID) void OnActivateNearestFindResult(int request_id, float x, float y); void OnFindMatchRects(int current_version); |