Index: content/browser/frame_host/render_frame_host_impl.cc |
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc |
index 03fcb62c44a2704ab860d574114257034d3150c5..261f71178fa16780630a1cce092acd07c6b88dc9 100644 |
--- a/content/browser/frame_host/render_frame_host_impl.cc |
+++ b/content/browser/frame_host/render_frame_host_impl.cc |
@@ -116,7 +116,7 @@ |
#include "content/browser/media/android/media_player_renderer.h" |
#include "media/base/audio_renderer_sink.h" |
#include "media/base/video_renderer_sink.h" |
-#include "media/mojo/services/mojo_renderer_service.h" //nogncheck |
+#include "media/mojo/services/mojo_renderer_service.h" // nogncheck |
#endif |
#if defined(OS_MACOSX) |
@@ -124,9 +124,7 @@ |
#endif |
#if defined(ENABLE_WEBVR) |
-#include "base/command_line.h" |
-#include "content/public/common/content_switches.h" |
-#include "device/vr/vr_service_impl.h" // nogncheck |
+#include "device/vr/vr_service_impl.h" // nogncheck |
#endif |
using base::TimeDelta; |
@@ -299,6 +297,7 @@ RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance, |
web_ui_type_(WebUI::kNoWebUI), |
pending_web_ui_type_(WebUI::kNoWebUI), |
should_reuse_web_ui_(false), |
+ has_selection_(false), |
last_navigation_lofi_state_(LOFI_UNSPECIFIED), |
frame_host_binding_(this), |
weak_ptr_factory_(this) { |
@@ -384,9 +383,8 @@ RenderFrameHostImpl::~RenderFrameHostImpl() { |
// the dtor has run. (It may also be null in tests.) |
swapout_event_monitor_timeout_.reset(); |
- for (const auto& iter: visual_state_callbacks_) { |
+ for (const auto& iter : visual_state_callbacks_) |
iter.second.Run(false); |
- } |
if (render_widget_host_ && |
render_widget_host_->owned_by_render_frame_host()) { |
@@ -708,6 +706,7 @@ bool RenderFrameHostImpl::OnMessageReceived(const IPC::Message &msg) { |
OnDidChangeLoadProgress) |
IPC_MESSAGE_HANDLER(FrameHostMsg_SerializeAsMHTMLResponse, |
OnSerializeAsMHTMLResponse) |
+ IPC_MESSAGE_HANDLER(FrameHostMsg_SelectionChanged, OnSelectionChanged) |
#if defined(USE_EXTERNAL_POPUP_MENU) |
IPC_MESSAGE_HANDLER(FrameHostMsg_ShowPopup, OnShowPopup) |
IPC_MESSAGE_HANDLER(FrameHostMsg_HidePopup, OnHidePopup) |
@@ -2130,6 +2129,13 @@ void RenderFrameHostImpl::OnSerializeAsMHTMLResponse( |
renderer_main_thread_time); |
} |
+void RenderFrameHostImpl::OnSelectionChanged(const base::string16& text, |
+ uint32_t offset, |
+ const gfx::Range& range) { |
+ has_selection_ = !text.empty(); |
+ GetRenderWidgetHost()->OnSelectionChanged(text, offset, range); |
+} |
+ |
#if defined(USE_EXTERNAL_POPUP_MENU) |
void RenderFrameHostImpl::OnShowPopup( |
const FrameHostMsg_ShowPopup_Params& params) { |
@@ -2907,6 +2913,10 @@ void RenderFrameHostImpl::FilesSelectedInChooser( |
Send(new FrameMsg_RunFileChooserResponse(routing_id_, files)); |
} |
+bool RenderFrameHostImpl::HasSelection() { |
+ return has_selection_; |
+} |
+ |
void RenderFrameHostImpl::GetInterfaceProvider( |
shell::mojom::InterfaceProviderRequest interfaces) { |
interface_registry_->Bind(std::move(interfaces)); |