| // 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<WebViewEx, CefBrowserViewDelegate> { |
| public: |
| typedef CefViewView<WebViewEx, CefBrowserViewDelegate> 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_ |