Add |extra_info| parameter for browser creation (fixes issue #1088)

The optional |extra_info| parameter provides an opportunity to specify extra
information specific to the created browser that will be passed to
CefRenderProcessHandler::OnBrowserCreated() in the render process.
This commit is contained in:
cef-ms
2019-03-19 09:42:54 +00:00
committed by Marshall Greenblatt
parent ad4ce5f441
commit 473c29a70d
64 changed files with 560 additions and 116 deletions

View File

@@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=1357aad2c8a79a3917ca38d93f3ed84712c2d9cd$
// $hash=0516b8b72819ab4b5a9d6f4c68d774ebde06c94c$
//
#include "libcef_dll/ctocpp/browser_host_ctocpp.h"
@@ -19,6 +19,7 @@
#include "libcef_dll/cpptoc/pdf_print_callback_cpptoc.h"
#include "libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h"
#include "libcef_dll/ctocpp/browser_ctocpp.h"
#include "libcef_dll/ctocpp/dictionary_value_ctocpp.h"
#include "libcef_dll/ctocpp/drag_data_ctocpp.h"
#include "libcef_dll/ctocpp/extension_ctocpp.h"
#include "libcef_dll/ctocpp/navigation_entry_ctocpp.h"
@@ -34,16 +35,18 @@ bool CefBrowserHost::CreateBrowser(
CefRefPtr<CefClient> client,
const CefString& url,
const CefBrowserSettings& settings,
CefRefPtr<CefDictionaryValue> extra_info,
CefRefPtr<CefRequestContext> request_context) {
shutdown_checker::AssertNotShutdown();
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Unverified params: client, url, request_context
// Unverified params: client, url, extra_info, request_context
// Execute
int _retval = cef_browser_host_create_browser(
&windowInfo, CefClientCppToC::Wrap(client), url.GetStruct(), &settings,
CefDictionaryValueCToCpp::Unwrap(extra_info),
CefRequestContextCToCpp::Unwrap(request_context));
// Return type: bool
@@ -56,16 +59,18 @@ CefRefPtr<CefBrowser> CefBrowserHost::CreateBrowserSync(
CefRefPtr<CefClient> client,
const CefString& url,
const CefBrowserSettings& settings,
CefRefPtr<CefDictionaryValue> extra_info,
CefRefPtr<CefRequestContext> request_context) {
shutdown_checker::AssertNotShutdown();
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Unverified params: client, url, request_context
// Unverified params: client, url, extra_info, request_context
// Execute
cef_browser_t* _retval = cef_browser_host_create_browser_sync(
&windowInfo, CefClientCppToC::Wrap(client), url.GetStruct(), &settings,
CefDictionaryValueCToCpp::Unwrap(extra_info),
CefRequestContextCToCpp::Unwrap(request_context));
// Return type: refptr_same
@@ -964,8 +969,8 @@ void CefBrowserHostCToCpp::DragSourceSystemDragEnded() {
}
NO_SANITIZE("cfi-icall")
CefRefPtr<
CefNavigationEntry> CefBrowserHostCToCpp::GetVisibleNavigationEntry() {
CefRefPtr<CefNavigationEntry>
CefBrowserHostCToCpp::GetVisibleNavigationEntry() {
shutdown_checker::AssertNotShutdown();
cef_browser_host_t* _struct = GetStruct();

View File

@@ -9,11 +9,12 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=c203333e32d83a2cfdbbf2aa777f377e1b14ed62$
// $hash=c90fb460b250ed3b0a8a7f9c1142e51918cedcd5$
//
#include "libcef_dll/ctocpp/life_span_handler_ctocpp.h"
#include "libcef_dll/cpptoc/browser_cpptoc.h"
#include "libcef_dll/cpptoc/dictionary_value_cpptoc.h"
#include "libcef_dll/cpptoc/frame_cpptoc.h"
#include "libcef_dll/ctocpp/client_ctocpp.h"
#include "libcef_dll/shutdown_checker.h"
@@ -32,6 +33,7 @@ bool CefLifeSpanHandlerCToCpp::OnBeforePopup(
CefWindowInfo& windowInfo,
CefRefPtr<CefClient>& client,
CefBrowserSettings& settings,
CefRefPtr<CefDictionaryValue>& extra_info,
bool* no_javascript_access) {
shutdown_checker::AssertNotShutdown();
@@ -60,6 +62,11 @@ bool CefLifeSpanHandlerCToCpp::OnBeforePopup(
if (client.get())
clientStruct = CefClientCToCpp::Unwrap(client);
cef_client_t* clientOrig = clientStruct;
// Translate param: extra_info; type: refptr_diff_byref
cef_dictionary_value_t* extra_infoStruct = NULL;
if (extra_info.get())
extra_infoStruct = CefDictionaryValueCppToC::Wrap(extra_info);
cef_dictionary_value_t* extra_infoOrig = extra_infoStruct;
// Translate param: no_javascript_access; type: bool_byaddr
int no_javascript_accessInt =
no_javascript_access ? *no_javascript_access : 0;
@@ -69,7 +76,7 @@ bool CefLifeSpanHandlerCToCpp::OnBeforePopup(
_struct, CefBrowserCppToC::Wrap(browser), CefFrameCppToC::Wrap(frame),
target_url.GetStruct(), target_frame_name.GetStruct(), target_disposition,
user_gesture, &popupFeatures, &windowInfo, &clientStruct, &settings,
&no_javascript_accessInt);
&extra_infoStruct, &no_javascript_accessInt);
// Restore param:client; type: refptr_same_byref
if (clientStruct) {
@@ -79,6 +86,14 @@ bool CefLifeSpanHandlerCToCpp::OnBeforePopup(
} else {
client = NULL;
}
// Restore param:extra_info; type: refptr_diff_byref
if (extra_infoStruct) {
if (extra_infoStruct != extra_infoOrig) {
extra_info = CefDictionaryValueCppToC::Unwrap(extra_infoStruct);
}
} else {
extra_info = NULL;
}
// Restore param:no_javascript_access; type: bool_byaddr
if (no_javascript_access)
*no_javascript_access = no_javascript_accessInt ? true : false;

View File

@@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=6684419c997eeb24a3b7e646e51f8164aa98694f$
// $hash=d9281e31309c3eb8a361dbd33ce16fa6664c27ee$
//
#ifndef CEF_LIBCEF_DLL_CTOCPP_LIFE_SPAN_HANDLER_CTOCPP_H_
@@ -47,6 +47,7 @@ class CefLifeSpanHandlerCToCpp
CefWindowInfo& windowInfo,
CefRefPtr<CefClient>& client,
CefBrowserSettings& settings,
CefRefPtr<CefDictionaryValue>& extra_info,
bool* no_javascript_access) override;
void OnAfterCreated(CefRefPtr<CefBrowser> browser) override;
bool DoClose(CefRefPtr<CefBrowser> browser) override;

View File

@@ -9,11 +9,12 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=fd9981ab9019e2386f8546d1aad794f2e5862eef$
// $hash=366d6e567451af19ce5a4cc5f6f06791f504af26$
//
#include "libcef_dll/ctocpp/render_process_handler_ctocpp.h"
#include "libcef_dll/cpptoc/browser_cpptoc.h"
#include "libcef_dll/cpptoc/dictionary_value_cpptoc.h"
#include "libcef_dll/cpptoc/domnode_cpptoc.h"
#include "libcef_dll/cpptoc/frame_cpptoc.h"
#include "libcef_dll/cpptoc/list_value_cpptoc.h"
@@ -58,7 +59,8 @@ void CefRenderProcessHandlerCToCpp::OnWebKitInitialized() {
NO_SANITIZE("cfi-icall")
void CefRenderProcessHandlerCToCpp::OnBrowserCreated(
CefRefPtr<CefBrowser> browser) {
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDictionaryValue> extra_info) {
cef_render_process_handler_t* _struct = GetStruct();
if (CEF_MEMBER_MISSING(_struct, on_browser_created))
return;
@@ -69,9 +71,14 @@ void CefRenderProcessHandlerCToCpp::OnBrowserCreated(
DCHECK(browser.get());
if (!browser.get())
return;
// Verify param: extra_info; type: refptr_diff
DCHECK(extra_info.get());
if (!extra_info.get())
return;
// Execute
_struct->on_browser_created(_struct, CefBrowserCppToC::Wrap(browser));
_struct->on_browser_created(_struct, CefBrowserCppToC::Wrap(browser),
CefDictionaryValueCppToC::Wrap(extra_info));
}
NO_SANITIZE("cfi-icall")

View File

@@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=dc669eaed42b1df11eb0df08dc22af0e825a991f$
// $hash=c8931d822a351fe827ffd29ba89b888e3e44f6ea$
//
#ifndef CEF_LIBCEF_DLL_CTOCPP_RENDER_PROCESS_HANDLER_CTOCPP_H_
@@ -37,7 +37,8 @@ class CefRenderProcessHandlerCToCpp
// CefRenderProcessHandler methods.
void OnRenderThreadCreated(CefRefPtr<CefListValue> extra_info) override;
void OnWebKitInitialized() override;
void OnBrowserCreated(CefRefPtr<CefBrowser> browser) override;
void OnBrowserCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDictionaryValue> extra_info) override;
void OnBrowserDestroyed(CefRefPtr<CefBrowser> browser) override;
CefRefPtr<CefLoadHandler> GetLoadHandler() override;
void OnContextCreated(CefRefPtr<CefBrowser> browser,

View File

@@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=034f21943c2bddc00cb1b7da090bef19b6ca6065$
// $hash=38a50fce9d7126ab95a471e1de31809792ce50da$
//
#include "libcef_dll/ctocpp/views/browser_view_ctocpp.h"
@@ -17,6 +17,7 @@
#include "libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.h"
#include "libcef_dll/cpptoc/views/view_delegate_cpptoc.h"
#include "libcef_dll/ctocpp/browser_ctocpp.h"
#include "libcef_dll/ctocpp/dictionary_value_ctocpp.h"
#include "libcef_dll/ctocpp/request_context_ctocpp.h"
#include "libcef_dll/ctocpp/views/button_ctocpp.h"
#include "libcef_dll/ctocpp/views/panel_ctocpp.h"
@@ -33,17 +34,19 @@ CefRefPtr<CefBrowserView> CefBrowserView::CreateBrowserView(
CefRefPtr<CefClient> client,
const CefString& url,
const CefBrowserSettings& settings,
CefRefPtr<CefDictionaryValue> extra_info,
CefRefPtr<CefRequestContext> request_context,
CefRefPtr<CefBrowserViewDelegate> delegate) {
shutdown_checker::AssertNotShutdown();
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Unverified params: client, url, request_context, delegate
// Unverified params: client, url, extra_info, request_context, delegate
// Execute
cef_browser_view_t* _retval = cef_browser_view_create(
CefClientCppToC::Wrap(client), url.GetStruct(), &settings,
CefDictionaryValueCToCpp::Unwrap(extra_info),
CefRequestContextCToCpp::Unwrap(request_context),
CefBrowserViewDelegateCppToC::Wrap(delegate));