mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	The cursor change can now be handled by the client with both windowed and off-screen rendering. Returning true from OnCursorChange will disable the default cursor change behavior. This is functionally equivalent to the CefBrowserHost::SetMouseCursorChangeDisabled method, so that method has been removed.
		
			
				
	
	
		
			152 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (c) 2015 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_TESTS_CEFCLIENT_BROWSER_CLIENT_HANDLER_OSR_H_
 | |
| #define CEF_TESTS_CEFCLIENT_BROWSER_CLIENT_HANDLER_OSR_H_
 | |
| #pragma once
 | |
| 
 | |
| #include "tests/cefclient/browser/client_handler.h"
 | |
| 
 | |
| namespace client {
 | |
| 
 | |
| // Client handler implementation for windowless browsers. There will only ever
 | |
| // be one browser per handler instance.
 | |
| class ClientHandlerOsr : public ClientHandler,
 | |
|                          public CefAccessibilityHandler,
 | |
|                          public CefRenderHandler {
 | |
|  public:
 | |
|   // Implement this interface to receive notification of ClientHandlerOsr
 | |
|   // events. The methods of this class will be called on the CEF UI thread.
 | |
|   class OsrDelegate {
 | |
|    public:
 | |
|     // These methods match the CefLifeSpanHandler interface.
 | |
|     virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) = 0;
 | |
|     virtual void OnBeforeClose(CefRefPtr<CefBrowser> browser) = 0;
 | |
| 
 | |
|     // These methods match the CefRenderHandler interface.
 | |
|     virtual bool GetRootScreenRect(CefRefPtr<CefBrowser> browser,
 | |
|                                    CefRect& rect) = 0;
 | |
|     virtual void GetViewRect(CefRefPtr<CefBrowser> browser, CefRect& rect) = 0;
 | |
|     virtual bool GetScreenPoint(CefRefPtr<CefBrowser> browser,
 | |
|                                 int viewX,
 | |
|                                 int viewY,
 | |
|                                 int& screenX,
 | |
|                                 int& screenY) = 0;
 | |
|     virtual bool GetScreenInfo(CefRefPtr<CefBrowser> browser,
 | |
|                                CefScreenInfo& screen_info) = 0;
 | |
|     virtual void OnPopupShow(CefRefPtr<CefBrowser> browser, bool show) = 0;
 | |
|     virtual void OnPopupSize(CefRefPtr<CefBrowser> browser,
 | |
|                              const CefRect& rect) = 0;
 | |
|     virtual void OnPaint(CefRefPtr<CefBrowser> browser,
 | |
|                          CefRenderHandler::PaintElementType type,
 | |
|                          const CefRenderHandler::RectList& dirtyRects,
 | |
|                          const void* buffer,
 | |
|                          int width,
 | |
|                          int height) = 0;
 | |
|     virtual void OnAcceleratedPaint(
 | |
|         CefRefPtr<CefBrowser> browser,
 | |
|         CefRenderHandler::PaintElementType type,
 | |
|         const CefRenderHandler::RectList& dirtyRects,
 | |
|         void* share_handle) {}
 | |
|     virtual bool StartDragging(CefRefPtr<CefBrowser> browser,
 | |
|                                CefRefPtr<CefDragData> drag_data,
 | |
|                                CefRenderHandler::DragOperationsMask allowed_ops,
 | |
|                                int x,
 | |
|                                int y) = 0;
 | |
|     virtual void UpdateDragCursor(
 | |
|         CefRefPtr<CefBrowser> browser,
 | |
|         CefRenderHandler::DragOperation operation) = 0;
 | |
|     virtual void OnImeCompositionRangeChanged(
 | |
|         CefRefPtr<CefBrowser> browser,
 | |
|         const CefRange& selection_range,
 | |
|         const CefRenderHandler::RectList& character_bounds) = 0;
 | |
| 
 | |
|     // These methods match the CefDisplayHandler interface.
 | |
|     virtual void OnCursorChange(CefRefPtr<CefBrowser> browser,
 | |
|                                 CefCursorHandle cursor,
 | |
|                                 cef_cursor_type_t type,
 | |
|                                 const CefCursorInfo& custom_cursor_info) = 0;
 | |
| 
 | |
|     virtual void UpdateAccessibilityTree(CefRefPtr<CefValue> value) = 0;
 | |
|     virtual void UpdateAccessibilityLocation(CefRefPtr<CefValue> value) = 0;
 | |
| 
 | |
|    protected:
 | |
|     virtual ~OsrDelegate() {}
 | |
|   };
 | |
| 
 | |
|   ClientHandlerOsr(Delegate* delegate,
 | |
|                    OsrDelegate* osr_delegate,
 | |
|                    const std::string& startup_url);
 | |
| 
 | |
|   // This object may outlive the OsrDelegate object so it's necessary for the
 | |
|   // OsrDelegate to detach itself before destruction.
 | |
|   void DetachOsrDelegate();
 | |
| 
 | |
|   // CefClient methods.
 | |
|   CefRefPtr<CefRenderHandler> GetRenderHandler() OVERRIDE { return this; }
 | |
|   CefRefPtr<CefAccessibilityHandler> GetAccessibilityHandler() OVERRIDE {
 | |
|     return this;
 | |
|   }
 | |
| 
 | |
|   // CefLifeSpanHandler methods.
 | |
|   void OnAfterCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;
 | |
|   void OnBeforeClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
 | |
| 
 | |
|   // CefRenderHandler methods.
 | |
|   bool GetRootScreenRect(CefRefPtr<CefBrowser> browser, CefRect& rect) OVERRIDE;
 | |
|   void GetViewRect(CefRefPtr<CefBrowser> browser, CefRect& rect) OVERRIDE;
 | |
|   bool GetScreenPoint(CefRefPtr<CefBrowser> browser,
 | |
|                       int viewX,
 | |
|                       int viewY,
 | |
|                       int& screenX,
 | |
|                       int& screenY) OVERRIDE;
 | |
|   bool GetScreenInfo(CefRefPtr<CefBrowser> browser,
 | |
|                      CefScreenInfo& screen_info) OVERRIDE;
 | |
|   void OnPopupShow(CefRefPtr<CefBrowser> browser, bool show) OVERRIDE;
 | |
|   void OnPopupSize(CefRefPtr<CefBrowser> browser, const CefRect& rect) OVERRIDE;
 | |
|   void OnPaint(CefRefPtr<CefBrowser> browser,
 | |
|                CefRenderHandler::PaintElementType type,
 | |
|                const CefRenderHandler::RectList& dirtyRects,
 | |
|                const void* buffer,
 | |
|                int width,
 | |
|                int height) OVERRIDE;
 | |
|   void OnAcceleratedPaint(CefRefPtr<CefBrowser> browser,
 | |
|                           CefRenderHandler::PaintElementType type,
 | |
|                           const CefRenderHandler::RectList& dirtyRects,
 | |
|                           void* share_handle) OVERRIDE;
 | |
|   bool StartDragging(CefRefPtr<CefBrowser> browser,
 | |
|                      CefRefPtr<CefDragData> drag_data,
 | |
|                      CefRenderHandler::DragOperationsMask allowed_ops,
 | |
|                      int x,
 | |
|                      int y) OVERRIDE;
 | |
|   void UpdateDragCursor(CefRefPtr<CefBrowser> browser,
 | |
|                         CefRenderHandler::DragOperation operation) OVERRIDE;
 | |
|   void OnImeCompositionRangeChanged(
 | |
|       CefRefPtr<CefBrowser> browser,
 | |
|       const CefRange& selection_range,
 | |
|       const CefRenderHandler::RectList& character_bounds) OVERRIDE;
 | |
| 
 | |
|   // CefDisplayHandler methods.
 | |
|   bool OnCursorChange(CefRefPtr<CefBrowser> browser,
 | |
|                       CefCursorHandle cursor,
 | |
|                       cef_cursor_type_t type,
 | |
|                       const CefCursorInfo& custom_cursor_info) OVERRIDE;
 | |
| 
 | |
|   // CefAccessibilityHandler methods.
 | |
|   void OnAccessibilityTreeChange(CefRefPtr<CefValue> value) OVERRIDE;
 | |
|   void OnAccessibilityLocationChange(CefRefPtr<CefValue> value) OVERRIDE;
 | |
| 
 | |
|  private:
 | |
|   // Only accessed on the UI thread.
 | |
|   OsrDelegate* osr_delegate_;
 | |
| 
 | |
|   // Include the default reference counting implementation.
 | |
|   IMPLEMENT_REFCOUNTING(ClientHandlerOsr);
 | |
|   DISALLOW_COPY_AND_ASSIGN(ClientHandlerOsr);
 | |
| };
 | |
| 
 | |
| }  // namespace client
 | |
| 
 | |
| #endif  // CEF_TESTS_CEFCLIENT_BROWSER_CLIENT_HANDLER_OSR_H_
 |