// 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 "include/views/cef_browser_view_delegate.h" #include "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) {} }; class CefBrowserViewView : public CefViewView { public: typedef CefViewView ParentClass; class Delegate { public: // Called when the BrowserView has been added to a parent view. virtual void OnBrowserViewAdded() = 0; // Called when the BrowserView bounds have changed. virtual void OnBoundsChanged() = 0; protected: virtual ~Delegate() {} }; // |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; private: // Not owned by this object. Delegate* browser_view_delegate_; DISALLOW_COPY_AND_ASSIGN(CefBrowserViewView); }; #endif // CEF_LIBCEF_BROWSER_VIEWS_BROWSER_VIEW_VIEW_H_