mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright 2016 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_VIEWS_BROWSER_VIEW_VIEW_H_
 | 
						|
#define CEF_LIBCEF_BROWSER_VIEWS_BROWSER_VIEW_VIEW_H_
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include "base/memory/raw_ptr.h"
 | 
						|
#include "cef/include/views/cef_browser_view_delegate.h"
 | 
						|
#include "cef/libcef/browser/views/view_view.h"
 | 
						|
#include "ui/views/controls/webview/webview.h"
 | 
						|
 | 
						|
// Extend views::WebView with a no-argument constructor as required by the
 | 
						|
// CefViewView template.
 | 
						|
class WebViewEx : public views::WebView {
 | 
						|
 public:
 | 
						|
  WebViewEx() : views::WebView(nullptr) {
 | 
						|
    // Mouse events on draggable regions will not be handled by the WebView.
 | 
						|
    // Avoid the resulting DCHECK in NativeViewHost::OnMousePressed by
 | 
						|
    // configuring the NativeViewHost not to process events via the view
 | 
						|
    // hierarchy.
 | 
						|
    holder()->SetCanProcessEventsWithinSubtree(false);
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
class CefBrowserViewView
 | 
						|
    : public CefViewView<WebViewEx, CefBrowserViewDelegate> {
 | 
						|
 public:
 | 
						|
  using ParentClass = CefViewView<WebViewEx, CefBrowserViewDelegate>;
 | 
						|
 | 
						|
  CefBrowserViewView(const CefBrowserViewView&) = delete;
 | 
						|
  CefBrowserViewView& operator=(const CefBrowserViewView&) = delete;
 | 
						|
 | 
						|
  class Delegate {
 | 
						|
   public:
 | 
						|
    // Called when the BrowserView is added or removed from a Widget.
 | 
						|
    virtual void AddedToWidget() = 0;
 | 
						|
    virtual void RemovedFromWidget() = 0;
 | 
						|
 | 
						|
    // Called when the BrowserView bounds have changed.
 | 
						|
    virtual void OnBoundsChanged() = 0;
 | 
						|
 | 
						|
    // Called when the BrowserView receives a gesture event.
 | 
						|
    // Returns true if the gesture was handled.
 | 
						|
    virtual bool OnGestureEvent(ui::GestureEvent* event) = 0;
 | 
						|
 | 
						|
   protected:
 | 
						|
    virtual ~Delegate() = default;
 | 
						|
  };
 | 
						|
 | 
						|
  // |cef_delegate| may be nullptr.
 | 
						|
  // |browser_view_delegate| must be non-nullptr.
 | 
						|
  CefBrowserViewView(CefBrowserViewDelegate* cef_delegate,
 | 
						|
                     Delegate* browser_view_delegate);
 | 
						|
 | 
						|
  // View methods:
 | 
						|
  void ViewHierarchyChanged(
 | 
						|
      const views::ViewHierarchyChangedDetails& details) override;
 | 
						|
  void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
 | 
						|
  void OnGestureEvent(ui::GestureEvent* event) override;
 | 
						|
  void AddedToWidget() override;
 | 
						|
  void RemovedFromWidget() override;
 | 
						|
 | 
						|
 private:
 | 
						|
  // Not owned by this object.
 | 
						|
  raw_ptr<Delegate> browser_view_delegate_;
 | 
						|
};
 | 
						|
 | 
						|
#endif  // CEF_LIBCEF_BROWSER_VIEWS_BROWSER_VIEW_VIEW_H_
 |