From c7d187a51280987cde8f2965085867b3e66981c9 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Fri, 14 Sep 2018 11:18:10 +0200 Subject: [PATCH] Fix crash when hovering buttons in OSR PDF viewer (issue #2488) --- libcef/browser/osr/render_widget_host_view_osr.cc | 7 +++++++ libcef/browser/osr/render_widget_host_view_osr.h | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index 48e7ef18d..48f0043e1 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -27,6 +27,7 @@ #include "content/browser/bad_message.h" #include "content/browser/compositor/image_transport_factory.h" #include "content/browser/frame_host/render_widget_host_view_guest.h" +#include "content/browser/renderer_host/cursor_manager.h" #include "content/browser/renderer_host/dip_util.h" #include "content/browser/renderer_host/render_widget_host_delegate.h" #include "content/browser/renderer_host/render_widget_host_impl.h" @@ -277,6 +278,8 @@ CefRenderWidgetHostViewOSR::CefRenderWidgetHostViewOSR( if (browser_impl_.get()) ResizeRootLayer(false); + cursor_manager_.reset(new content::CursorManager(this)); + // Do this last because it may result in a call to SetNeedsBeginFrames. render_widget_host_->SetView(this); } @@ -636,6 +639,10 @@ void CefRenderWidgetHostViewOSR::UpdateCursor( #endif } +content::CursorManager* CefRenderWidgetHostViewOSR::GetCursorManager() { + return cursor_manager_.get(); +} + void CefRenderWidgetHostViewOSR::SetIsLoading(bool is_loading) {} void CefRenderWidgetHostViewOSR::RenderProcessGone( diff --git a/libcef/browser/osr/render_widget_host_view_osr.h b/libcef/browser/osr/render_widget_host_view_osr.h index 80f7442ff..913d2abd4 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.h +++ b/libcef/browser/osr/render_widget_host_view_osr.h @@ -44,6 +44,7 @@ class RenderWidgetHost; class RenderWidgetHostImpl; class RenderWidgetHostViewGuest; class BackingStore; +class CursorManager; } // namespace content class CefBeginFrameTimer; @@ -153,6 +154,7 @@ class CefRenderWidgetHostViewOSR : public content::RenderWidgetHostViewBase, int error_code) override; void Destroy() override; void SetTooltipText(const base::string16& tooltip_text) override; + content::CursorManager* GetCursorManager() override; gfx::Size GetCompositorViewportPixelSize() const override; void CopyFromSurface( @@ -346,6 +348,8 @@ class CefRenderWidgetHostViewOSR : public content::RenderWidgetHostViewBase, std::unique_ptr invisible_cursor_; #endif + std::unique_ptr cursor_manager_; + // Used to control the VSync rate in subprocesses when BeginFrame scheduling // is enabled. std::unique_ptr begin_frame_timer_;