mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			163 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // 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_CHROME_CHROME_BROWSER_HOST_IMPL_H_
 | |
| #define CEF_LIBCEF_BROWSER_CHROME_CHROME_BROWSER_HOST_IMPL_H_
 | |
| #pragma once
 | |
| 
 | |
| #include <memory>
 | |
| 
 | |
| #include "libcef/browser/browser_host_base.h"
 | |
| #include "libcef/browser/chrome/browser_delegate.h"
 | |
| 
 | |
| class Browser;
 | |
| class ChromeBrowserDelegate;
 | |
| 
 | |
| // CefBrowser implementation for the chrome runtime. Method calls are delegated
 | |
| // to the chrome Browser object or the WebContents as appropriate. See the
 | |
| // ChromeBrowserDelegate documentation for additional details. All methods are
 | |
| // thread-safe unless otherwise indicated.
 | |
| class ChromeBrowserHostImpl : public CefBrowserHostBase {
 | |
|  public:
 | |
|   // CEF-specific parameters passed via Browser::CreateParams::cef_params and
 | |
|   // possibly shared by multiple Browser instances.
 | |
|   class DelegateCreateParams : public cef::BrowserDelegate::CreateParams {
 | |
|    public:
 | |
|     DelegateCreateParams(const CefBrowserCreateParams& create_params)
 | |
|         : create_params_(create_params) {}
 | |
| 
 | |
|     CefBrowserCreateParams create_params_;
 | |
|   };
 | |
| 
 | |
|   // Create a new Browser with a single tab (WebContents) and associated
 | |
|   // ChromeBrowserHostImpl instance.
 | |
|   static CefRefPtr<ChromeBrowserHostImpl> Create(
 | |
|       const CefBrowserCreateParams& params);
 | |
| 
 | |
|   // Returns the browser associated with the specified RenderViewHost.
 | |
|   static CefRefPtr<ChromeBrowserHostImpl> GetBrowserForHost(
 | |
|       const content::RenderViewHost* host);
 | |
|   // Returns the browser associated with the specified RenderFrameHost.
 | |
|   static CefRefPtr<ChromeBrowserHostImpl> GetBrowserForHost(
 | |
|       const content::RenderFrameHost* host);
 | |
|   // Returns the browser associated with the specified WebContents.
 | |
|   static CefRefPtr<ChromeBrowserHostImpl> GetBrowserForContents(
 | |
|       const content::WebContents* contents);
 | |
|   // Returns the browser associated with the specified global ID.
 | |
|   static CefRefPtr<ChromeBrowserHostImpl> GetBrowserForGlobalId(
 | |
|       const content::GlobalRenderFrameHostId& global_id);
 | |
|   // Returns the browser associated with the specified Browser.
 | |
|   static CefRefPtr<ChromeBrowserHostImpl> GetBrowserForBrowser(
 | |
|       const Browser* browser);
 | |
| 
 | |
|   ~ChromeBrowserHostImpl() override;
 | |
| 
 | |
|   // CefBrowserContentsDelegate::Observer methods:
 | |
|   void OnWebContentsDestroyed(content::WebContents* web_contents) override;
 | |
| 
 | |
|   // CefBrowserHostBase methods called from CefFrameHostImpl:
 | |
|   void OnSetFocus(cef_focus_source_t source) override;
 | |
| 
 | |
|   // CefBrowserHost methods:
 | |
|   void CloseBrowser(bool force_close) override;
 | |
|   bool TryCloseBrowser() override;
 | |
|   CefWindowHandle GetWindowHandle() override;
 | |
|   CefWindowHandle GetOpenerWindowHandle() override;
 | |
|   double GetZoomLevel() override;
 | |
|   void SetZoomLevel(double zoomLevel) override;
 | |
|   void Find(const CefString& searchText,
 | |
|             bool forward,
 | |
|             bool matchCase,
 | |
|             bool findNext) override;
 | |
|   void StopFinding(bool clearSelection) override;
 | |
|   void ShowDevTools(const CefWindowInfo& windowInfo,
 | |
|                     CefRefPtr<CefClient> client,
 | |
|                     const CefBrowserSettings& settings,
 | |
|                     const CefPoint& inspect_element_at) override;
 | |
|   void CloseDevTools() override;
 | |
|   bool HasDevTools() override;
 | |
|   bool IsWindowRenderingDisabled() override;
 | |
|   void WasResized() override;
 | |
|   void WasHidden(bool hidden) override;
 | |
|   void NotifyScreenInfoChanged() override;
 | |
|   void Invalidate(PaintElementType type) override;
 | |
|   void SendExternalBeginFrame() override;
 | |
|   void SendTouchEvent(const CefTouchEvent& event) override;
 | |
|   void SendCaptureLostEvent() override;
 | |
|   int GetWindowlessFrameRate() override;
 | |
|   void SetWindowlessFrameRate(int frame_rate) override;
 | |
|   void ImeSetComposition(const CefString& text,
 | |
|                          const std::vector<CefCompositionUnderline>& underlines,
 | |
|                          const CefRange& replacement_range,
 | |
|                          const CefRange& selection_range) override;
 | |
|   void ImeCommitText(const CefString& text,
 | |
|                      const CefRange& replacement_range,
 | |
|                      int relative_cursor_pos) override;
 | |
|   void ImeFinishComposingText(bool keep_selection) override;
 | |
|   void ImeCancelComposition() override;
 | |
|   void DragTargetDragEnter(CefRefPtr<CefDragData> drag_data,
 | |
|                            const CefMouseEvent& event,
 | |
|                            DragOperationsMask allowed_ops) override;
 | |
|   void DragTargetDragOver(const CefMouseEvent& event,
 | |
|                           DragOperationsMask allowed_ops) override;
 | |
|   void DragTargetDragLeave() override;
 | |
|   void DragTargetDrop(const CefMouseEvent& event) override;
 | |
|   void DragSourceSystemDragEnded() override;
 | |
|   void DragSourceEndedAt(int x, int y, DragOperationsMask op) override;
 | |
|   void SetAudioMuted(bool mute) override;
 | |
|   bool IsAudioMuted() override;
 | |
|   void SetAccessibilityState(cef_state_t accessibility_state) override;
 | |
|   void SetAutoResizeEnabled(bool enabled,
 | |
|                             const CefSize& min_size,
 | |
|                             const CefSize& max_size) override;
 | |
|   CefRefPtr<CefExtension> GetExtension() override;
 | |
|   bool IsBackgroundHost() override;
 | |
| 
 | |
|  protected:
 | |
|   bool Navigate(const content::OpenURLParams& params) override;
 | |
| 
 | |
|  private:
 | |
|   friend class ChromeBrowserDelegate;
 | |
| 
 | |
|   ChromeBrowserHostImpl(
 | |
|       const CefBrowserSettings& settings,
 | |
|       CefRefPtr<CefClient> client,
 | |
|       std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate,
 | |
|       scoped_refptr<CefBrowserInfo> browser_info,
 | |
|       CefRefPtr<CefRequestContextImpl> request_context);
 | |
| 
 | |
|   // Create a new Browser without initializing the WebContents.
 | |
|   static Browser* CreateBrowser(const CefBrowserCreateParams& params);
 | |
| 
 | |
|   // Called from ChromeBrowserDelegate::CreateBrowser when this object is first
 | |
|   // created. Must be called on the UI thread.
 | |
|   void Attach(content::WebContents* web_contents,
 | |
|               CefRefPtr<ChromeBrowserHostImpl> opener);
 | |
| 
 | |
|   // Called from ChromeBrowserDelegate::AddNewContents to take ownership of a
 | |
|   // popup WebContents.
 | |
|   void AddNewContents(std::unique_ptr<content::WebContents> contents);
 | |
| 
 | |
|   // Called when this object changes Browser ownership (e.g. initially created,
 | |
|   // dragging between windows, etc). The old Browser, if any, will be cleared
 | |
|   // before the new Browser is added. Must be called on the UI thread.
 | |
|   void SetBrowser(Browser* browser);
 | |
| 
 | |
|   // CefBrowserHostBase methods:
 | |
|   void WindowDestroyed() override;
 | |
|   bool WillBeDestroyed() const override;
 | |
|   void DestroyBrowser() override;
 | |
| 
 | |
|   void DoCloseBrowser(bool force_close);
 | |
| 
 | |
|   // Returns the current tab index for the associated WebContents, or
 | |
|   // TabStripModel::kNoTab if not found.
 | |
|   int GetCurrentTabIndex() const;
 | |
| 
 | |
|   Browser* browser_ = nullptr;
 | |
|   CefWindowHandle host_window_handle_ = kNullWindowHandle;
 | |
| };
 | |
| 
 | |
| #endif  // CEF_LIBCEF_BROWSER_CHROME_CHROME_BROWSER_HOST_IMPL_H_
 |