mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Split the Alloy runtime into bootstrap and style components. Support creation of Alloy style browsers and windows with the Chrome runtime. Chrome runtime (`--enable-chrome-runtime`) + Alloy style (`--use-alloy-style`) supports Views (`--use-views`), native parent (`--use-native`) and windowless rendering (`--off-screen-rendering-enabled`). Print preview is supported in all cases except with windowless rendering on all platforms and native parent on MacOS. It is disabled by default with Alloy style for legacy compatibility. Where supported it can be enabled or disabled globally using `--[enable|disable]-print-preview` or configured on a per-RequestContext basis using the `printing.print_preview_disabled` preference. It also behaves as expected when triggered via the PDF viewer print button. Chrome runtime + Alloy style behavior differs from Alloy runtime in the following significant ways: - Supports Chrome error pages by default. - DevTools popups are Chrome style only (cannot be windowless). - The Alloy extension API will not supported. Chrome runtime + Alloy style passes all expected Alloy ceftests except the following: - `DisplayTest.AutoResize` (Alloy extension API not supported) - `DownloadTest.*` (Download API not yet supported) - `ExtensionTest.*` (Alloy extension API not supported) This change also adds Chrome runtime support for CefContextMenuHandler::RunContextMenu (see #3293). This change also explicitly blocks (and doesn't retry) FrameAttached requests from PDF viewer and print preview excluded frames (see #3664). Known issues specific to Chrome runtime + Alloy style: - DevTools popup with windowless rendering doesn't load successfully. Use windowed rendering or remote debugging as a workaround. - Chrome style Window with Alloy style BrowserView (`--use-alloy-style --use-chrome-style-window`) does not show Chrome theme changes. To test: - Run `ceftests --enable-chrome-runtime --use-alloy-style [--use-chrome-style-window] [--use-views|--use-native] --gtest_filter=...` - Run `cefclient --enable-chrome-runtime --use-alloy-style [--use-chrome-style-window] [--use-views|--use-native|--off-screen-rendering-enabled]` - Run `cefsimple --enable-chrome-runtime --use-alloy-style [--use-views]`
131 lines
5.4 KiB
C
131 lines
5.4 KiB
C
// Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions are
|
|
// met:
|
|
//
|
|
// * Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// * Redistributions in binary form must reproduce the above
|
|
// copyright notice, this list of conditions and the following disclaimer
|
|
// in the documentation and/or other materials provided with the
|
|
// distribution.
|
|
// * Neither the name of Google Inc. nor the name Chromium Embedded
|
|
// Framework nor the names of its contributors may be used to endorse
|
|
// or promote products derived from this software without specific prior
|
|
// written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
//
|
|
// ---------------------------------------------------------------------------
|
|
//
|
|
// This file was generated by the CEF translator tool and should not edited
|
|
// by hand. See the translator.README.txt file in the tools directory for
|
|
// more information.
|
|
//
|
|
// $hash=1c2fbbffaf51e90a2d55bfa7eb3fa3a4e315f4ac$
|
|
//
|
|
|
|
#ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BROWSER_VIEW_CAPI_H_
|
|
#define CEF_INCLUDE_CAPI_VIEWS_CEF_BROWSER_VIEW_CAPI_H_
|
|
#pragma once
|
|
|
|
#include "include/capi/cef_browser_capi.h"
|
|
#include "include/capi/views/cef_browser_view_delegate_capi.h"
|
|
#include "include/capi/views/cef_view_capi.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
///
|
|
/// A View hosting a cef_browser_t instance. Methods must be called on the
|
|
/// browser process UI thread unless otherwise indicated.
|
|
///
|
|
typedef struct _cef_browser_view_t {
|
|
///
|
|
/// Base structure.
|
|
///
|
|
cef_view_t base;
|
|
|
|
///
|
|
/// Returns the cef_browser_t hosted by this BrowserView. Will return NULL if
|
|
/// the browser has not yet been created or has already been destroyed.
|
|
///
|
|
struct _cef_browser_t*(CEF_CALLBACK* get_browser)(
|
|
struct _cef_browser_view_t* self);
|
|
|
|
///
|
|
/// Returns the Chrome toolbar associated with this BrowserView. Only
|
|
/// supported when using the Chrome runtime. The cef_browser_view_delegate_t::
|
|
/// get_chrome_toolbar_type() function must return a value other than
|
|
/// CEF_CTT_NONE and the toolbar will not be available until after this
|
|
/// BrowserView is added to a cef_window_t and
|
|
/// cef_view_delegate_t::on_window_changed() has been called.
|
|
///
|
|
struct _cef_view_t*(CEF_CALLBACK* get_chrome_toolbar)(
|
|
struct _cef_browser_view_t* self);
|
|
|
|
///
|
|
/// Sets whether normal priority accelerators are first forwarded to the web
|
|
/// content (`keydown` event handler) or cef_keyboard_handler_t. Normal
|
|
/// priority accelerators can be registered via cef_window_t::SetAccelerator
|
|
/// (with |high_priority|=false (0)) or internally for standard accelerators
|
|
/// supported by the Chrome runtime. If |prefer_accelerators| is true (1) then
|
|
/// the matching accelerator will be triggered immediately (calling
|
|
/// cef_window_delegate_t::OnAccelerator or
|
|
/// cef_command_handler_t::OnChromeCommand respectively) and the event will
|
|
/// not be forwarded to the web content or cef_keyboard_handler_t first. If
|
|
/// |prefer_accelerators| is false (0) then the matching accelerator will only
|
|
/// be triggered if the event is not handled by web content (`keydown` event
|
|
/// handler that calls `event.preventDefault()`) or by cef_keyboard_handler_t.
|
|
/// The default value is false (0).
|
|
///
|
|
void(CEF_CALLBACK* set_prefer_accelerators)(struct _cef_browser_view_t* self,
|
|
int prefer_accelerators);
|
|
|
|
///
|
|
/// Returns the runtime style for this BrowserView (ALLOY or CHROME). See
|
|
/// cef_runtime_style_t documentation for details.
|
|
///
|
|
cef_runtime_style_t(CEF_CALLBACK* get_runtime_style)(
|
|
struct _cef_browser_view_t* self);
|
|
} cef_browser_view_t;
|
|
|
|
///
|
|
/// Create a new BrowserView. The underlying cef_browser_t will not be created
|
|
/// until this view is added to the views hierarchy. The optional |extra_info|
|
|
/// parameter provides an opportunity to specify extra information specific to
|
|
/// the created browser that will be passed to
|
|
/// cef_render_process_handler_t::on_browser_created() in the render process.
|
|
///
|
|
CEF_EXPORT cef_browser_view_t* cef_browser_view_create(
|
|
struct _cef_client_t* client,
|
|
const cef_string_t* url,
|
|
const struct _cef_browser_settings_t* settings,
|
|
struct _cef_dictionary_value_t* extra_info,
|
|
struct _cef_request_context_t* request_context,
|
|
struct _cef_browser_view_delegate_t* delegate);
|
|
|
|
///
|
|
/// Returns the BrowserView associated with |browser|.
|
|
///
|
|
CEF_EXPORT cef_browser_view_t* cef_browser_view_get_for_browser(
|
|
struct _cef_browser_t* browser);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // CEF_INCLUDE_CAPI_VIEWS_CEF_BROWSER_VIEW_CAPI_H_
|