mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Add CefApp::OnRegisterCustomSchemes callback to address url_util thread safety issues (issue #630).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1115 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
// for more information.
|
||||
//
|
||||
|
||||
#include "libcef_dll/cpptoc/scheme_registrar_cpptoc.h"
|
||||
#include "libcef_dll/ctocpp/app_ctocpp.h"
|
||||
#include "libcef_dll/ctocpp/proxy_handler_ctocpp.h"
|
||||
#include "libcef_dll/ctocpp/resource_bundle_handler_ctocpp.h"
|
||||
@@ -17,6 +18,23 @@
|
||||
|
||||
// VIRTUAL METHODS - Body may be edited by hand.
|
||||
|
||||
void CefAppCToCpp::OnRegisterCustomSchemes(
|
||||
CefRefPtr<CefSchemeRegistrar> registrar) {
|
||||
if (CEF_MEMBER_MISSING(struct_, on_register_custom_schemes))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: registrar; type: refptr_diff
|
||||
DCHECK(registrar.get());
|
||||
if (!registrar.get())
|
||||
return;
|
||||
|
||||
// Execute
|
||||
struct_->on_register_custom_schemes(struct_,
|
||||
CefSchemeRegistrarCppToC::Wrap(registrar));
|
||||
}
|
||||
|
||||
CefRefPtr<CefResourceBundleHandler> CefAppCToCpp::GetResourceBundleHandler() {
|
||||
if (CEF_MEMBER_MISSING(struct_, get_resource_bundle_handler))
|
||||
return NULL;
|
||||
|
@@ -32,6 +32,8 @@ class CefAppCToCpp
|
||||
virtual ~CefAppCToCpp() {}
|
||||
|
||||
// CefApp methods
|
||||
virtual void OnRegisterCustomSchemes(
|
||||
CefRefPtr<CefSchemeRegistrar> registrar) OVERRIDE;
|
||||
virtual CefRefPtr<CefResourceBundleHandler> GetResourceBundleHandler(
|
||||
) OVERRIDE;
|
||||
virtual CefRefPtr<CefProxyHandler> GetProxyHandler() OVERRIDE;
|
||||
|
46
cef1/libcef_dll/ctocpp/scheme_registrar_ctocpp.cc
Normal file
46
cef1/libcef_dll/ctocpp/scheme_registrar_ctocpp.cc
Normal file
@@ -0,0 +1,46 @@
|
||||
// Copyright (c) 2013 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.
|
||||
//
|
||||
// ---------------------------------------------------------------------------
|
||||
//
|
||||
// This file was generated by the CEF translator tool. If making changes by
|
||||
// hand only do so within the body of existing method and function
|
||||
// implementations. See the translator.README.txt file in the tools directory
|
||||
// for more information.
|
||||
//
|
||||
|
||||
#include "libcef_dll/ctocpp/scheme_registrar_ctocpp.h"
|
||||
|
||||
|
||||
// VIRTUAL METHODS - Body may be edited by hand.
|
||||
|
||||
bool CefSchemeRegistrarCToCpp::AddCustomScheme(const CefString& scheme_name,
|
||||
bool is_standard, bool is_local, bool is_display_isolated) {
|
||||
if (CEF_MEMBER_MISSING(struct_, add_custom_scheme))
|
||||
return false;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: scheme_name; type: string_byref_const
|
||||
DCHECK(!scheme_name.empty());
|
||||
if (scheme_name.empty())
|
||||
return false;
|
||||
|
||||
// Execute
|
||||
int _retval = struct_->add_custom_scheme(struct_,
|
||||
scheme_name.GetStruct(),
|
||||
is_standard,
|
||||
is_local,
|
||||
is_display_isolated);
|
||||
|
||||
// Return type: bool
|
||||
return _retval?true:false;
|
||||
}
|
||||
|
||||
|
||||
#ifndef NDEBUG
|
||||
template<> long CefCToCpp<CefSchemeRegistrarCToCpp, CefSchemeRegistrar,
|
||||
cef_scheme_registrar_t>::DebugObjCt = 0;
|
||||
#endif
|
||||
|
43
cef1/libcef_dll/ctocpp/scheme_registrar_ctocpp.h
Normal file
43
cef1/libcef_dll/ctocpp/scheme_registrar_ctocpp.h
Normal file
@@ -0,0 +1,43 @@
|
||||
// Copyright (c) 2013 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.
|
||||
//
|
||||
// ---------------------------------------------------------------------------
|
||||
//
|
||||
// This file was generated by the CEF translator tool. If making changes by
|
||||
// hand only do so within the body of existing method and function
|
||||
// implementations. See the translator.README.txt file in the tools directory
|
||||
// for more information.
|
||||
//
|
||||
|
||||
#ifndef CEF_LIBCEF_DLL_CTOCPP_SCHEME_REGISTRAR_CTOCPP_H_
|
||||
#define CEF_LIBCEF_DLL_CTOCPP_SCHEME_REGISTRAR_CTOCPP_H_
|
||||
#pragma once
|
||||
|
||||
#ifndef USING_CEF_SHARED
|
||||
#pragma message("Warning: "__FILE__" may be accessed wrapper-side only")
|
||||
#else // USING_CEF_SHARED
|
||||
|
||||
#include "include/cef_scheme.h"
|
||||
#include "include/capi/cef_scheme_capi.h"
|
||||
#include "libcef_dll/ctocpp/ctocpp.h"
|
||||
|
||||
// Wrap a C structure with a C++ class.
|
||||
// This class may be instantiated and accessed wrapper-side only.
|
||||
class CefSchemeRegistrarCToCpp
|
||||
: public CefCToCpp<CefSchemeRegistrarCToCpp, CefSchemeRegistrar,
|
||||
cef_scheme_registrar_t> {
|
||||
public:
|
||||
explicit CefSchemeRegistrarCToCpp(cef_scheme_registrar_t* str)
|
||||
: CefCToCpp<CefSchemeRegistrarCToCpp, CefSchemeRegistrar,
|
||||
cef_scheme_registrar_t>(str) {}
|
||||
virtual ~CefSchemeRegistrarCToCpp() {}
|
||||
|
||||
// CefSchemeRegistrar methods
|
||||
virtual bool AddCustomScheme(const CefString& scheme_name, bool is_standard,
|
||||
bool is_local, bool is_display_isolated) OVERRIDE;
|
||||
};
|
||||
|
||||
#endif // USING_CEF_SHARED
|
||||
#endif // CEF_LIBCEF_DLL_CTOCPP_SCHEME_REGISTRAR_CTOCPP_H_
|
||||
|
Reference in New Issue
Block a user