diff --git a/BUILD.gn b/BUILD.gn index 997c10da3..c70622cbe 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -556,6 +556,8 @@ static_library("libcef_static") { "libcef/browser/menu_runner.h", "libcef/browser/native/browser_platform_delegate_native.cc", "libcef/browser/native/browser_platform_delegate_native.h", + "libcef/browser/native/cursor_util.h", + "libcef/browser/native/cursor_util.cc", "libcef/browser/navigate_params.cc", "libcef/browser/navigate_params.h", "libcef/browser/navigation_entry_impl.cc", @@ -938,6 +940,7 @@ static_library("libcef_static") { "libcef/browser/alloy/alloy_browser_main_win.cc", "libcef/browser/native/browser_platform_delegate_native_win.cc", "libcef/browser/native/browser_platform_delegate_native_win.h", + "libcef/browser/native/cursor_util_win.cc", "libcef/browser/native/file_dialog_runner_win.cc", "libcef/browser/native/file_dialog_runner_win.h", "libcef/browser/native/javascript_dialog_runner_win.cc", @@ -951,7 +954,6 @@ static_library("libcef_static") { "libcef/browser/native/native_menu_win.h", "libcef/browser/osr/browser_platform_delegate_osr_win.cc", "libcef/browser/osr/browser_platform_delegate_osr_win.h", - "libcef/browser/osr/render_widget_host_view_osr_win.cc", # Part of //chrome/utility. "//chrome/utility/printing_handler.cc", @@ -982,11 +984,11 @@ static_library("libcef_static") { sources += includes_linux + [ "libcef/browser/native/browser_platform_delegate_native_linux.cc", "libcef/browser/native/browser_platform_delegate_native_linux.h", + "libcef/browser/native/cursor_util_linux.cc", "libcef/browser/native/menu_runner_linux.cc", "libcef/browser/native/menu_runner_linux.h", "libcef/browser/osr/browser_platform_delegate_osr_linux.cc", "libcef/browser/osr/browser_platform_delegate_osr_linux.h", - "libcef/browser/osr/render_widget_host_view_osr_linux.cc", "libcef/browser/printing/print_dialog_linux.cc", "libcef/browser/printing/print_dialog_linux.h", ] diff --git a/include/capi/cef_browser_capi.h b/include/capi/cef_browser_capi.h index 4336c8d38..2ee8a9fd1 100644 --- a/include/capi/cef_browser_capi.h +++ b/include/capi/cef_browser_capi.h @@ -33,7 +33,7 @@ // by hand. See the translator.README.txt file in the tools directory for // more information. // -// $hash=6cb00a0fa3631a46903abb3a783f315895511db2$ +// $hash=965eb2e55afec0a4618a7acd9478b9c1215be29d$ // #ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_ @@ -562,19 +562,6 @@ typedef struct _cef_browser_host_t { struct _cef_navigation_entry_visitor_t* visitor, int current_only); - /// - // Set whether mouse cursor change is disabled. - /// - void(CEF_CALLBACK* set_mouse_cursor_change_disabled)( - struct _cef_browser_host_t* self, - int disabled); - - /// - // Returns true (1) if mouse cursor change is disabled. - /// - int(CEF_CALLBACK* is_mouse_cursor_change_disabled)( - struct _cef_browser_host_t* self); - /// // If a misspelled word is currently selected in an editable node calling this // function will replace it with the specified |word|. diff --git a/include/capi/cef_display_handler_capi.h b/include/capi/cef_display_handler_capi.h index d74f4a2d3..32bc3422e 100644 --- a/include/capi/cef_display_handler_capi.h +++ b/include/capi/cef_display_handler_capi.h @@ -33,7 +33,7 @@ // by hand. See the translator.README.txt file in the tools directory for // more information. // -// $hash=951c936c8070dbf9bd246cc766b81cdfe06a3d81$ +// $hash=eada7e92085d96497f4e69f3e8a7e8aa6746b175$ // #ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_ @@ -141,6 +141,19 @@ typedef struct _cef_display_handler_t { struct _cef_display_handler_t* self, struct _cef_browser_t* browser, double progress); + + /// + // Called when the browser's cursor has changed. If |type| is CT_CUSTOM then + // |custom_cursor_info| will be populated with the custom cursor information. + // Return true (1) if the cursor change was handled or false (0) for default + // handling. + /// + int(CEF_CALLBACK* on_cursor_change)( + struct _cef_display_handler_t* self, + struct _cef_browser_t* browser, + cef_cursor_handle_t cursor, + cef_cursor_type_t type, + const struct _cef_cursor_info_t* custom_cursor_info); } cef_display_handler_t; #ifdef __cplusplus diff --git a/include/capi/cef_render_handler_capi.h b/include/capi/cef_render_handler_capi.h index df7e88f7b..f2012bcf5 100644 --- a/include/capi/cef_render_handler_capi.h +++ b/include/capi/cef_render_handler_capi.h @@ -33,7 +33,7 @@ // by hand. See the translator.README.txt file in the tools directory for // more information. // -// $hash=e642fc1fe3b97a90c0eae7f0fc0a5cfd385e3e17$ +// $hash=f9806cd79f33b6a762fff25edd4189ae42bc8fd2$ // #ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_ @@ -159,17 +159,6 @@ typedef struct _cef_render_handler_t { cef_rect_t const* dirtyRects, void* shared_handle); - /// - // Called when the browser's cursor has changed. If |type| is CT_CUSTOM then - // |custom_cursor_info| will be populated with the custom cursor information. - /// - void(CEF_CALLBACK* on_cursor_change)( - struct _cef_render_handler_t* self, - struct _cef_browser_t* browser, - cef_cursor_handle_t cursor, - cef_cursor_type_t type, - const struct _cef_cursor_info_t* custom_cursor_info); - /// // Called when the user starts dragging content in the web view. Contextual // information about the dragged content is supplied by |drag_data|. (|x|, diff --git a/include/cef_api_hash.h b/include/cef_api_hash.h index bd57404e4..64b79a42f 100644 --- a/include/cef_api_hash.h +++ b/include/cef_api_hash.h @@ -42,13 +42,13 @@ // way that may cause binary incompatibility with other builds. The universal // hash value will change if any platform is affected whereas the platform hash // values will change only if that particular platform is affected. -#define CEF_API_HASH_UNIVERSAL "22df40aa24a8bd920a2d18500c94dcc1b2c9508f" +#define CEF_API_HASH_UNIVERSAL "7f349b7262bfe13bda037370004f56a6081e543b" #if defined(OS_WIN) -#define CEF_API_HASH_PLATFORM "7698e6c4e3bc0f749609a0172a24d34cddbe8a1f" +#define CEF_API_HASH_PLATFORM "8a5523fec15255e2fb1de64deaa15dc3554b91e5" #elif defined(OS_MAC) -#define CEF_API_HASH_PLATFORM "5189bd75f9d076d7f136bf140b6cc5990ad452ec" +#define CEF_API_HASH_PLATFORM "f572c8f7d3aee3cd3b85bd398b0ba43eb7fe79a0" #elif defined(OS_LINUX) -#define CEF_API_HASH_PLATFORM "96412a3d498054d352e5f9dcf5ad8ff90917c361" +#define CEF_API_HASH_PLATFORM "abf4cc6ff102e5cd019aaf51f13eb30f9bfeae45" #endif #ifdef __cplusplus diff --git a/include/cef_browser.h b/include/cef_browser.h index 172d0a147..27e0eeb4a 100644 --- a/include/cef_browser.h +++ b/include/cef_browser.h @@ -592,18 +592,6 @@ class CefBrowserHost : public virtual CefBaseRefCounted { CefRefPtr visitor, bool current_only) = 0; - /// - // Set whether mouse cursor change is disabled. - /// - /*--cef()--*/ - virtual void SetMouseCursorChangeDisabled(bool disabled) = 0; - - /// - // Returns true if mouse cursor change is disabled. - /// - /*--cef()--*/ - virtual bool IsMouseCursorChangeDisabled() = 0; - /// // If a misspelled word is currently selected in an editable node calling // this method will replace it with the specified |word|. diff --git a/include/cef_display_handler.h b/include/cef_display_handler.h index 4fdc3c312..61636f104 100644 --- a/include/cef_display_handler.h +++ b/include/cef_display_handler.h @@ -135,6 +135,19 @@ class CefDisplayHandler : public virtual CefBaseRefCounted { /*--cef()--*/ virtual void OnLoadingProgressChange(CefRefPtr browser, double progress) {} + + /// + // Called when the browser's cursor has changed. If |type| is CT_CUSTOM then + // |custom_cursor_info| will be populated with the custom cursor information. + // Return true if the cursor change was handled or false for default handling. + /// + /*--cef()--*/ + virtual bool OnCursorChange(CefRefPtr browser, + CefCursorHandle cursor, + cef_cursor_type_t type, + const CefCursorInfo& custom_cursor_info) { + return false; + } }; #endif // CEF_INCLUDE_CEF_DISPLAY_HANDLER_H_ diff --git a/include/cef_render_handler.h b/include/cef_render_handler.h index c6c40f844..f101083a7 100644 --- a/include/cef_render_handler.h +++ b/include/cef_render_handler.h @@ -52,7 +52,6 @@ /*--cef(source=client)--*/ class CefRenderHandler : public virtual CefBaseRefCounted { public: - typedef cef_cursor_type_t CursorType; typedef cef_drag_operations_mask_t DragOperation; typedef cef_drag_operations_mask_t DragOperationsMask; typedef cef_paint_element_type_t PaintElementType; @@ -162,16 +161,6 @@ class CefRenderHandler : public virtual CefBaseRefCounted { const RectList& dirtyRects, void* shared_handle) {} - /// - // Called when the browser's cursor has changed. If |type| is CT_CUSTOM then - // |custom_cursor_info| will be populated with the custom cursor information. - /// - /*--cef()--*/ - virtual void OnCursorChange(CefRefPtr browser, - CefCursorHandle cursor, - CursorType type, - const CefCursorInfo& custom_cursor_info) {} - /// // Called when the user starts dragging content in the web view. Contextual // information about the dragged content is supplied by |drag_data|. diff --git a/libcef/browser/alloy/alloy_browser_host_impl.cc b/libcef/browser/alloy/alloy_browser_host_impl.cc index 473c3cdfb..cb841596a 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.cc +++ b/libcef/browser/alloy/alloy_browser_host_impl.cc @@ -17,6 +17,7 @@ #include "libcef/browser/context.h" #include "libcef/browser/devtools/devtools_manager.h" #include "libcef/browser/media_capture_devices_dispatcher.h" +#include "libcef/browser/native/cursor_util.h" #include "libcef/browser/osr/osr_util.h" #include "libcef/browser/request_context_impl.h" #include "libcef/browser/thread_util.h" @@ -102,10 +103,11 @@ class CefWidgetHostInterceptor // WidgetHostInterceptorForTesting method: void SetCursor(const ui::Cursor& cursor) override { - if (browser_->IsMouseCursorChangeDisabled()) { + if (cursor_util::OnCursorChange(browser_, cursor)) { // Don't change the cursor. return; } + GetForwardingInterface()->SetCursor(cursor); } @@ -643,18 +645,6 @@ bool AlloyBrowserHostImpl::IsBackgroundHost() { return is_background_host_; } -void AlloyBrowserHostImpl::SetMouseCursorChangeDisabled(bool disabled) { - base::AutoLock lock_scope(state_lock_); - if (mouse_cursor_change_disabled_ == disabled) - return; - mouse_cursor_change_disabled_ = disabled; -} - -bool AlloyBrowserHostImpl::IsMouseCursorChangeDisabled() { - base::AutoLock lock_scope(state_lock_); - return mouse_cursor_change_disabled_; -} - bool AlloyBrowserHostImpl::IsWindowRenderingDisabled() { return IsWindowless(); } diff --git a/libcef/browser/alloy/alloy_browser_host_impl.h b/libcef/browser/alloy/alloy_browser_host_impl.h index b5e2d034a..ece734c67 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.h +++ b/libcef/browser/alloy/alloy_browser_host_impl.h @@ -119,8 +119,6 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, CefRefPtr params) override; CefRefPtr AddDevToolsMessageObserver( CefRefPtr observer) override; - void SetMouseCursorChangeDisabled(bool disabled) override; - bool IsMouseCursorChangeDisabled() override; bool IsWindowRenderingDisabled() override; void WasResized() override; void WasHidden(bool hidden) override; @@ -388,9 +386,6 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, // on the UI thread. bool window_destroyed_ = false; - // True if mouse cursor change is disabled. - bool mouse_cursor_change_disabled_ = false; - // Used for creating and managing file dialogs. std::unique_ptr file_dialog_manager_; diff --git a/libcef/browser/chrome/chrome_browser_host_impl.cc b/libcef/browser/chrome/chrome_browser_host_impl.cc index 542ea14ab..4d9884214 100644 --- a/libcef/browser/chrome/chrome_browser_host_impl.cc +++ b/libcef/browser/chrome/chrome_browser_host_impl.cc @@ -265,15 +265,6 @@ CefRefPtr ChromeBrowserHostImpl::AddDevToolsMessageObserver( return nullptr; } -void ChromeBrowserHostImpl::SetMouseCursorChangeDisabled(bool disabled) { - NOTIMPLEMENTED(); -} - -bool ChromeBrowserHostImpl::IsMouseCursorChangeDisabled() { - NOTIMPLEMENTED(); - return false; -} - bool ChromeBrowserHostImpl::IsWindowRenderingDisabled() { return false; } diff --git a/libcef/browser/chrome/chrome_browser_host_impl.h b/libcef/browser/chrome/chrome_browser_host_impl.h index deeb86641..daaf83489 100644 --- a/libcef/browser/chrome/chrome_browser_host_impl.h +++ b/libcef/browser/chrome/chrome_browser_host_impl.h @@ -97,8 +97,6 @@ class ChromeBrowserHostImpl : public CefBrowserHostBase { CefRefPtr params) override; CefRefPtr AddDevToolsMessageObserver( CefRefPtr observer) override; - void SetMouseCursorChangeDisabled(bool disabled) override; - bool IsMouseCursorChangeDisabled() override; bool IsWindowRenderingDisabled() override; void WasResized() override; void WasHidden(bool hidden) override; diff --git a/libcef/browser/native/cursor_util.cc b/libcef/browser/native/cursor_util.cc new file mode 100644 index 000000000..b317bdcf5 --- /dev/null +++ b/libcef/browser/native/cursor_util.cc @@ -0,0 +1,63 @@ +// Copyright 2020 The Chromium Embedded Framework Authors. Portions copyright +// 2012 The Chromium Authors. All rights reserved. Use of this source code is +// governed by a BSD-style license that can be found in the LICENSE file. + +#include "libcef/browser/native/cursor_util.h" + +#include "libcef/browser/browser_host_base.h" + +#include "content/common/cursors/webcursor.h" +#include "ui/base/cursor/mojom/cursor_type.mojom.h" + +namespace cursor_util { + +bool OnCursorChange(CefBrowserHostBase* browser, const ui::Cursor& ui_cursor) { + auto client = browser->GetClient(); + if (!client) + return false; + auto handler = client->GetDisplayHandler(); + if (!handler) + return false; + + const cef_cursor_type_t cursor_type = + static_cast(ui_cursor.type()); + CefCursorInfo custom_cursor_info; + if (ui_cursor.type() == ui::mojom::CursorType::kCustom) { + custom_cursor_info.hotspot.x = ui_cursor.custom_hotspot().x(); + custom_cursor_info.hotspot.y = ui_cursor.custom_hotspot().y(); + custom_cursor_info.image_scale_factor = ui_cursor.image_scale_factor(); + custom_cursor_info.buffer = ui_cursor.custom_bitmap().getPixels(); + custom_cursor_info.size.width = ui_cursor.custom_bitmap().width(); + custom_cursor_info.size.height = ui_cursor.custom_bitmap().height(); + } + + bool handled = false; + +#if defined(USE_AURA) + content::WebCursor web_cursor(ui_cursor); + + CefCursorHandle platform_cursor; + if (ui_cursor.type() == ui::mojom::CursorType::kCustom) { + // |web_cursor| owns the resulting |platform_cursor|. + platform_cursor = + cursor_util::ToCursorHandle(web_cursor.GetPlatformCursor(ui_cursor)); + } else { + platform_cursor = cursor_util::GetPlatformCursor(ui_cursor.type()); + } + + handled = handler->OnCursorChange(browser, platform_cursor, cursor_type, + custom_cursor_info); +#elif defined(OS_MAC) + // |web_cursor| owns the resulting |native_cursor|. + content::WebCursor web_cursor(ui_cursor); + CefCursorHandle native_cursor = web_cursor.GetNativeCursor(); + handled = handler->OnCursorChange(browser, native_cursor, cursor_type, + custom_cursor_info); +#else + NOTIMPLEMENTED(); +#endif + + return handled; +} + +} // namespace cursor_util diff --git a/libcef/browser/native/cursor_util.h b/libcef/browser/native/cursor_util.h new file mode 100644 index 000000000..a3a1e0a98 --- /dev/null +++ b/libcef/browser/native/cursor_util.h @@ -0,0 +1,27 @@ +// Copyright 2020 The Chromium Embedded Framework Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CEF_LIBCEF_BROWSER_NATIVE_CURSOR_UTIL_H_ +#define CEF_LIBCEF_BROWSER_NATIVE_CURSOR_UTIL_H_ + +#include "include/internal/cef_types.h" + +#include "ui/base/cursor/cursor.h" +#include "ui/base/cursor/mojom/cursor_type.mojom-forward.h" + +class CefBrowserHostBase; + +namespace cursor_util { + +#if defined(USE_AURA) +cef_cursor_handle_t GetPlatformCursor(ui::mojom::CursorType type); +cef_cursor_handle_t ToCursorHandle(ui::PlatformCursor cursor); +#endif // defined(USE_AURA) + +// Returns true if the client handled the cursor change. +bool OnCursorChange(CefBrowserHostBase* browser, const ui::Cursor& ui_cursor); + +} // namespace cursor_util + +#endif // CEF_LIBCEF_BROWSER_NATIVE_CURSOR_UTIL_H_ diff --git a/libcef/browser/osr/render_widget_host_view_osr_linux.cc b/libcef/browser/native/cursor_util_linux.cc similarity index 54% rename from libcef/browser/osr/render_widget_host_view_osr_linux.cc rename to libcef/browser/native/cursor_util_linux.cc index 973ab2a1e..c8f777620 100644 --- a/libcef/browser/osr/render_widget_host_view_osr_linux.cc +++ b/libcef/browser/native/cursor_util_linux.cc @@ -1,9 +1,8 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. -// Portions copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright 2020 The Chromium Embedded Framework Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "libcef/browser/osr/render_widget_host_view_osr.h" +#include "libcef/browser/native/cursor_util.h" #include "ui/base/cursor/cursor_factory.h" @@ -11,8 +10,9 @@ #include "ui/base/x/x11_cursor.h" #endif -CefCursorHandle CefRenderWidgetHostViewOSR::GetPlatformCursor( - ui::mojom::CursorType type) { +namespace cursor_util { + +cef_cursor_handle_t GetPlatformCursor(ui::mojom::CursorType type) { auto cursor = ui::CursorFactory::GetInstance()->GetDefaultCursor(type); if (cursor) { return ToCursorHandle(*cursor); @@ -20,13 +20,14 @@ CefCursorHandle CefRenderWidgetHostViewOSR::GetPlatformCursor( return 0; } -CefCursorHandle CefRenderWidgetHostViewOSR::ToCursorHandle( - ui::PlatformCursor cursor) { +cef_cursor_handle_t ToCursorHandle(ui::PlatformCursor cursor) { #if defined(USE_X11) // See https://crbug.com/1029142 for background. - return static_cast( + return static_cast( static_cast(cursor)->xcursor()); #else return cursor; #endif } + +} // namespace cursor_util diff --git a/libcef/browser/osr/render_widget_host_view_osr_win.cc b/libcef/browser/native/cursor_util_win.cc similarity index 82% rename from libcef/browser/osr/render_widget_host_view_osr_win.cc rename to libcef/browser/native/cursor_util_win.cc index daa14f4b0..39d95328a 100644 --- a/libcef/browser/osr/render_widget_host_view_osr_win.cc +++ b/libcef/browser/native/cursor_util_win.cc @@ -1,42 +1,21 @@ -// Copyright (c) 2014 The Chromium Embedded Framework Authors. -// Portions copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. +// Copyright 2020 The Chromium Embedded Framework Authors. Portions copyright +// 2012 The Chromium Authors. All rights reserved. Use of this source code is +// governed by a BSD-style license that can be found in the LICENSE file. -#include "libcef/browser/osr/render_widget_host_view_osr.h" +#include "libcef/browser/native/cursor_util.h" #include #include "libcef/common/app_manager.h" +#include "ui/base/cursor/mojom/cursor_type.mojom.h" #include "ui/resources/grit/ui_unscaled_resources.h" +namespace cursor_util { + namespace { -class CefCompositorHostWin : public gfx::WindowImpl { - public: - CefCompositorHostWin() { - // Create a hidden 1x1 borderless window. - set_window_style(WS_POPUP | WS_SYSMENU); - Init(NULL, gfx::Rect(0, 0, 1, 1)); - } - - ~CefCompositorHostWin() override { DestroyWindow(hwnd()); } - - private: - CR_BEGIN_MSG_MAP_EX(CefCompositorHostWin) - CR_MSG_WM_PAINT(OnPaint) - CR_END_MSG_MAP() - - CR_MSG_MAP_CLASS_DECLARATIONS(CefCompositorHostWin) - - void OnPaint(HDC dc) { ValidateRect(hwnd(), NULL); } - - DISALLOW_COPY_AND_ASSIGN(CefCompositorHostWin); -}; - // From content/common/cursors/webcursor_win.cc. - LPCWSTR ToCursorID(ui::mojom::CursorType type) { switch (type) { case ui::mojom::CursorType::kPointer: @@ -152,8 +131,7 @@ bool IsSystemCursorID(LPCWSTR cursor_id) { } // namespace -CefCursorHandle CefRenderWidgetHostViewOSR::GetPlatformCursor( - ui::mojom::CursorType type) { +cef_cursor_handle_t GetPlatformCursor(ui::mojom::CursorType type) { // Using a dark 1x1 bit bmp kNone cursor may still cause DWM to do composition // work unnecessarily. Better to totally remove it from the screen. // crbug.com/1069698 @@ -173,7 +151,8 @@ CefCursorHandle CefRenderWidgetHostViewOSR::GetPlatformCursor( return LoadCursor(module_handle, cursor_id); } -CefCursorHandle CefRenderWidgetHostViewOSR::ToCursorHandle( - ui::PlatformCursor cursor) { +cef_cursor_handle_t ToCursorHandle(ui::PlatformCursor cursor) { return cursor; } + +} // namespace cursor_util diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index e080eb017..6ca8b4c83 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -604,54 +604,7 @@ void CefRenderWidgetHostViewOSR::InitAsFullscreen( } void CefRenderWidgetHostViewOSR::UpdateCursor( - const content::WebCursor& cursor) { - TRACE_EVENT0("cef", "CefRenderWidgetHostViewOSR::UpdateCursor"); - if (!browser_impl_.get()) - return; - - CefRefPtr handler = - browser_impl_->GetClient()->GetRenderHandler(); - CHECK(handler); - - const auto& ui_cursor = cursor.cursor(); - - const cef_cursor_type_t cursor_type = - static_cast(ui_cursor.type()); - CefCursorInfo custom_cursor_info; - if (ui_cursor.type() == ui::mojom::CursorType::kCustom) { - custom_cursor_info.hotspot.x = ui_cursor.custom_hotspot().x(); - custom_cursor_info.hotspot.y = ui_cursor.custom_hotspot().y(); - custom_cursor_info.image_scale_factor = ui_cursor.image_scale_factor(); - custom_cursor_info.buffer = ui_cursor.custom_bitmap().getPixels(); - custom_cursor_info.size.width = ui_cursor.custom_bitmap().width(); - custom_cursor_info.size.height = ui_cursor.custom_bitmap().height(); - } - -#if defined(USE_AURA) - content::WebCursor web_cursor(ui_cursor); - - CefCursorHandle platform_cursor; - if (ui_cursor.type() == ui::mojom::CursorType::kCustom) { - // |web_cursor| owns the resulting |platform_cursor|. - platform_cursor = ToCursorHandle(web_cursor.GetPlatformCursor(ui_cursor)); - } else { - platform_cursor = GetPlatformCursor(ui_cursor.type()); - } - - handler->OnCursorChange(browser_impl_.get(), platform_cursor, cursor_type, - custom_cursor_info); -#elif defined(OS_MAC) - // |web_cursor| owns the resulting |native_cursor|. - content::WebCursor web_cursor(cursor); - CefCursorHandle native_cursor = web_cursor.GetNativeCursor(); - handler->OnCursorChange(browser_impl_.get(), native_cursor, cursor_type, - custom_cursor_info); -#else - // TODO(port): Implement this method to work on other platforms as part of - // off-screen rendering support. - NOTREACHED(); -#endif -} + const content::WebCursor& cursor) {} content::CursorManager* CefRenderWidgetHostViewOSR::GetCursorManager() { return cursor_manager_.get(); diff --git a/libcef/browser/osr/render_widget_host_view_osr.h b/libcef/browser/osr/render_widget_host_view_osr.h index d5221a14f..4e94a4cd7 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.h +++ b/libcef/browser/osr/render_widget_host_view_osr.h @@ -328,11 +328,6 @@ class CefRenderWidgetHostViewOSR // opaqueness changes. void UpdateBackgroundColorFromRenderer(SkColor color); -#if defined(USE_AURA) - CefCursorHandle GetPlatformCursor(ui::mojom::CursorType type); - CefCursorHandle ToCursorHandle(ui::PlatformCursor cursor); -#endif - // The background color of the web content. SkColor background_color_; diff --git a/libcef_dll/cpptoc/browser_host_cpptoc.cc b/libcef_dll/cpptoc/browser_host_cpptoc.cc index 124782dc4..f3c9f10de 100644 --- a/libcef_dll/cpptoc/browser_host_cpptoc.cc +++ b/libcef_dll/cpptoc/browser_host_cpptoc.cc @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=516b55b7ea53e2de2b096e85ba0eb83f2a2693f3$ +// $hash=fa230168d79d0644b518d042bf3f9370e6eccf8c$ // #include "libcef_dll/cpptoc/browser_host_cpptoc.h" @@ -621,39 +621,6 @@ browser_host_get_navigation_entries(struct _cef_browser_host_t* self, current_only ? true : false); } -void CEF_CALLBACK -browser_host_set_mouse_cursor_change_disabled(struct _cef_browser_host_t* self, - int disabled) { - shutdown_checker::AssertNotShutdown(); - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return; - - // Execute - CefBrowserHostCppToC::Get(self)->SetMouseCursorChangeDisabled( - disabled ? true : false); -} - -int CEF_CALLBACK -browser_host_is_mouse_cursor_change_disabled(struct _cef_browser_host_t* self) { - shutdown_checker::AssertNotShutdown(); - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return 0; - - // Execute - bool _retval = CefBrowserHostCppToC::Get(self)->IsMouseCursorChangeDisabled(); - - // Return type: bool - return _retval; -} - void CEF_CALLBACK browser_host_replace_misspelling(struct _cef_browser_host_t* self, const cef_string_t* word) { @@ -1367,10 +1334,6 @@ CefBrowserHostCppToC::CefBrowserHostCppToC() { GetStruct()->add_dev_tools_message_observer = browser_host_add_dev_tools_message_observer; GetStruct()->get_navigation_entries = browser_host_get_navigation_entries; - GetStruct()->set_mouse_cursor_change_disabled = - browser_host_set_mouse_cursor_change_disabled; - GetStruct()->is_mouse_cursor_change_disabled = - browser_host_is_mouse_cursor_change_disabled; GetStruct()->replace_misspelling = browser_host_replace_misspelling; GetStruct()->add_word_to_dictionary = browser_host_add_word_to_dictionary; GetStruct()->is_window_rendering_disabled = diff --git a/libcef_dll/cpptoc/display_handler_cpptoc.cc b/libcef_dll/cpptoc/display_handler_cpptoc.cc index 469c359b7..69a575a0f 100644 --- a/libcef_dll/cpptoc/display_handler_cpptoc.cc +++ b/libcef_dll/cpptoc/display_handler_cpptoc.cc @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=1e329026cfad131337e794e5501367604f62fdb6$ +// $hash=a6a81143ea8792ba5643643389f4dc2a8815174a$ // #include "libcef_dll/cpptoc/display_handler_cpptoc.h" @@ -252,6 +252,41 @@ display_handler_on_loading_progress_change(struct _cef_display_handler_t* self, CefBrowserCToCpp::Wrap(browser), progress); } +int CEF_CALLBACK display_handler_on_cursor_change( + struct _cef_display_handler_t* self, + cef_browser_t* browser, + cef_cursor_handle_t cursor, + cef_cursor_type_t type, + const struct _cef_cursor_info_t* custom_cursor_info) { + shutdown_checker::AssertNotShutdown(); + + // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING + + DCHECK(self); + if (!self) + return 0; + // Verify param: browser; type: refptr_diff + DCHECK(browser); + if (!browser) + return 0; + // Verify param: custom_cursor_info; type: struct_byref_const + DCHECK(custom_cursor_info); + if (!custom_cursor_info) + return 0; + + // Translate param: custom_cursor_info; type: struct_byref_const + CefCursorInfo custom_cursor_infoObj; + if (custom_cursor_info) + custom_cursor_infoObj.Set(*custom_cursor_info, false); + + // Execute + bool _retval = CefDisplayHandlerCppToC::Get(self)->OnCursorChange( + CefBrowserCToCpp::Wrap(browser), cursor, type, custom_cursor_infoObj); + + // Return type: bool + return _retval; +} + } // namespace // CONSTRUCTOR - Do not edit by hand. @@ -268,6 +303,7 @@ CefDisplayHandlerCppToC::CefDisplayHandlerCppToC() { GetStruct()->on_auto_resize = display_handler_on_auto_resize; GetStruct()->on_loading_progress_change = display_handler_on_loading_progress_change; + GetStruct()->on_cursor_change = display_handler_on_cursor_change; } // DESTRUCTOR - Do not edit by hand. diff --git a/libcef_dll/cpptoc/render_handler_cpptoc.cc b/libcef_dll/cpptoc/render_handler_cpptoc.cc index 0ab491edd..4b0030b35 100644 --- a/libcef_dll/cpptoc/render_handler_cpptoc.cc +++ b/libcef_dll/cpptoc/render_handler_cpptoc.cc @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=2e22f210ff06337ac41e71a00b9dc6edce08e6d8$ +// $hash=22da80871c4a9dfc9989f577456b7e3d987e805d$ // #include "libcef_dll/cpptoc/render_handler_cpptoc.h" @@ -324,38 +324,6 @@ render_handler_on_accelerated_paint(struct _cef_render_handler_t* self, CefBrowserCToCpp::Wrap(browser), type, dirtyRectsList, shared_handle); } -void CEF_CALLBACK render_handler_on_cursor_change( - struct _cef_render_handler_t* self, - cef_browser_t* browser, - cef_cursor_handle_t cursor, - cef_cursor_type_t type, - const struct _cef_cursor_info_t* custom_cursor_info) { - shutdown_checker::AssertNotShutdown(); - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - DCHECK(self); - if (!self) - return; - // Verify param: browser; type: refptr_diff - DCHECK(browser); - if (!browser) - return; - // Verify param: custom_cursor_info; type: struct_byref_const - DCHECK(custom_cursor_info); - if (!custom_cursor_info) - return; - - // Translate param: custom_cursor_info; type: struct_byref_const - CefCursorInfo custom_cursor_infoObj; - if (custom_cursor_info) - custom_cursor_infoObj.Set(*custom_cursor_info, false); - - // Execute - CefRenderHandlerCppToC::Get(self)->OnCursorChange( - CefBrowserCToCpp::Wrap(browser), cursor, type, custom_cursor_infoObj); -} - int CEF_CALLBACK render_handler_start_dragging(struct _cef_render_handler_t* self, cef_browser_t* browser, @@ -536,7 +504,6 @@ CefRenderHandlerCppToC::CefRenderHandlerCppToC() { GetStruct()->on_popup_size = render_handler_on_popup_size; GetStruct()->on_paint = render_handler_on_paint; GetStruct()->on_accelerated_paint = render_handler_on_accelerated_paint; - GetStruct()->on_cursor_change = render_handler_on_cursor_change; GetStruct()->start_dragging = render_handler_start_dragging; GetStruct()->update_drag_cursor = render_handler_update_drag_cursor; GetStruct()->on_scroll_offset_changed = diff --git a/libcef_dll/ctocpp/browser_host_ctocpp.cc b/libcef_dll/ctocpp/browser_host_ctocpp.cc index 68b407ebc..e9f1aa734 100644 --- a/libcef_dll/ctocpp/browser_host_ctocpp.cc +++ b/libcef_dll/ctocpp/browser_host_ctocpp.cc @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=a362e11e85ce68488bbb0f5232b01f53cffeec1d$ +// $hash=9751b66edccb575f54c07bf14da39516f52b7402$ // #include "libcef_dll/ctocpp/browser_host_ctocpp.h" @@ -567,37 +567,6 @@ void CefBrowserHostCToCpp::GetNavigationEntries( _struct, CefNavigationEntryVisitorCppToC::Wrap(visitor), current_only); } -NO_SANITIZE("cfi-icall") -void CefBrowserHostCToCpp::SetMouseCursorChangeDisabled(bool disabled) { - shutdown_checker::AssertNotShutdown(); - - cef_browser_host_t* _struct = GetStruct(); - if (CEF_MEMBER_MISSING(_struct, set_mouse_cursor_change_disabled)) - return; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - _struct->set_mouse_cursor_change_disabled(_struct, disabled); -} - -NO_SANITIZE("cfi-icall") -bool CefBrowserHostCToCpp::IsMouseCursorChangeDisabled() { - shutdown_checker::AssertNotShutdown(); - - cef_browser_host_t* _struct = GetStruct(); - if (CEF_MEMBER_MISSING(_struct, is_mouse_cursor_change_disabled)) - return false; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Execute - int _retval = _struct->is_mouse_cursor_change_disabled(_struct); - - // Return type: bool - return _retval ? true : false; -} - NO_SANITIZE("cfi-icall") void CefBrowserHostCToCpp::ReplaceMisspelling(const CefString& word) { shutdown_checker::AssertNotShutdown(); diff --git a/libcef_dll/ctocpp/browser_host_ctocpp.h b/libcef_dll/ctocpp/browser_host_ctocpp.h index 4987e5a60..c05a7d4db 100644 --- a/libcef_dll/ctocpp/browser_host_ctocpp.h +++ b/libcef_dll/ctocpp/browser_host_ctocpp.h @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=c9abd1293472afbac964aac4cd7dd4cac9dd8e58$ +// $hash=07e94d03d7ceb97115adedb4cc641318cd77975b$ // #ifndef CEF_LIBCEF_DLL_CTOCPP_BROWSER_HOST_CTOCPP_H_ @@ -84,8 +84,6 @@ class CefBrowserHostCToCpp : public CefCToCppRefCounted observer) OVERRIDE; void GetNavigationEntries(CefRefPtr visitor, bool current_only) OVERRIDE; - void SetMouseCursorChangeDisabled(bool disabled) OVERRIDE; - bool IsMouseCursorChangeDisabled() OVERRIDE; void ReplaceMisspelling(const CefString& word) OVERRIDE; void AddWordToDictionary(const CefString& word) OVERRIDE; bool IsWindowRenderingDisabled() OVERRIDE; diff --git a/libcef_dll/ctocpp/display_handler_ctocpp.cc b/libcef_dll/ctocpp/display_handler_ctocpp.cc index 7139bb88d..249b76ef1 100644 --- a/libcef_dll/ctocpp/display_handler_ctocpp.cc +++ b/libcef_dll/ctocpp/display_handler_ctocpp.cc @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=11c971f10c02ae341f62e70dca05528f78c8d1a2$ +// $hash=16db2529b69497fdccf21d56531906127e473044$ // #include "libcef_dll/ctocpp/display_handler_ctocpp.h" @@ -249,6 +249,34 @@ void CefDisplayHandlerCToCpp::OnLoadingProgressChange( progress); } +NO_SANITIZE("cfi-icall") +bool CefDisplayHandlerCToCpp::OnCursorChange( + CefRefPtr browser, + CefCursorHandle cursor, + cef_cursor_type_t type, + const CefCursorInfo& custom_cursor_info) { + shutdown_checker::AssertNotShutdown(); + + cef_display_handler_t* _struct = GetStruct(); + if (CEF_MEMBER_MISSING(_struct, on_cursor_change)) + return false; + + // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING + + // Verify param: browser; type: refptr_diff + DCHECK(browser.get()); + if (!browser.get()) + return false; + + // Execute + int _retval = + _struct->on_cursor_change(_struct, CefBrowserCppToC::Wrap(browser), + cursor, type, &custom_cursor_info); + + // Return type: bool + return _retval ? true : false; +} + // CONSTRUCTOR - Do not edit by hand. CefDisplayHandlerCToCpp::CefDisplayHandlerCToCpp() {} diff --git a/libcef_dll/ctocpp/display_handler_ctocpp.h b/libcef_dll/ctocpp/display_handler_ctocpp.h index 7bdd7a0cd..0210ca9d0 100644 --- a/libcef_dll/ctocpp/display_handler_ctocpp.h +++ b/libcef_dll/ctocpp/display_handler_ctocpp.h @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=2a5e7a2afb4d183e4688ef7aec8d12d2bc1d5212$ +// $hash=4874f1f7e3c35cb0b079b65c03aed01f9cc30e47$ // #ifndef CEF_LIBCEF_DLL_CTOCPP_DISPLAY_HANDLER_CTOCPP_H_ @@ -57,6 +57,10 @@ class CefDisplayHandlerCToCpp const CefSize& new_size) override; void OnLoadingProgressChange(CefRefPtr browser, double progress) override; + bool OnCursorChange(CefRefPtr browser, + CefCursorHandle cursor, + cef_cursor_type_t type, + const CefCursorInfo& custom_cursor_info) override; }; #endif // CEF_LIBCEF_DLL_CTOCPP_DISPLAY_HANDLER_CTOCPP_H_ diff --git a/libcef_dll/ctocpp/render_handler_ctocpp.cc b/libcef_dll/ctocpp/render_handler_ctocpp.cc index 171f78dfd..3381be866 100644 --- a/libcef_dll/ctocpp/render_handler_ctocpp.cc +++ b/libcef_dll/ctocpp/render_handler_ctocpp.cc @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=f592f3806c9f87ee6c691b9f072cee4d6bb4650e$ +// $hash=b9bf8bf4ccc5ef6a43f86ef697617fc6fe8470a5$ // #include "libcef_dll/ctocpp/render_handler_ctocpp.h" @@ -265,30 +265,6 @@ void CefRenderHandlerCToCpp::OnAcceleratedPaint(CefRefPtr browser, delete[] dirtyRectsList; } -NO_SANITIZE("cfi-icall") -void CefRenderHandlerCToCpp::OnCursorChange( - CefRefPtr browser, - CefCursorHandle cursor, - CursorType type, - const CefCursorInfo& custom_cursor_info) { - shutdown_checker::AssertNotShutdown(); - - cef_render_handler_t* _struct = GetStruct(); - if (CEF_MEMBER_MISSING(_struct, on_cursor_change)) - return; - - // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING - - // Verify param: browser; type: refptr_diff - DCHECK(browser.get()); - if (!browser.get()) - return; - - // Execute - _struct->on_cursor_change(_struct, CefBrowserCppToC::Wrap(browser), cursor, - type, &custom_cursor_info); -} - NO_SANITIZE("cfi-icall") bool CefRenderHandlerCToCpp::StartDragging(CefRefPtr browser, CefRefPtr drag_data, diff --git a/libcef_dll/ctocpp/render_handler_ctocpp.h b/libcef_dll/ctocpp/render_handler_ctocpp.h index d0e1247cf..9ef69637b 100644 --- a/libcef_dll/ctocpp/render_handler_ctocpp.h +++ b/libcef_dll/ctocpp/render_handler_ctocpp.h @@ -9,7 +9,7 @@ // implementations. See the translator.README.txt file in the tools directory // for more information. // -// $hash=ed8882abe62f08d4746a646307ef74d4987780c4$ +// $hash=be7b5b4b7b8782c7bd3a4c52ed75bc3c9c044265$ // #ifndef CEF_LIBCEF_DLL_CTOCPP_RENDER_HANDLER_CTOCPP_H_ @@ -57,10 +57,6 @@ class CefRenderHandlerCToCpp PaintElementType type, const RectList& dirtyRects, void* shared_handle) override; - void OnCursorChange(CefRefPtr browser, - CefCursorHandle cursor, - CursorType type, - const CefCursorInfo& custom_cursor_info) override; bool StartDragging(CefRefPtr browser, CefRefPtr drag_data, DragOperationsMask allowed_ops, diff --git a/tests/cefclient/browser/browser_window_osr_gtk.cc b/tests/cefclient/browser/browser_window_osr_gtk.cc index 242b31259..02bf3c050 100644 --- a/tests/cefclient/browser/browser_window_osr_gtk.cc +++ b/tests/cefclient/browser/browser_window_osr_gtk.cc @@ -1285,7 +1285,7 @@ void BrowserWindowOsrGtk::OnPaint(CefRefPtr browser, void BrowserWindowOsrGtk::OnCursorChange( CefRefPtr browser, CefCursorHandle cursor, - CefRenderHandler::CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) { CEF_REQUIRE_UI_THREAD(); diff --git a/tests/cefclient/browser/browser_window_osr_gtk.h b/tests/cefclient/browser/browser_window_osr_gtk.h index 33083e0f2..0847e37ff 100644 --- a/tests/cefclient/browser/browser_window_osr_gtk.h +++ b/tests/cefclient/browser/browser_window_osr_gtk.h @@ -76,7 +76,7 @@ class BrowserWindowOsrGtk : public BrowserWindow, int height) OVERRIDE; void OnCursorChange(CefRefPtr browser, CefCursorHandle cursor, - CefRenderHandler::CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) OVERRIDE; bool StartDragging(CefRefPtr browser, CefRefPtr drag_data, diff --git a/tests/cefclient/browser/browser_window_osr_mac.h b/tests/cefclient/browser/browser_window_osr_mac.h index be422134f..6211330c9 100644 --- a/tests/cefclient/browser/browser_window_osr_mac.h +++ b/tests/cefclient/browser/browser_window_osr_mac.h @@ -73,7 +73,7 @@ class BrowserWindowOsrMac : public BrowserWindow, int height) OVERRIDE; void OnCursorChange(CefRefPtr browser, CefCursorHandle cursor, - CefRenderHandler::CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) OVERRIDE; bool StartDragging(CefRefPtr browser, CefRefPtr drag_data, diff --git a/tests/cefclient/browser/browser_window_osr_mac.mm b/tests/cefclient/browser/browser_window_osr_mac.mm index da143c1d3..5418d84eb 100644 --- a/tests/cefclient/browser/browser_window_osr_mac.mm +++ b/tests/cefclient/browser/browser_window_osr_mac.mm @@ -1323,7 +1323,7 @@ class BrowserWindowOsrMacImpl { int height); void OnCursorChange(CefRefPtr browser, CefCursorHandle cursor, - CefRenderHandler::CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info); bool StartDragging(CefRefPtr browser, CefRefPtr drag_data, @@ -1655,7 +1655,7 @@ void BrowserWindowOsrMacImpl::OnPaint( void BrowserWindowOsrMacImpl::OnCursorChange( CefRefPtr browser, CefCursorHandle cursor, - CefRenderHandler::CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) { CEF_REQUIRE_UI_THREAD(); REQUIRE_MAIN_THREAD(); @@ -1877,7 +1877,7 @@ void BrowserWindowOsrMac::OnPaint(CefRefPtr browser, void BrowserWindowOsrMac::OnCursorChange( CefRefPtr browser, CefCursorHandle cursor, - CefRenderHandler::CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) { impl_->OnCursorChange(browser, cursor, type, custom_cursor_info); } diff --git a/tests/cefclient/browser/client_handler.cc b/tests/cefclient/browser/client_handler.cc index 2cf2b3117..1916f5529 100644 --- a/tests/cefclient/browser/client_handler.cc +++ b/tests/cefclient/browser/client_handler.cc @@ -333,7 +333,7 @@ void ClientHandler::OnBeforeContextMenu(CefRefPtr browser, model->AddSeparator(); model->AddItem(CLIENT_ID_CURSOR_CHANGE_DISABLED, "Cursor change disabled"); - if (browser->GetHost()->IsMouseCursorChangeDisabled()) + if (mouse_cursor_change_disabled_) model->SetChecked(CLIENT_ID_CURSOR_CHANGE_DISABLED, true); model->AddSeparator(); @@ -370,8 +370,7 @@ bool ClientHandler::OnContextMenuCommand(CefRefPtr browser, ShowSSLInformation(browser); return true; case CLIENT_ID_CURSOR_CHANGE_DISABLED: - browser->GetHost()->SetMouseCursorChangeDisabled( - !browser->GetHost()->IsMouseCursorChangeDisabled()); + mouse_cursor_change_disabled_ = !mouse_cursor_change_disabled_; return true; case CLIENT_ID_OFFLINE: offline_ = !offline_; @@ -469,6 +468,16 @@ bool ClientHandler::OnAutoResize(CefRefPtr browser, return true; } +bool ClientHandler::OnCursorChange(CefRefPtr browser, + CefCursorHandle cursor, + cef_cursor_type_t type, + const CefCursorInfo& custom_cursor_info) { + CEF_REQUIRE_UI_THREAD(); + + // Return true to disable default handling of cursor changes. + return mouse_cursor_change_disabled_; +} + void ClientHandler::OnBeforeDownload( CefRefPtr browser, CefRefPtr download_item, @@ -595,10 +604,6 @@ void ClientHandler::OnAfterCreated(CefRefPtr browser) { message_router_->AddHandler(*(it), false); } - // Disable mouse cursor change if requested via the command-line flag. - if (mouse_cursor_change_disabled_) - browser->GetHost()->SetMouseCursorChangeDisabled(true); - // Set offline mode if requested via the command-line flag. if (offline_) SetOfflineState(browser, true); diff --git a/tests/cefclient/browser/client_handler.h b/tests/cefclient/browser/client_handler.h index 599ef7f08..1be9c4d5d 100644 --- a/tests/cefclient/browser/client_handler.h +++ b/tests/cefclient/browser/client_handler.h @@ -152,6 +152,10 @@ class ClientHandler : public CefClient, int line) OVERRIDE; bool OnAutoResize(CefRefPtr browser, const CefSize& new_size) OVERRIDE; + bool OnCursorChange(CefRefPtr browser, + CefCursorHandle cursor, + cef_cursor_type_t type, + const CefCursorInfo& custom_cursor_info) OVERRIDE; // CefDownloadHandler methods void OnBeforeDownload(CefRefPtr browser, diff --git a/tests/cefclient/browser/client_handler_osr.cc b/tests/cefclient/browser/client_handler_osr.cc index a5873da3b..90271b7f3 100644 --- a/tests/cefclient/browser/client_handler_osr.cc +++ b/tests/cefclient/browser/client_handler_osr.cc @@ -118,16 +118,6 @@ void ClientHandlerOsr::OnAcceleratedPaint( osr_delegate_->OnAcceleratedPaint(browser, type, dirtyRects, share_handle); } -void ClientHandlerOsr::OnCursorChange(CefRefPtr browser, - CefCursorHandle cursor, - CursorType type, - const CefCursorInfo& custom_cursor_info) { - CEF_REQUIRE_UI_THREAD(); - if (!osr_delegate_) - return; - osr_delegate_->OnCursorChange(browser, cursor, type, custom_cursor_info); -} - bool ClientHandlerOsr::StartDragging( CefRefPtr browser, CefRefPtr drag_data, @@ -167,6 +157,21 @@ void ClientHandlerOsr::OnAccessibilityTreeChange(CefRefPtr value) { osr_delegate_->UpdateAccessibilityTree(value); } +bool ClientHandlerOsr::OnCursorChange(CefRefPtr browser, + CefCursorHandle cursor, + cef_cursor_type_t type, + const CefCursorInfo& custom_cursor_info) { + CEF_REQUIRE_UI_THREAD(); + if (ClientHandler::OnCursorChange(browser, cursor, type, + custom_cursor_info)) { + return true; + } + if (osr_delegate_) { + osr_delegate_->OnCursorChange(browser, cursor, type, custom_cursor_info); + } + return true; +} + void ClientHandlerOsr::OnAccessibilityLocationChange( CefRefPtr value) { CEF_REQUIRE_UI_THREAD(); diff --git a/tests/cefclient/browser/client_handler_osr.h b/tests/cefclient/browser/client_handler_osr.h index 1a2c200ef..9dab6524a 100644 --- a/tests/cefclient/browser/client_handler_osr.h +++ b/tests/cefclient/browser/client_handler_osr.h @@ -49,10 +49,6 @@ class ClientHandlerOsr : public ClientHandler, CefRenderHandler::PaintElementType type, const CefRenderHandler::RectList& dirtyRects, void* share_handle) {} - virtual void OnCursorChange(CefRefPtr browser, - CefCursorHandle cursor, - CefRenderHandler::CursorType type, - const CefCursorInfo& custom_cursor_info) = 0; virtual bool StartDragging(CefRefPtr browser, CefRefPtr drag_data, CefRenderHandler::DragOperationsMask allowed_ops, @@ -66,8 +62,13 @@ class ClientHandlerOsr : public ClientHandler, const CefRange& selection_range, const CefRenderHandler::RectList& character_bounds) = 0; - virtual void UpdateAccessibilityTree(CefRefPtr value) = 0; + // These methods match the CefDisplayHandler interface. + virtual void OnCursorChange(CefRefPtr browser, + CefCursorHandle cursor, + cef_cursor_type_t type, + const CefCursorInfo& custom_cursor_info) = 0; + virtual void UpdateAccessibilityTree(CefRefPtr value) = 0; virtual void UpdateAccessibilityLocation(CefRefPtr value) = 0; protected: @@ -114,10 +115,6 @@ class ClientHandlerOsr : public ClientHandler, CefRenderHandler::PaintElementType type, const CefRenderHandler::RectList& dirtyRects, void* share_handle) OVERRIDE; - void OnCursorChange(CefRefPtr browser, - CefCursorHandle cursor, - CursorType type, - const CefCursorInfo& custom_cursor_info) OVERRIDE; bool StartDragging(CefRefPtr browser, CefRefPtr drag_data, CefRenderHandler::DragOperationsMask allowed_ops, @@ -130,6 +127,12 @@ class ClientHandlerOsr : public ClientHandler, const CefRange& selection_range, const CefRenderHandler::RectList& character_bounds) OVERRIDE; + // CefDisplayHandler methods. + bool OnCursorChange(CefRefPtr browser, + CefCursorHandle cursor, + cef_cursor_type_t type, + const CefCursorInfo& custom_cursor_info) OVERRIDE; + // CefAccessibilityHandler methods. void OnAccessibilityTreeChange(CefRefPtr value) OVERRIDE; void OnAccessibilityLocationChange(CefRefPtr value) OVERRIDE; diff --git a/tests/cefclient/browser/osr_window_win.cc b/tests/cefclient/browser/osr_window_win.cc index 66b220d05..c74afc463 100644 --- a/tests/cefclient/browser/osr_window_win.cc +++ b/tests/cefclient/browser/osr_window_win.cc @@ -1027,7 +1027,7 @@ void OsrWindowWin::OnAcceleratedPaint( void OsrWindowWin::OnCursorChange(CefRefPtr browser, CefCursorHandle cursor, - CefRenderHandler::CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) { CEF_REQUIRE_UI_THREAD(); diff --git a/tests/cefclient/browser/osr_window_win.h b/tests/cefclient/browser/osr_window_win.h index 0955ebc49..aad0ed670 100644 --- a/tests/cefclient/browser/osr_window_win.h +++ b/tests/cefclient/browser/osr_window_win.h @@ -133,7 +133,7 @@ class OsrWindowWin void* share_handle) OVERRIDE; void OnCursorChange(CefRefPtr browser, CefCursorHandle cursor, - CefRenderHandler::CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) OVERRIDE; bool StartDragging(CefRefPtr browser, CefRefPtr drag_data, diff --git a/tests/ceftests/os_rendering_unittest.cc b/tests/ceftests/os_rendering_unittest.cc index 610c03593..92e5889bd 100644 --- a/tests/ceftests/os_rendering_unittest.cc +++ b/tests/ceftests/os_rendering_unittest.cc @@ -1149,15 +1149,16 @@ class OSRTestHandler : public RoutingTestHandler, } } - void OnCursorChange(CefRefPtr browser, + bool OnCursorChange(CefRefPtr browser, CefCursorHandle cursor, - CursorType type, + cef_cursor_type_t type, const CefCursorInfo& custom_cursor_info) override { if (test_type_ == OSR_TEST_CURSOR && started()) { EXPECT_EQ(CT_HAND, type); EXPECT_EQ(nullptr, custom_cursor_info.buffer); DestroySucceededTestSoon(); } + return true; } void OnImeCompositionRangeChanged(