mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	The "Find" widget will be excluded from regions near the edges of the window that contain overlays, draggable regions or titlebar.
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.9 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_BROWSER_DELEGATE_H_
 | 
						|
#define CEF_LIBCEF_BROWSER_CHROME_BROWSER_DELEGATE_H_
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include <memory>
 | 
						|
 | 
						|
#include "base/memory/scoped_refptr.h"
 | 
						|
#include "chrome/browser/ui/page_action/page_action_icon_type.h"
 | 
						|
#include "content/public/browser/web_contents_delegate.h"
 | 
						|
#include "ui/base/window_open_disposition.h"
 | 
						|
 | 
						|
class Browser;
 | 
						|
 | 
						|
namespace cef {
 | 
						|
 | 
						|
// Delegate for the chrome Browser object. Lifespan is controlled by the Browser
 | 
						|
// object. See the ChromeBrowserDelegate documentation for additional details.
 | 
						|
// Only accessed on the UI thread.
 | 
						|
class BrowserDelegate : public content::WebContentsDelegate {
 | 
						|
 public:
 | 
						|
  // Opaque ref-counted base class for CEF-specific parameters passed via
 | 
						|
  // Browser::CreateParams::cef_params and possibly shared by multiple Browser
 | 
						|
  // instances.
 | 
						|
  class CreateParams : public base::RefCounted<CreateParams> {
 | 
						|
   public:
 | 
						|
    virtual ~CreateParams() {}
 | 
						|
  };
 | 
						|
 | 
						|
  // Called from the Browser constructor to create a new delegate.
 | 
						|
  static std::unique_ptr<BrowserDelegate> Create(
 | 
						|
      Browser* browser,
 | 
						|
      scoped_refptr<CreateParams> cef_params);
 | 
						|
 | 
						|
  ~BrowserDelegate() override {}
 | 
						|
 | 
						|
  // Optionally override chrome::AddWebContents behavior. This is most often
 | 
						|
  // called via Browser::AddNewContents for new popup browsers and provides an
 | 
						|
  // opportunity for CEF to create a new Browser instead of proceeding with
 | 
						|
  // default Browser or tab creation.
 | 
						|
  virtual std::unique_ptr<content::WebContents> AddWebContents(
 | 
						|
      std::unique_ptr<content::WebContents> new_contents) = 0;
 | 
						|
 | 
						|
  // Called immediately after |new_contents| is created via chrome::Navigate.
 | 
						|
  // This is most often called for navigations targeting a new tab without a
 | 
						|
  // pre-existing WebContents.
 | 
						|
  virtual void OnWebContentsCreated(content::WebContents* new_contents) = 0;
 | 
						|
 | 
						|
  // Add or remove ownership of the WebContents.
 | 
						|
  virtual void SetAsDelegate(content::WebContents* web_contents,
 | 
						|
                             bool set_delegate) = 0;
 | 
						|
 | 
						|
  // Return true to show the status bubble. This should consistently return the
 | 
						|
  // same value for the lifespan of a Browser.
 | 
						|
  virtual bool ShowStatusBubble(bool show_by_default) {
 | 
						|
    return show_by_default;
 | 
						|
  }
 | 
						|
 | 
						|
  // Return true to handle (or disable) a command. ID values come from
 | 
						|
  // chrome/app/chrome_command_ids.h.
 | 
						|
  virtual bool HandleCommand(int command_id,
 | 
						|
                             WindowOpenDisposition disposition) {
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
 | 
						|
  // Return true if the app menu item should be visible. ID values come from
 | 
						|
  // chrome/app/chrome_command_ids.h.
 | 
						|
  virtual bool IsAppMenuItemVisible(int command_id) { return true; }
 | 
						|
 | 
						|
  // Return true if the app menu item should be enabled. ID values come from
 | 
						|
  // chrome/app/chrome_command_ids.h.
 | 
						|
  virtual bool IsAppMenuItemEnabled(int command_id) { return true; }
 | 
						|
 | 
						|
  // Return true if the page action icon should be visible.
 | 
						|
  virtual bool IsPageActionIconVisible(PageActionIconType icon_type) {
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
 | 
						|
  enum class ToolbarButtonType {
 | 
						|
    kCast = 0,
 | 
						|
    kDownload,
 | 
						|
    kSendTabToSelf,
 | 
						|
    kSidePanel,
 | 
						|
    kMaxValue = kSidePanel,
 | 
						|
  };
 | 
						|
 | 
						|
  // Return true if the toolbar button should be visible.
 | 
						|
  virtual bool IsToolbarButtonVisible(ToolbarButtonType button_type) {
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
 | 
						|
  // Optionally modify the bounding box for the Find bar.
 | 
						|
  virtual void UpdateFindBarBoundingBox(gfx::Rect* bounds) {}
 | 
						|
 | 
						|
  // Same as RequestMediaAccessPermission but returning |callback| if the
 | 
						|
  // request is unhandled.
 | 
						|
  [[nodiscard]] virtual content::MediaResponseCallback
 | 
						|
  RequestMediaAccessPermissionEx(content::WebContents* web_contents,
 | 
						|
                                 const content::MediaStreamRequest& request,
 | 
						|
                                 content::MediaResponseCallback callback) {
 | 
						|
    return callback;
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
}  // namespace cef
 | 
						|
 | 
						|
#endif  // CEF_LIBCEF_BROWSER_CHROME_BROWSER_DELEGATE_H_
 |