blob: 7a50d8afbe3a0282dabdbd47af3421d14d9ee261 [file] [log] [blame]
// 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_