mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			125 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (c) 2015 The Chromium Embedded Framework Authors.
 | |
| // Portions copyright (c) 2011 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.
 | |
| 
 | |
| #ifndef CEF_LIBCEF_BROWSER_ALLOY_BROWSER_PLATFORM_DELEGATE_ALLOY_H_
 | |
| #define CEF_LIBCEF_BROWSER_ALLOY_BROWSER_PLATFORM_DELEGATE_ALLOY_H_
 | |
| 
 | |
| #include "libcef/browser/browser_platform_delegate.h"
 | |
| #include "libcef/browser/web_contents_dialog_helper.h"
 | |
| 
 | |
| #include "base/memory/weak_ptr.h"
 | |
| #include "components/find_in_page/find_notification_details.h"
 | |
| #include "content/public/browser/web_contents.h"
 | |
| #include "ui/gfx/geometry/size.h"
 | |
| 
 | |
| // Implementation of Alloy-based browser functionality.
 | |
| class CefBrowserPlatformDelegateAlloy : public CefBrowserPlatformDelegate {
 | |
|  public:
 | |
|   CefBrowserPlatformDelegateAlloy(const CefBrowserPlatformDelegateAlloy&) =
 | |
|       delete;
 | |
|   CefBrowserPlatformDelegateAlloy& operator=(
 | |
|       const CefBrowserPlatformDelegateAlloy&) = delete;
 | |
| 
 | |
|   content::WebContents* CreateWebContents(CefBrowserCreateParams& create_params,
 | |
|                                           bool& own_web_contents) override;
 | |
|   void WebContentsCreated(content::WebContents* web_contents,
 | |
|                           bool owned) override;
 | |
|   void AddNewContents(content::WebContents* source,
 | |
|                       std::unique_ptr<content::WebContents> new_contents,
 | |
|                       const GURL& target_url,
 | |
|                       WindowOpenDisposition disposition,
 | |
|                       const gfx::Rect& initial_rect,
 | |
|                       bool user_gesture,
 | |
|                       bool* was_blocked) override;
 | |
|   bool ShouldAllowRendererInitiatedCrossProcessNavigation(
 | |
|       bool is_main_frame_navigation) override;
 | |
|   void RenderViewCreated(content::RenderViewHost* render_view_host) override;
 | |
|   void RenderViewReady() override;
 | |
|   void BrowserCreated(CefBrowserHostBase* browser) override;
 | |
|   void CreateExtensionHost(const extensions::Extension* extension,
 | |
|                            const GURL& url,
 | |
|                            extensions::mojom::ViewType host_type) override;
 | |
|   extensions::ExtensionHost* GetExtensionHost() const override;
 | |
|   void BrowserDestroyed(CefBrowserHostBase* browser) override;
 | |
|   void SendCaptureLostEvent() override;
 | |
| #if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC))
 | |
|   void NotifyMoveOrResizeStarted() override;
 | |
| #endif
 | |
|   bool PreHandleGestureEvent(content::WebContents* source,
 | |
|                              const blink::WebGestureEvent& event) override;
 | |
|   bool IsNeverComposited(content::WebContents* web_contents) override;
 | |
|   void SetAutoResizeEnabled(bool enabled,
 | |
|                             const CefSize& min_size,
 | |
|                             const CefSize& max_size) override;
 | |
|   void SetAccessibilityState(cef_state_t accessibility_state) override;
 | |
|   bool IsPrintPreviewSupported() const override;
 | |
|   void Print() override;
 | |
|   void PrintToPDF(const CefString& path,
 | |
|                   const CefPdfPrintSettings& settings,
 | |
|                   CefRefPtr<CefPdfPrintCallback> callback) override;
 | |
|   void Find(const CefString& searchText,
 | |
|             bool forward,
 | |
|             bool matchCase,
 | |
|             bool findNext) override;
 | |
|   void StopFinding(bool clearSelection) override;
 | |
| 
 | |
|   // Called from AlloyBrowserHostImpl::FindReply().
 | |
|   bool HandleFindReply(int request_id,
 | |
|                        int number_of_matches,
 | |
|                        const gfx::Rect& selection_rect,
 | |
|                        int active_match_ordinal,
 | |
|                        bool final_update);
 | |
| 
 | |
|   const find_in_page::FindNotificationDetails& last_search_result() const {
 | |
|     return last_search_result_;
 | |
|   }
 | |
| 
 | |
|  protected:
 | |
|   CefBrowserPlatformDelegateAlloy();
 | |
| 
 | |
|   base::RepeatingClosure GetBoundsChangedCallback();
 | |
| 
 | |
|   // Called from BrowserPlatformDelegateNative::set_windowless_handler().
 | |
|   void set_as_secondary() { primary_ = false; }
 | |
| 
 | |
|  private:
 | |
|   void SetOwnedWebContents(content::WebContents* owned_contents);
 | |
| 
 | |
|   void DestroyExtensionHost();
 | |
|   void OnExtensionHostDeleted();
 | |
| 
 | |
|   void ConfigureAutoResize();
 | |
| 
 | |
|   // Non-nullptr if this object owns the WebContents. Will be nullptr for popup
 | |
|   // browsers between the calls to WebContentsCreated() and AddNewContents(),
 | |
|   // and may never be set if the parent browser is destroyed during popup
 | |
|   // creation.
 | |
|   std::unique_ptr<content::WebContents> owned_web_contents_;
 | |
| 
 | |
|   // Used for the print preview dialog.
 | |
|   std::unique_ptr<CefWebContentsDialogHelper> web_contents_dialog_helper_;
 | |
| 
 | |
|   // The last find result. This object contains details about the number of
 | |
|   // matches, the find selection rectangle, etc.
 | |
|   find_in_page::FindNotificationDetails last_search_result_;
 | |
| 
 | |
|   // Used when the browser is hosting an extension.
 | |
|   extensions::ExtensionHost* extension_host_ = nullptr;
 | |
|   bool is_background_host_ = false;
 | |
| 
 | |
|   // Used with auto-resize.
 | |
|   bool auto_resize_enabled_ = false;
 | |
|   gfx::Size auto_resize_min_;
 | |
|   gfx::Size auto_resize_max_;
 | |
| 
 | |
|   // True if this is the primary platform delegate, in which case it will
 | |
|   // register WebContents delegate/observers.
 | |
|   bool primary_ = true;
 | |
| 
 | |
|   base::WeakPtrFactory<CefBrowserPlatformDelegateAlloy> weak_ptr_factory_;
 | |
| };
 | |
| 
 | |
| #endif  // CEF_LIBCEF_BROWSER_ALLOY_BROWSER_PLATFORM_DELEGATE_ALLOY_H_
 |