mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2024-12-12 09:37:37 +01:00
e7ddc933c9
- Remove |accept_lang| parameter from CefJSDialogHandler::OnJSDialog and CefFormatUrlForSecurityDisplay (see https://crbug.com/336973#c36). - Remove remaining NPAPI-related code including functions from cef_web_plugin.h (see https://crbug.com/493212#c55). - Mac: 10.7+ deployment target is now required for client applications. - Mac: Remove CefBrowserHost::SetWindowVisibility (issue #1375). No replacement is required for windowed rendering. Use WasHidden for off-screen rendering. - Windows: Visual Studio 2015 Update 2 is now required when building CEF/Chromium.
84 lines
2.7 KiB
C++
84 lines
2.7 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_LAYOUT_IMPL_H_
|
|
#define CEF_LIBCEF_BROWSER_VIEWS_LAYOUT_IMPL_H_
|
|
#pragma once
|
|
|
|
#include "include/views/cef_box_layout.h"
|
|
#include "include/views/cef_fill_layout.h"
|
|
#include "include/views/cef_layout.h"
|
|
|
|
#include "libcef/browser/thread_util.h"
|
|
#include "libcef/browser/views/layout_adapter.h"
|
|
#include "libcef/browser/views/layout_util.h"
|
|
|
|
#include "base/logging.h"
|
|
#include "ui/views/layout/layout_manager.h"
|
|
#include "ui/views/view.h"
|
|
|
|
// Base template for implementing CefLayout-derived classes. See comments in
|
|
// view_impl.h for a usage overview.
|
|
template <class ViewsLayoutClass, class CefLayoutClass>
|
|
class CefLayoutImpl : public CefLayoutAdapter,
|
|
public CefLayoutClass {
|
|
public:
|
|
// Returns the underlying views::LayoutManager object as the derived type.
|
|
// Does not transfer ownership.
|
|
ViewsLayoutClass* layout() const { return layout_ref_; }
|
|
|
|
// Returns the views::View that owns this object.
|
|
views::View* owner_view() const { return owner_view_; }
|
|
|
|
// CefLayoutAdapter methods:
|
|
views::LayoutManager* Get() const override {
|
|
return layout();
|
|
}
|
|
void Detach() override {
|
|
owner_view_ = nullptr;
|
|
layout_ref_ = nullptr;
|
|
}
|
|
|
|
// CefLayout methods. When adding new As*() methods make sure to update
|
|
// CefLayoutAdapter::GetFor() in layout_adapter.cc.
|
|
CefRefPtr<CefBoxLayout> AsBoxLayout() override { return nullptr; }
|
|
CefRefPtr<CefFillLayout> AsFillLayout() override { return nullptr; }
|
|
bool IsValid() override {
|
|
CEF_REQUIRE_UIT_RETURN(false);
|
|
return !!layout_ref_;
|
|
}
|
|
|
|
protected:
|
|
// Create a new implementation object.
|
|
// Always call Initialize() after creation.
|
|
CefLayoutImpl()
|
|
: layout_ref_(nullptr),
|
|
owner_view_(nullptr) {
|
|
}
|
|
|
|
// Initialize this object and assign ownership to |owner_view|.
|
|
void Initialize(views::View* owner_view) {
|
|
DCHECK(owner_view);
|
|
owner_view_ = owner_view;
|
|
layout_ref_ = CreateLayout();
|
|
DCHECK(layout_ref_);
|
|
owner_view->SetLayoutManager(layout_ref_);
|
|
layout_util::Assign(this, owner_view);
|
|
}
|
|
|
|
// Create the views::LayoutManager object.
|
|
virtual ViewsLayoutClass* CreateLayout() = 0;
|
|
|
|
private:
|
|
// Unowned reference to the views::LayoutManager wrapped by this object. Will
|
|
// be nullptr after the views::LayoutManager is destroyed.
|
|
ViewsLayoutClass* layout_ref_;
|
|
|
|
// Unowned reference to the views::View that owns this object. Will be nullptr
|
|
// after the views::LayoutManager is destroyed.
|
|
views::View* owner_view_;
|
|
};
|
|
|
|
#endif // CEF_LIBCEF_BROWSER_VIEWS_LAYOUT_IMPL_H_
|