diff --git a/cef_paths.gypi b/cef_paths.gypi
index fd396b44a..31a4b99f3 100644
--- a/cef_paths.gypi
+++ b/cef_paths.gypi
@@ -390,16 +390,26 @@
'libcef_dll/cpptoc/thread_cpptoc.h',
'libcef_dll/cpptoc/test/translator_test_cpptoc.cc',
'libcef_dll/cpptoc/test/translator_test_cpptoc.h',
- 'libcef_dll/ctocpp/test/translator_test_handler_ctocpp.cc',
- 'libcef_dll/ctocpp/test/translator_test_handler_ctocpp.h',
- 'libcef_dll/ctocpp/test/translator_test_handler_child_ctocpp.cc',
- 'libcef_dll/ctocpp/test/translator_test_handler_child_ctocpp.h',
- 'libcef_dll/cpptoc/test/translator_test_object_cpptoc.cc',
- 'libcef_dll/cpptoc/test/translator_test_object_cpptoc.h',
- 'libcef_dll/cpptoc/test/translator_test_object_child_cpptoc.cc',
- 'libcef_dll/cpptoc/test/translator_test_object_child_cpptoc.h',
- 'libcef_dll/cpptoc/test/translator_test_object_child_child_cpptoc.cc',
- 'libcef_dll/cpptoc/test/translator_test_object_child_child_cpptoc.h',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.h',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.h',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.h',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.h',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_child_cpptoc.h',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.h',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.h',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.h',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.h',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_library_child_child_cpptoc.h',
'libcef_dll/cpptoc/urlrequest_cpptoc.cc',
'libcef_dll/cpptoc/urlrequest_cpptoc.h',
'libcef_dll/ctocpp/urlrequest_client_ctocpp.cc',
@@ -652,16 +662,26 @@
'libcef_dll/ctocpp/thread_ctocpp.h',
'libcef_dll/ctocpp/test/translator_test_ctocpp.cc',
'libcef_dll/ctocpp/test/translator_test_ctocpp.h',
- 'libcef_dll/cpptoc/test/translator_test_handler_cpptoc.cc',
- 'libcef_dll/cpptoc/test/translator_test_handler_cpptoc.h',
- 'libcef_dll/cpptoc/test/translator_test_handler_child_cpptoc.cc',
- 'libcef_dll/cpptoc/test/translator_test_handler_child_cpptoc.h',
- 'libcef_dll/ctocpp/test/translator_test_object_ctocpp.cc',
- 'libcef_dll/ctocpp/test/translator_test_object_ctocpp.h',
- 'libcef_dll/ctocpp/test/translator_test_object_child_ctocpp.cc',
- 'libcef_dll/ctocpp/test/translator_test_object_child_ctocpp.h',
- 'libcef_dll/ctocpp/test/translator_test_object_child_child_ctocpp.cc',
- 'libcef_dll/ctocpp/test/translator_test_object_child_child_ctocpp.h',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_client_cpptoc.h',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.h',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_library_ctocpp.h',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.h',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.h',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_client_cpptoc.h',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.cc',
+ 'libcef_dll/cpptoc/test/translator_test_scoped_client_child_cpptoc.h',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_library_ctocpp.h',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_library_child_ctocpp.h',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.cc',
+ 'libcef_dll/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.h',
'libcef_dll/ctocpp/urlrequest_ctocpp.cc',
'libcef_dll/ctocpp/urlrequest_ctocpp.h',
'libcef_dll/cpptoc/urlrequest_client_cpptoc.cc',
diff --git a/cef_paths2.gypi b/cef_paths2.gypi
index bb7422a3e..432d882c3 100644
--- a/cef_paths2.gypi
+++ b/cef_paths2.gypi
@@ -89,11 +89,16 @@
],
'libcef_sources_common': [
'libcef_dll/cpptoc/cpptoc.h',
+ 'libcef_dll/cpptoc/cpptoc_scoped.h',
'libcef_dll/ctocpp/base_ctocpp.cc',
'libcef_dll/ctocpp/base_ctocpp.h',
+ 'libcef_dll/ctocpp/base_scoped_ctocpp.cc',
+ 'libcef_dll/ctocpp/base_scoped_ctocpp.h',
'libcef_dll/ctocpp/ctocpp.h',
+ 'libcef_dll/ctocpp/ctocpp_scoped.h',
'libcef_dll/libcef_dll.cc',
'libcef_dll/libcef_dll2.cc',
+ 'libcef_dll/ptr_util.h',
'libcef_dll/resource.h',
'libcef_dll/transfer_util.cc',
'libcef_dll/transfer_util.h',
@@ -116,8 +121,13 @@
'libcef_dll_wrapper_sources_common': [
'libcef_dll/cpptoc/base_cpptoc.cc',
'libcef_dll/cpptoc/base_cpptoc.h',
+ 'libcef_dll/cpptoc/base_scoped_cpptoc.cc',
+ 'libcef_dll/cpptoc/base_scoped_cpptoc.h',
'libcef_dll/cpptoc/cpptoc.h',
+ 'libcef_dll/cpptoc/cpptoc_scoped.h',
'libcef_dll/ctocpp/ctocpp.h',
+ 'libcef_dll/ctocpp/ctocpp_scoped.h',
+ 'libcef_dll/ptr_util.h',
'libcef_dll/transfer_util.cc',
'libcef_dll/transfer_util.h',
'libcef_dll/wrapper_types.h',
diff --git a/include/base/cef_build.h b/include/base/cef_build.h
index 7cca8222e..81ee851f5 100644
--- a/include/base/cef_build.h
+++ b/include/base/cef_build.h
@@ -189,4 +189,13 @@
#endif
#endif // OVERRIDE
+// Check for C++11 template alias support which was added in VS2013 and GCC4.7.
+// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
+#if __cplusplus > 199711L || \
+ (defined(_MSC_VER) && _MSC_VER >= 1800) || \
+ (defined(__GNUC__) && \
+ (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ >= 40700))
+#define HAS_CPP11_TEMPLATE_ALIAS_SUPPORT
+#endif
+
#endif // CEF_INCLUDE_BASE_CEF_BUILD_H_
diff --git a/include/capi/cef_base_capi.h b/include/capi/cef_base_capi.h
index ba3a39cb1..b12ff364e 100644
--- a/include/capi/cef_base_capi.h
+++ b/include/capi/cef_base_capi.h
@@ -45,8 +45,7 @@ extern "C" {
#endif
///
-// Structure defining the reference count implementation functions. All
-// framework structures must include the cef_base_t structure first.
+// All ref-counted framework structures must include this structure first.
///
typedef struct _cef_base_t {
///
@@ -74,6 +73,23 @@ typedef struct _cef_base_t {
} cef_base_t;
+///
+// All scoped framework structures must include this structure first.
+///
+typedef struct _cef_base_scoped_t {
+ ///
+ // Size of the data structure.
+ ///
+ size_t size;
+
+ ///
+ // Called to delete this object. May be NULL if the object is not owned.
+ ///
+ void (CEF_CALLBACK *del)(struct _cef_base_scoped_t* self);
+
+} cef_base_scoped_t;
+
+
// Check that the structure |s|, which is defined with a cef_base_t member named
// |base|, is large enough to contain the specified member |f|.
#define CEF_MEMBER_EXISTS(s, f) \
diff --git a/include/capi/cef_scheme_capi.h b/include/capi/cef_scheme_capi.h
index f1ce06c5d..3c68e23b5 100644
--- a/include/capi/cef_scheme_capi.h
+++ b/include/capi/cef_scheme_capi.h
@@ -58,7 +58,7 @@ typedef struct _cef_scheme_registrar_t {
///
// Base structure.
///
- cef_base_t base;
+ cef_base_scoped_t base;
///
// Register a custom scheme. This function should not be called for the built-
diff --git a/include/capi/test/cef_translator_test_capi.h b/include/capi/test/cef_translator_test_capi.h
index 23cff842c..1716fb390 100644
--- a/include/capi/test/cef_translator_test_capi.h
+++ b/include/capi/test/cef_translator_test_capi.h
@@ -49,10 +49,14 @@
extern "C" {
#endif
-struct _cef_translator_test_handler_child_t;
-struct _cef_translator_test_handler_t;
-struct _cef_translator_test_object_child_t;
-struct _cef_translator_test_object_t;
+struct _cef_translator_test_ref_ptr_client_child_t;
+struct _cef_translator_test_ref_ptr_client_t;
+struct _cef_translator_test_ref_ptr_library_child_t;
+struct _cef_translator_test_ref_ptr_library_t;
+struct _cef_translator_test_scoped_client_child_t;
+struct _cef_translator_test_scoped_client_t;
+struct _cef_translator_test_scoped_library_child_t;
+struct _cef_translator_test_scoped_library_t;
///
// Structure for testing all of the possible data transfer types.
@@ -242,124 +246,271 @@ typedef struct _cef_translator_test_t {
struct _cef_translator_test_t* self);
- // LIBRARY-SIDE OBJECT VALUES
+ // LIBRARY-SIDE REFPTR VALUES
///
// Return an new library-side object.
///
- struct _cef_translator_test_object_t* (CEF_CALLBACK *get_object)(
- struct _cef_translator_test_t* self, int val);
+ struct _cef_translator_test_ref_ptr_library_t* (
+ CEF_CALLBACK *get_ref_ptr_library)(struct _cef_translator_test_t* self,
+ int val);
///
// Set an object. Returns the value from
- // cef_translator_test_object_t::get_value(). This tests input and execution
- // of a library-side object type.
+ // cef_translator_test_ref_ptr_library_t::get_value(). This tests input and
+ // execution of a library-side object type.
///
- int (CEF_CALLBACK *set_object)(struct _cef_translator_test_t* self,
- struct _cef_translator_test_object_t* val);
+ int (CEF_CALLBACK *set_ref_ptr_library)(struct _cef_translator_test_t* self,
+ struct _cef_translator_test_ref_ptr_library_t* val);
///
// Set an object. Returns the object passed in. This tests input and output of
// a library-side object type.
///
- struct _cef_translator_test_object_t* (CEF_CALLBACK *set_object_and_return)(
+ struct _cef_translator_test_ref_ptr_library_t* (
+ CEF_CALLBACK *set_ref_ptr_library_and_return)(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_object_t* val);
+ struct _cef_translator_test_ref_ptr_library_t* val);
///
// Set a child object. Returns the value from
- // cef_translator_test_object_t::get_value(). This tests input of a library-
- // side child object type and execution as the parent type.
+ // cef_translator_test_ref_ptr_library_t::get_value(). This tests input of a
+ // library- side child object type and execution as the parent type.
///
- int (CEF_CALLBACK *set_child_object)(struct _cef_translator_test_t* self,
- struct _cef_translator_test_object_child_t* val);
+ int (CEF_CALLBACK *set_child_ref_ptr_library)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_ref_ptr_library_child_t* val);
///
// Set a child object. Returns the object as the parent type. This tests input
// of a library-side child object type and return as the parent type.
///
- struct _cef_translator_test_object_t* (
- CEF_CALLBACK *set_child_object_and_return_parent)(
+ struct _cef_translator_test_ref_ptr_library_t* (
+ CEF_CALLBACK *set_child_ref_ptr_library_and_return_parent)(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_object_child_t* val);
+ struct _cef_translator_test_ref_ptr_library_child_t* val);
///
// Set an object list vlaue.
///
- int (CEF_CALLBACK *set_object_list)(struct _cef_translator_test_t* self,
- size_t valCount, struct _cef_translator_test_object_t* const* val,
- int val1, int val2);
+ int (CEF_CALLBACK *set_ref_ptr_library_list)(
+ struct _cef_translator_test_t* self, size_t valCount,
+ struct _cef_translator_test_ref_ptr_library_t* const* val, int val1,
+ int val2);
///
// Return an object list value by out-param.
///
- int (CEF_CALLBACK *get_object_list_by_ref)(
+ int (CEF_CALLBACK *get_ref_ptr_library_list_by_ref)(
struct _cef_translator_test_t* self, size_t* valCount,
- struct _cef_translator_test_object_t** val, int val1, int val2);
+ struct _cef_translator_test_ref_ptr_library_t** val, int val1,
+ int val2);
///
// Return the number of object that will be output above.
///
- size_t (CEF_CALLBACK *get_object_list_size)(
+ size_t (CEF_CALLBACK *get_ref_ptr_library_list_size)(
struct _cef_translator_test_t* self);
- // CLIENT-SIDE OBJECT VALUES
+ // CLIENT-SIDE REFPTR VALUES
///
// Set an object. Returns the value from
- // cef_translator_test_handler_t::get_value(). This tests input and execution
- // of a client-side object type.
+ // cef_translator_test_ref_ptr_client_t::get_value(). This tests input and
+ // execution of a client-side object type.
///
- int (CEF_CALLBACK *set_handler)(struct _cef_translator_test_t* self,
- struct _cef_translator_test_handler_t* val);
+ int (CEF_CALLBACK *set_ref_ptr_client)(struct _cef_translator_test_t* self,
+ struct _cef_translator_test_ref_ptr_client_t* val);
///
// Set an object. Returns the handler passed in. This tests input and output
// of a client-side object type.
///
- struct _cef_translator_test_handler_t* (CEF_CALLBACK *set_handler_and_return)(
+ struct _cef_translator_test_ref_ptr_client_t* (
+ CEF_CALLBACK *set_ref_ptr_client_and_return)(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_handler_t* val);
+ struct _cef_translator_test_ref_ptr_client_t* val);
///
// Set a child object. Returns the value from
- // cef_translator_test_handler_t::get_value(). This tests input of a client-
- // side child object type and execution as the parent type.
+ // cef_translator_test_ref_ptr_client_t::get_value(). This tests input of a
+ // client- side child object type and execution as the parent type.
///
- int (CEF_CALLBACK *set_child_handler)(struct _cef_translator_test_t* self,
- struct _cef_translator_test_handler_child_t* val);
+ int (CEF_CALLBACK *set_child_ref_ptr_client)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_ref_ptr_client_child_t* val);
///
// Set a child object. Returns the object as the parent type. This tests input
// of a client-side child object type and return as the parent type.
///
- struct _cef_translator_test_handler_t* (
- CEF_CALLBACK *set_child_handler_and_return_parent)(
+ struct _cef_translator_test_ref_ptr_client_t* (
+ CEF_CALLBACK *set_child_ref_ptr_client_and_return_parent)(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_handler_child_t* val);
+ struct _cef_translator_test_ref_ptr_client_child_t* val);
///
// Set an object list vlaue.
///
- int (CEF_CALLBACK *set_handler_list)(struct _cef_translator_test_t* self,
- size_t valCount, struct _cef_translator_test_handler_t* const* val,
- int val1, int val2);
+ int (CEF_CALLBACK *set_ref_ptr_client_list)(
+ struct _cef_translator_test_t* self, size_t valCount,
+ struct _cef_translator_test_ref_ptr_client_t* const* val, int val1,
+ int val2);
///
// Return an object list value by out-param.
///
- int (CEF_CALLBACK *get_handler_list_by_ref)(
+ int (CEF_CALLBACK *get_ref_ptr_client_list_by_ref)(
struct _cef_translator_test_t* self, size_t* valCount,
- struct _cef_translator_test_handler_t** val,
- struct _cef_translator_test_handler_t* val1,
- struct _cef_translator_test_handler_t* val2);
+ struct _cef_translator_test_ref_ptr_client_t** val,
+ struct _cef_translator_test_ref_ptr_client_t* val1,
+ struct _cef_translator_test_ref_ptr_client_t* val2);
///
// Return the number of object that will be output above.
///
- size_t (CEF_CALLBACK *get_handler_list_size)(
+ size_t (CEF_CALLBACK *get_ref_ptr_client_list_size)(
struct _cef_translator_test_t* self);
+
+
+ // LIBRARY-SIDE OWNPTR VALUES
+
+ ///
+ // Return an new library-side object.
+ ///
+ struct _cef_translator_test_scoped_library_t* (
+ CEF_CALLBACK *get_own_ptr_library)(struct _cef_translator_test_t* self,
+ int val);
+
+ ///
+ // Set an object. Returns the value from
+ // cef_translator_test_scoped_library_t::get_value(). This tests input and
+ // execution of a library-side object type.
+ ///
+ int (CEF_CALLBACK *set_own_ptr_library)(struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_t* val);
+
+ ///
+ // Set an object. Returns the object passed in. This tests input and output of
+ // a library-side object type.
+ ///
+ struct _cef_translator_test_scoped_library_t* (
+ CEF_CALLBACK *set_own_ptr_library_and_return)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_t* val);
+
+ ///
+ // Set a child object. Returns the value from
+ // cef_translator_test_scoped_library_t::get_value(). This tests input of a
+ // library- side child object type and execution as the parent type.
+ ///
+ int (CEF_CALLBACK *set_child_own_ptr_library)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_child_t* val);
+
+ ///
+ // Set a child object. Returns the object as the parent type. This tests input
+ // of a library-side child object type and return as the parent type.
+ ///
+ struct _cef_translator_test_scoped_library_t* (
+ CEF_CALLBACK *set_child_own_ptr_library_and_return_parent)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_child_t* val);
+
+
+ // CLIENT-SIDE OWNPTR VALUES
+
+ ///
+ // Set an object. Returns the value from
+ // cef_translator_test_scoped_client_t::get_value(). This tests input and
+ // execution of a client-side object type.
+ ///
+ int (CEF_CALLBACK *set_own_ptr_client)(struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_t* val);
+
+ ///
+ // Set an object. Returns the handler passed in. This tests input and output
+ // of a client-side object type.
+ ///
+ struct _cef_translator_test_scoped_client_t* (
+ CEF_CALLBACK *set_own_ptr_client_and_return)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_t* val);
+
+ ///
+ // Set a child object. Returns the value from
+ // cef_translator_test_scoped_client_t::get_value(). This tests input of a
+ // client- side child object type and execution as the parent type.
+ ///
+ int (CEF_CALLBACK *set_child_own_ptr_client)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_child_t* val);
+
+ ///
+ // Set a child object. Returns the object as the parent type. This tests input
+ // of a client-side child object type and return as the parent type.
+ ///
+ struct _cef_translator_test_scoped_client_t* (
+ CEF_CALLBACK *set_child_own_ptr_client_and_return_parent)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_child_t* val);
+
+
+ // LIBRARY-SIDE RAWPTR VALUES
+
+ ///
+ // Set an object. Returns the value from
+ // cef_translator_test_scoped_library_t::get_value(). This tests input and
+ // execution of a library-side object type.
+ ///
+ int (CEF_CALLBACK *set_raw_ptr_library)(struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_t* val);
+
+ ///
+ // Set a child object. Returns the value from
+ // cef_translator_test_scoped_library_t::get_value(). This tests input of a
+ // library- side child object type and execution as the parent type.
+ ///
+ int (CEF_CALLBACK *set_child_raw_ptr_library)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_child_t* val);
+
+ ///
+ // Set an object list vlaue.
+ ///
+ int (CEF_CALLBACK *set_raw_ptr_library_list)(
+ struct _cef_translator_test_t* self, size_t valCount,
+ struct _cef_translator_test_scoped_library_t* const* val, int val1,
+ int val2);
+
+
+ // CLIENT-SIDE RAWPTR VALUES
+
+ ///
+ // Set an object. Returns the value from
+ // cef_translator_test_scoped_client_t::get_value(). This tests input and
+ // execution of a client-side object type.
+ ///
+ int (CEF_CALLBACK *set_raw_ptr_client)(struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_t* val);
+
+ ///
+ // Set a child object. Returns the value from
+ // cef_translator_test_scoped_client_t::get_value(). This tests input of a
+ // client- side child object type and execution as the parent type.
+ ///
+ int (CEF_CALLBACK *set_child_raw_ptr_client)(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_child_t* val);
+
+ ///
+ // Set an object list vlaue.
+ ///
+ int (CEF_CALLBACK *set_raw_ptr_client_list)(
+ struct _cef_translator_test_t* self, size_t valCount,
+ struct _cef_translator_test_scoped_client_t* const* val, int val1,
+ int val2);
} cef_translator_test_t;
@@ -370,9 +521,9 @@ CEF_EXPORT cef_translator_test_t* cef_translator_test_create();
///
-// Library-side test object.
+// Library-side test object for RefPtr.
///
-typedef struct _cef_translator_test_object_t {
+typedef struct _cef_translator_test_ref_ptr_library_t {
///
// Base structure.
///
@@ -381,87 +532,89 @@ typedef struct _cef_translator_test_object_t {
///
// Return a value.
///
- int (CEF_CALLBACK *get_value)(struct _cef_translator_test_object_t* self);
+ int (CEF_CALLBACK *get_value)(
+ struct _cef_translator_test_ref_ptr_library_t* self);
///
// Set a value.
///
- void (CEF_CALLBACK *set_value)(struct _cef_translator_test_object_t* self,
- int value);
-} cef_translator_test_object_t;
+ void (CEF_CALLBACK *set_value)(
+ struct _cef_translator_test_ref_ptr_library_t* self, int value);
+} cef_translator_test_ref_ptr_library_t;
///
// Create the test object.
///
-CEF_EXPORT cef_translator_test_object_t* cef_translator_test_object_create(
+CEF_EXPORT cef_translator_test_ref_ptr_library_t* cef_translator_test_ref_ptr_library_create(
int value);
///
-// Library-side child test object.
+// Library-side child test object for RefPtr.
///
-typedef struct _cef_translator_test_object_child_t {
+typedef struct _cef_translator_test_ref_ptr_library_child_t {
///
// Base structure.
///
- cef_translator_test_object_t base;
+ cef_translator_test_ref_ptr_library_t base;
///
// Return a value.
///
int (CEF_CALLBACK *get_other_value)(
- struct _cef_translator_test_object_child_t* self);
+ struct _cef_translator_test_ref_ptr_library_child_t* self);
///
// Set a value.
///
void (CEF_CALLBACK *set_other_value)(
- struct _cef_translator_test_object_child_t* self, int value);
-} cef_translator_test_object_child_t;
+ struct _cef_translator_test_ref_ptr_library_child_t* self, int value);
+} cef_translator_test_ref_ptr_library_child_t;
///
// Create the test object.
///
-CEF_EXPORT cef_translator_test_object_child_t* cef_translator_test_object_child_create(
+CEF_EXPORT cef_translator_test_ref_ptr_library_child_t* cef_translator_test_ref_ptr_library_child_create(
int value, int other_value);
///
-// Another library-side child test object.
+// Another library-side child test object for RefPtr.
///
-typedef struct _cef_translator_test_object_child_child_t {
+typedef struct _cef_translator_test_ref_ptr_library_child_child_t {
///
// Base structure.
///
- cef_translator_test_object_child_t base;
+ cef_translator_test_ref_ptr_library_child_t base;
///
// Return a value.
///
int (CEF_CALLBACK *get_other_other_value)(
- struct _cef_translator_test_object_child_child_t* self);
+ struct _cef_translator_test_ref_ptr_library_child_child_t* self);
///
// Set a value.
///
void (CEF_CALLBACK *set_other_other_value)(
- struct _cef_translator_test_object_child_child_t* self, int value);
-} cef_translator_test_object_child_child_t;
+ struct _cef_translator_test_ref_ptr_library_child_child_t* self,
+ int value);
+} cef_translator_test_ref_ptr_library_child_child_t;
///
// Create the test object.
///
-CEF_EXPORT cef_translator_test_object_child_child_t* cef_translator_test_object_child_child_create(
+CEF_EXPORT cef_translator_test_ref_ptr_library_child_child_t* cef_translator_test_ref_ptr_library_child_child_create(
int value, int other_value, int other_other_value);
///
-// Client-side test object.
+// Client-side test object for RefPtr.
///
-typedef struct _cef_translator_test_handler_t {
+typedef struct _cef_translator_test_ref_ptr_client_t {
///
// Base structure.
///
@@ -470,25 +623,151 @@ typedef struct _cef_translator_test_handler_t {
///
// Return a value.
///
- int (CEF_CALLBACK *get_value)(struct _cef_translator_test_handler_t* self);
-} cef_translator_test_handler_t;
+ int (CEF_CALLBACK *get_value)(
+ struct _cef_translator_test_ref_ptr_client_t* self);
+} cef_translator_test_ref_ptr_client_t;
///
-// Client-side child test object.
+// Client-side child test object for RefPtr.
///
-typedef struct _cef_translator_test_handler_child_t {
+typedef struct _cef_translator_test_ref_ptr_client_child_t {
///
// Base structure.
///
- cef_translator_test_handler_t base;
+ cef_translator_test_ref_ptr_client_t base;
///
// Return a value.
///
int (CEF_CALLBACK *get_other_value)(
- struct _cef_translator_test_handler_child_t* self);
-} cef_translator_test_handler_child_t;
+ struct _cef_translator_test_ref_ptr_client_child_t* self);
+} cef_translator_test_ref_ptr_client_child_t;
+
+
+///
+// Library-side test object for OwnPtr/RawPtr.
+///
+typedef struct _cef_translator_test_scoped_library_t {
+ ///
+ // Base structure.
+ ///
+ cef_base_scoped_t base;
+
+ ///
+ // Return a value.
+ ///
+ int (CEF_CALLBACK *get_value)(
+ struct _cef_translator_test_scoped_library_t* self);
+
+ ///
+ // Set a value.
+ ///
+ void (CEF_CALLBACK *set_value)(
+ struct _cef_translator_test_scoped_library_t* self, int value);
+} cef_translator_test_scoped_library_t;
+
+
+///
+// Create the test object.
+///
+CEF_EXPORT cef_translator_test_scoped_library_t* cef_translator_test_scoped_library_create(
+ int value);
+
+
+///
+// Library-side child test object for OwnPtr/RawPtr.
+///
+typedef struct _cef_translator_test_scoped_library_child_t {
+ ///
+ // Base structure.
+ ///
+ cef_translator_test_scoped_library_t base;
+
+ ///
+ // Return a value.
+ ///
+ int (CEF_CALLBACK *get_other_value)(
+ struct _cef_translator_test_scoped_library_child_t* self);
+
+ ///
+ // Set a value.
+ ///
+ void (CEF_CALLBACK *set_other_value)(
+ struct _cef_translator_test_scoped_library_child_t* self, int value);
+} cef_translator_test_scoped_library_child_t;
+
+
+///
+// Create the test object.
+///
+CEF_EXPORT cef_translator_test_scoped_library_child_t* cef_translator_test_scoped_library_child_create(
+ int value, int other_value);
+
+
+///
+// Another library-side child test object for OwnPtr/RawPtr.
+///
+typedef struct _cef_translator_test_scoped_library_child_child_t {
+ ///
+ // Base structure.
+ ///
+ cef_translator_test_scoped_library_child_t base;
+
+ ///
+ // Return a value.
+ ///
+ int (CEF_CALLBACK *get_other_other_value)(
+ struct _cef_translator_test_scoped_library_child_child_t* self);
+
+ ///
+ // Set a value.
+ ///
+ void (CEF_CALLBACK *set_other_other_value)(
+ struct _cef_translator_test_scoped_library_child_child_t* self,
+ int value);
+} cef_translator_test_scoped_library_child_child_t;
+
+
+///
+// Create the test object.
+///
+CEF_EXPORT cef_translator_test_scoped_library_child_child_t* cef_translator_test_scoped_library_child_child_create(
+ int value, int other_value, int other_other_value);
+
+
+///
+// Client-side test object for OwnPtr/RawPtr.
+///
+typedef struct _cef_translator_test_scoped_client_t {
+ ///
+ // Base structure.
+ ///
+ cef_base_scoped_t base;
+
+ ///
+ // Return a value.
+ ///
+ int (CEF_CALLBACK *get_value)(
+ struct _cef_translator_test_scoped_client_t* self);
+} cef_translator_test_scoped_client_t;
+
+
+///
+// Client-side child test object for OwnPtr/RawPtr.
+///
+typedef struct _cef_translator_test_scoped_client_child_t {
+ ///
+ // Base structure.
+ ///
+ cef_translator_test_scoped_client_t base;
+
+ ///
+ // Return a value.
+ ///
+ int (CEF_CALLBACK *get_other_value)(
+ struct _cef_translator_test_scoped_client_child_t* self);
+} cef_translator_test_scoped_client_child_t;
#ifdef __cplusplus
diff --git a/include/cef_app.h b/include/cef_app.h
index 098b6d756..cc5cb91cc 100644
--- a/include/cef_app.h
+++ b/include/cef_app.h
@@ -170,7 +170,7 @@ class CefApp : public virtual CefBase {
///
/*--cef()--*/
virtual void OnRegisterCustomSchemes(
- CefRefPtr registrar) {
+ CefRawPtr registrar) {
}
///
diff --git a/include/cef_base.h b/include/cef_base.h
index c9213588a..8a7b5b752 100644
--- a/include/cef_base.h
+++ b/include/cef_base.h
@@ -48,8 +48,7 @@
#endif
///
-// Interface defining the reference count implementation methods. All framework
-// classes must extend the CefBase class.
+// All ref-counted framework classes must extend this class.
///
class CefBase {
public:
@@ -74,6 +73,14 @@ class CefBase {
virtual ~CefBase() {}
};
+///
+// All scoped framework classes must extend this class.
+///
+class CefBaseScoped {
+ public:
+ virtual ~CefBaseScoped() {}
+};
+
///
// Class that implements atomic reference counting.
///
diff --git a/include/cef_scheme.h b/include/cef_scheme.h
index ec9f33e10..5861d85b1 100644
--- a/include/cef_scheme.h
+++ b/include/cef_scheme.h
@@ -82,7 +82,7 @@ bool CefClearSchemeHandlerFactories();
// Class that manages custom scheme registrations.
///
/*--cef(source=library)--*/
-class CefSchemeRegistrar : public virtual CefBase {
+class CefSchemeRegistrar : public CefBaseScoped {
public:
///
// Register a custom scheme. This method should not be called for the built-in
diff --git a/include/internal/cef_ptr.h b/include/internal/cef_ptr.h
index e38543911..7874699f5 100644
--- a/include/internal/cef_ptr.h
+++ b/include/internal/cef_ptr.h
@@ -32,8 +32,15 @@
#define CEF_INCLUDE_INTERNAL_CEF_PTR_H_
#pragma once
+#include "include/base/cef_build.h"
#include "include/base/cef_ref_counted.h"
+#if defined(USING_CHROMIUM_INCLUDES)
+#include // For std::unique_ptr.
+#else
+#include "include/base/cef_scoped_ptr.h"
+#endif
+
///
// Smart pointer implementation that is an alias of scoped_refptr from
// include/base/cef_ref_counted.h.
@@ -143,19 +150,83 @@
//
//
///
+#if defined(HAS_CPP11_TEMPLATE_ALIAS_SUPPORT)
template
-class CefRefPtr : public scoped_refptr {
+using CefRefPtr = scoped_refptr;
+#else
+// When template aliases are not supported use a define instead of subclassing
+// because it's otherwise hard to get the constructors to behave correctly.
+#define CefRefPtr scoped_refptr
+#endif
+
+
+///
+// A CefOwnPtr is like a T*, except that the destructor of CefOwnPtr
+// automatically deletes the pointer it holds (if any). That is, CefOwnPtr
+// owns the T object that it points to. Like a T*, a CefOwnPtr may hold
+// either NULL or a pointer to a T object. Also like T*, CefOwnPtr is
+// thread-compatible, and once you dereference it, you get the thread safety
+// guarantees of T.
+///
+#if defined(USING_CHROMIUM_INCLUDES)
+// Implementation-side code uses std::unique_ptr instead of scoped_ptr.
+template >
+using CefOwnPtr = std::unique_ptr;
+#elif defined(HAS_CPP11_TEMPLATE_ALIAS_SUPPORT)
+template >
+using CefOwnPtr = scoped_ptr;
+#else
+// When template aliases are not supported use a define instead of subclassing
+// because it's otherwise hard to get the constructors to behave correctly.
+#define CefOwnPtr scoped_ptr
+#endif
+
+
+///
+// A CefRawPtr is the same as T*
+///
+#if defined(HAS_CPP11_TEMPLATE_ALIAS_SUPPORT)
+template
+using CefRawPtr = T*;
+#else
+// Simple wrapper implementation that behaves as much like T* as possible.
+template
+class CefRawPtr {
public:
- typedef scoped_refptr parent;
-
- CefRefPtr() : parent() {}
-
- CefRefPtr(T* p) : parent(p) {}
-
- CefRefPtr(const scoped_refptr& r) : parent(r) {}
+ CefRawPtr() : ptr_(nullptr) {}
+ CefRawPtr(T* p) : ptr_(p) {}
+ CefRawPtr(const CefRawPtr& r) : ptr_(r.ptr_) {}
template
- CefRefPtr(const scoped_refptr& r) : parent(r) {}
+ CefRawPtr(const CefRawPtr& r) : ptr_(r.get()) {}
+
+ T* get() const { return ptr_; }
+
+ // Allow CefRawPtr to be used in boolean expression and comparison operations.
+ operator T*() const { return ptr_; }
+
+ T* operator->() const {
+ assert(ptr_ != NULL);
+ return ptr_;
+ }
+
+ CefRawPtr& operator=(T* p) {
+ ptr_ = p;
+ return *this;
+ }
+
+ CefRawPtr& operator=(const CefRawPtr& r) {
+ return *this = r.ptr_;
+ }
+
+ template
+ CefRawPtr& operator=(const CefRawPtr& r) {
+ return *this = r.get();
+ }
+
+ private:
+ T* ptr_;
};
+#endif
#endif // CEF_INCLUDE_INTERNAL_CEF_PTR_H_
diff --git a/include/test/cef_translator_test.h b/include/test/cef_translator_test.h
index c9398dad9..9c5d4288d 100644
--- a/include/test/cef_translator_test.h
+++ b/include/test/cef_translator_test.h
@@ -53,10 +53,14 @@
#include "include/cef_base.h"
-class CefTranslatorTestHandler;
-class CefTranslatorTestHandlerChild;
-class CefTranslatorTestObject;
-class CefTranslatorTestObjectChild;
+class CefTranslatorTestRefPtrClient;
+class CefTranslatorTestRefPtrClientChild;
+class CefTranslatorTestRefPtrLibrary;
+class CefTranslatorTestRefPtrLibraryChild;
+class CefTranslatorTestScopedClient;
+class CefTranslatorTestScopedClientChild;
+class CefTranslatorTestScopedLibrary;
+class CefTranslatorTestScopedLibraryChild;
// Test values.
#define TEST_INT_VAL 5
@@ -309,146 +313,311 @@ class CefTranslatorTest : public CefBase {
virtual size_t GetPointListSize() = 0;
- // LIBRARY-SIDE OBJECT VALUES
+ // LIBRARY-SIDE REFPTR VALUES
///
// Return an new library-side object.
///
/*--cef()--*/
- virtual CefRefPtr GetObject(int val) =0;
+ virtual CefRefPtr GetRefPtrLibrary(
+ int val) =0;
///
- // Set an object. Returns the value from CefTranslatorTestObject::GetValue().
+ // Set an object. Returns the value from
+ // CefTranslatorTestRefPtrLibrary::GetValue().
// This tests input and execution of a library-side object type.
///
/*--cef()--*/
- virtual int SetObject(CefRefPtr val) =0;
+ virtual int SetRefPtrLibrary(
+ CefRefPtr val) =0;
///
// Set an object. Returns the object passed in. This tests input and output
// of a library-side object type.
///
/*--cef()--*/
- virtual CefRefPtr SetObjectAndReturn(
- CefRefPtr val) =0;
+ virtual CefRefPtr SetRefPtrLibraryAndReturn(
+ CefRefPtr val) =0;
///
// Set a child object. Returns the value from
- // CefTranslatorTestObject::GetValue(). This tests input of a library-side
- // child object type and execution as the parent type.
+ // CefTranslatorTestRefPtrLibrary::GetValue(). This tests input of a library-
+ // side child object type and execution as the parent type.
///
/*--cef()--*/
- virtual int SetChildObject(CefRefPtr val) =0;
+ virtual int SetChildRefPtrLibrary(
+ CefRefPtr val) =0;
///
// Set a child object. Returns the object as the parent type. This tests input
// of a library-side child object type and return as the parent type.
///
/*--cef()--*/
- virtual CefRefPtr SetChildObjectAndReturnParent(
- CefRefPtr val) =0;
+ virtual CefRefPtr
+ SetChildRefPtrLibraryAndReturnParent(
+ CefRefPtr val) =0;
- // LIBRARY-SIDE OBJECT LIST VALUES
+ // LIBRARY-SIDE REFPTR LIST VALUES
// Test both with and without a typedef.
- typedef std::vector > ObjectList;
+ typedef std::vector >
+ RefPtrLibraryList;
///
// Set an object list vlaue.
///
/*--cef()--*/
- virtual bool SetObjectList(
- const std::vector >& val,
+ virtual bool SetRefPtrLibraryList(
+ const std::vector >& val,
int val1, int val2) =0;
///
// Return an object list value by out-param.
///
- /*--cef(count_func=val:GetObjectListSize)--*/
- virtual bool GetObjectListByRef(ObjectList& val, int val1, int val2) =0;
+ /*--cef(count_func=val:GetRefPtrLibraryListSize)--*/
+ virtual bool GetRefPtrLibraryListByRef(RefPtrLibraryList& val, int val1,
+ int val2) =0;
///
// Return the number of object that will be output above.
///
/*--cef()--*/
- virtual size_t GetObjectListSize() = 0;
+ virtual size_t GetRefPtrLibraryListSize() = 0;
- // CLIENT-SIDE OBJECT VALUES
+ // CLIENT-SIDE REFPTR VALUES
///
- // Set an object. Returns the value from CefTranslatorTestHandler::GetValue().
+ // Set an object. Returns the value from
+ // CefTranslatorTestRefPtrClient::GetValue().
// This tests input and execution of a client-side object type.
///
/*--cef()--*/
- virtual int SetHandler(CefRefPtr val) =0;
+ virtual int SetRefPtrClient(CefRefPtr val) =0;
///
// Set an object. Returns the handler passed in. This tests input and output
// of a client-side object type.
///
/*--cef()--*/
- virtual CefRefPtr SetHandlerAndReturn(
- CefRefPtr val) =0;
+ virtual CefRefPtr SetRefPtrClientAndReturn(
+ CefRefPtr val) =0;
///
// Set a child object. Returns the value from
- // CefTranslatorTestHandler::GetValue(). This tests input of a client-side
- // child object type and execution as the parent type.
+ // CefTranslatorTestRefPtrClient::GetValue(). This tests input of a client-
+ // side child object type and execution as the parent type.
///
/*--cef()--*/
- virtual int SetChildHandler(CefRefPtr val) =0;
+ virtual int SetChildRefPtrClient(
+ CefRefPtr val) =0;
///
// Set a child object. Returns the object as the parent type. This tests
// input of a client-side child object type and return as the parent type.
///
/*--cef()--*/
- virtual CefRefPtr SetChildHandlerAndReturnParent(
- CefRefPtr val) =0;
+ virtual CefRefPtr
+ SetChildRefPtrClientAndReturnParent(
+ CefRefPtr val) =0;
- // CLIENT-SIDE OBJECT LIST VALUES
+ // CLIENT-SIDE REFPTR LIST VALUES
// Test both with and without a typedef.
- typedef std::vector > HandlerList;
+ typedef std::vector >
+ RefPtrClientList;
///
// Set an object list vlaue.
///
/*--cef()--*/
- virtual bool SetHandlerList(
- const std::vector >& val,
+ virtual bool SetRefPtrClientList(
+ const std::vector >& val,
int val1, int val2) =0;
///
// Return an object list value by out-param.
///
- /*--cef(count_func=val:GetObjectListSize)--*/
- virtual bool GetHandlerListByRef(
- HandlerList& val,
- CefRefPtr val1,
- CefRefPtr val2) =0;
+ /*--cef(count_func=val:GetRefPtrLibraryListSize)--*/
+ virtual bool GetRefPtrClientListByRef(
+ RefPtrClientList& val,
+ CefRefPtr val1,
+ CefRefPtr val2) =0;
///
// Return the number of object that will be output above.
///
/*--cef()--*/
- virtual size_t GetHandlerListSize() = 0;
+ virtual size_t GetRefPtrClientListSize() = 0;
+
+
+ // LIBRARY-SIDE OWNPTR VALUES
+
+ ///
+ // Return an new library-side object.
+ ///
+ /*--cef()--*/
+ virtual CefOwnPtr GetOwnPtrLibrary(
+ int val) =0;
+
+ ///
+ // Set an object. Returns the value from
+ // CefTranslatorTestScopedLibrary::GetValue().
+ // This tests input and execution of a library-side object type.
+ ///
+ /*--cef()--*/
+ virtual int SetOwnPtrLibrary(
+ CefOwnPtr val) =0;
+
+ ///
+ // Set an object. Returns the object passed in. This tests input and output
+ // of a library-side object type.
+ ///
+ /*--cef()--*/
+ virtual CefOwnPtr SetOwnPtrLibraryAndReturn(
+ CefOwnPtr val) =0;
+
+ ///
+ // Set a child object. Returns the value from
+ // CefTranslatorTestScopedLibrary::GetValue(). This tests input of a library-
+ // side child object type and execution as the parent type.
+ ///
+ /*--cef()--*/
+ virtual int SetChildOwnPtrLibrary(
+ CefOwnPtr val) =0;
+
+ ///
+ // Set a child object. Returns the object as the parent type. This tests input
+ // of a library-side child object type and return as the parent type.
+ ///
+ /*--cef()--*/
+ virtual CefOwnPtr
+ SetChildOwnPtrLibraryAndReturnParent(
+ CefOwnPtr val) =0;
+
+
+ // CLIENT-SIDE OWNPTR VALUES
+
+ ///
+ // Set an object. Returns the value from
+ // CefTranslatorTestScopedClient::GetValue().
+ // This tests input and execution of a client-side object type.
+ ///
+ /*--cef()--*/
+ virtual int SetOwnPtrClient(CefOwnPtr val) =0;
+
+ ///
+ // Set an object. Returns the handler passed in. This tests input and output
+ // of a client-side object type.
+ ///
+ /*--cef()--*/
+ virtual CefOwnPtr SetOwnPtrClientAndReturn(
+ CefOwnPtr val) =0;
+
+ ///
+ // Set a child object. Returns the value from
+ // CefTranslatorTestScopedClient::GetValue(). This tests input of a client-
+ // side child object type and execution as the parent type.
+ ///
+ /*--cef()--*/
+ virtual int SetChildOwnPtrClient(
+ CefOwnPtr val) =0;
+
+ ///
+ // Set a child object. Returns the object as the parent type. This tests
+ // input of a client-side child object type and return as the parent type.
+ ///
+ /*--cef()--*/
+ virtual CefOwnPtr
+ SetChildOwnPtrClientAndReturnParent(
+ CefOwnPtr val) =0;
+
+
+ // LIBRARY-SIDE RAWPTR VALUES
+
+ ///
+ // Set an object. Returns the value from
+ // CefTranslatorTestScopedLibrary::GetValue().
+ // This tests input and execution of a library-side object type.
+ ///
+ /*--cef()--*/
+ virtual int SetRawPtrLibrary(
+ CefRawPtr val) =0;
+
+ ///
+ // Set a child object. Returns the value from
+ // CefTranslatorTestScopedLibrary::GetValue(). This tests input of a library-
+ // side child object type and execution as the parent type.
+ ///
+ /*--cef()--*/
+ virtual int SetChildRawPtrLibrary(
+ CefRawPtr val) =0;
+
+
+ // LIBRARY-SIDE RAWPTR LIST VALUES
+
+ // Test both with and without a typedef.
+ typedef std::vector >
+ RawPtrLibraryList;
+
+ ///
+ // Set an object list vlaue.
+ ///
+ /*--cef()--*/
+ virtual bool SetRawPtrLibraryList(
+ const std::vector >& val,
+ int val1, int val2) =0;
+
+
+ // CLIENT-SIDE RAWPTR VALUES
+
+ ///
+ // Set an object. Returns the value from
+ // CefTranslatorTestScopedClient::GetValue().
+ // This tests input and execution of a client-side object type.
+ ///
+ /*--cef()--*/
+ virtual int SetRawPtrClient(CefRawPtr val) =0;
+
+ ///
+ // Set a child object. Returns the value from
+ // CefTranslatorTestScopedClient::GetValue(). This tests input of a client-
+ // side child object type and execution as the parent type.
+ ///
+ /*--cef()--*/
+ virtual int SetChildRawPtrClient(
+ CefRawPtr val) =0;
+
+
+ // CLIENT-SIDE RAWPTR LIST VALUES
+
+ // Test both with and without a typedef.
+ typedef std::vector >
+ RawPtrClientList;
+
+ ///
+ // Set an object list vlaue.
+ ///
+ /*--cef()--*/
+ virtual bool SetRawPtrClientList(
+ const std::vector >& val,
+ int val1, int val2) =0;
};
+
///
-// Library-side test object.
+// Library-side test object for RefPtr.
///
/*--cef(source=library,no_debugct_check)--*/
-class CefTranslatorTestObject : public CefBase {
+class CefTranslatorTestRefPtrLibrary : public CefBase {
public:
///
// Create the test object.
///
/*--cef()--*/
- static CefRefPtr Create(int value);
+ static CefRefPtr Create(int value);
///
// Return a value.
@@ -464,17 +633,19 @@ class CefTranslatorTestObject : public CefBase {
};
///
-// Library-side child test object.
+// Library-side child test object for RefPtr.
///
/*--cef(source=library,no_debugct_check)--*/
-class CefTranslatorTestObjectChild : public CefTranslatorTestObject {
+class CefTranslatorTestRefPtrLibraryChild :
+ public CefTranslatorTestRefPtrLibrary {
public:
///
// Create the test object.
///
/*--cef()--*/
- static CefRefPtr Create(int value,
- int other_value);
+ static CefRefPtr Create(
+ int value,
+ int other_value);
///
// Return a value.
@@ -490,16 +661,17 @@ class CefTranslatorTestObjectChild : public CefTranslatorTestObject {
};
///
-// Another library-side child test object.
+// Another library-side child test object for RefPtr.
///
/*--cef(source=library,no_debugct_check)--*/
-class CefTranslatorTestObjectChildChild : public CefTranslatorTestObjectChild {
+class CefTranslatorTestRefPtrLibraryChildChild :
+ public CefTranslatorTestRefPtrLibraryChild {
public:
///
// Create the test object.
///
/*--cef()--*/
- static CefRefPtr Create(
+ static CefRefPtr Create(
int value,
int other_value,
int other_other_value);
@@ -518,10 +690,10 @@ class CefTranslatorTestObjectChildChild : public CefTranslatorTestObjectChild {
};
///
-// Client-side test object.
+// Client-side test object for RefPtr.
///
/*--cef(source=client,no_debugct_check)--*/
-class CefTranslatorTestHandler : public virtual CefBase {
+class CefTranslatorTestRefPtrClient : public virtual CefBase {
public:
///
// Return a value.
@@ -531,10 +703,121 @@ class CefTranslatorTestHandler : public virtual CefBase {
};
///
-// Client-side child test object.
+// Client-side child test object for RefPtr.
///
/*--cef(source=client,no_debugct_check)--*/
-class CefTranslatorTestHandlerChild : public CefTranslatorTestHandler {
+class CefTranslatorTestRefPtrClientChild :
+ public CefTranslatorTestRefPtrClient {
+ public:
+ ///
+ // Return a value.
+ ///
+ /*--cef()--*/
+ virtual int GetOtherValue() =0;
+};
+
+
+///
+// Library-side test object for OwnPtr/RawPtr.
+///
+/*--cef(source=library,no_debugct_check)--*/
+class CefTranslatorTestScopedLibrary : public CefBaseScoped {
+ public:
+ ///
+ // Create the test object.
+ ///
+ /*--cef()--*/
+ static CefOwnPtr Create(int value);
+
+ ///
+ // Return a value.
+ ///
+ /*--cef()--*/
+ virtual int GetValue() =0;
+
+ ///
+ // Set a value.
+ ///
+ /*--cef()--*/
+ virtual void SetValue(int value) =0;
+};
+
+///
+// Library-side child test object for OwnPtr/RawPtr.
+///
+/*--cef(source=library,no_debugct_check)--*/
+class CefTranslatorTestScopedLibraryChild :
+ public CefTranslatorTestScopedLibrary {
+ public:
+ ///
+ // Create the test object.
+ ///
+ /*--cef()--*/
+ static CefOwnPtr Create(
+ int value,
+ int other_value);
+
+ ///
+ // Return a value.
+ ///
+ /*--cef()--*/
+ virtual int GetOtherValue() =0;
+
+ ///
+ // Set a value.
+ ///
+ /*--cef()--*/
+ virtual void SetOtherValue(int value) =0;
+};
+
+///
+// Another library-side child test object for OwnPtr/RawPtr.
+///
+/*--cef(source=library,no_debugct_check)--*/
+class CefTranslatorTestScopedLibraryChildChild :
+ public CefTranslatorTestScopedLibraryChild {
+ public:
+ ///
+ // Create the test object.
+ ///
+ /*--cef()--*/
+ static CefOwnPtr Create(
+ int value,
+ int other_value,
+ int other_other_value);
+
+ ///
+ // Return a value.
+ ///
+ /*--cef()--*/
+ virtual int GetOtherOtherValue() =0;
+
+ ///
+ // Set a value.
+ ///
+ /*--cef()--*/
+ virtual void SetOtherOtherValue(int value) =0;
+};
+
+///
+// Client-side test object for OwnPtr/RawPtr.
+///
+/*--cef(source=client,no_debugct_check)--*/
+class CefTranslatorTestScopedClient : public virtual CefBaseScoped {
+ public:
+ ///
+ // Return a value.
+ ///
+ /*--cef()--*/
+ virtual int GetValue() =0;
+};
+
+///
+// Client-side child test object for OwnPtr/RawPtr.
+///
+/*--cef(source=client,no_debugct_check)--*/
+class CefTranslatorTestScopedClientChild :
+ public CefTranslatorTestScopedClient {
public:
///
// Return a value.
diff --git a/libcef/common/content_client.cc b/libcef/common/content_client.cc
index 8f48e9ee0..8b641ae14 100644
--- a/libcef/common/content_client.cc
+++ b/libcef/common/content_client.cc
@@ -220,14 +220,9 @@ void CefContentClient::AddAdditionalSchemes(Schemes* schemes) {
DCHECK(!scheme_info_list_locked_);
if (application_.get()) {
- CefRefPtr schemeRegistrar(
- new CefSchemeRegistrarImpl());
- application_->OnRegisterCustomSchemes(schemeRegistrar.get());
- schemeRegistrar->GetSchemes(schemes);
-
- // No references to the registar should be kept.
- schemeRegistrar->Detach();
- DCHECK(schemeRegistrar->VerifyRefCount());
+ CefSchemeRegistrarImpl schemeRegistrar;
+ application_->OnRegisterCustomSchemes(&schemeRegistrar);
+ schemeRegistrar.GetSchemes(schemes);
}
scheme::AddInternalSchemes(schemes);
diff --git a/libcef/common/scheme_registrar_impl.cc b/libcef/common/scheme_registrar_impl.cc
index 4d3f87c1a..00b8daa0c 100644
--- a/libcef/common/scheme_registrar_impl.cc
+++ b/libcef/common/scheme_registrar_impl.cc
@@ -24,8 +24,7 @@ void AppendArray(const std::vector& source,
}
-CefSchemeRegistrarImpl::CefSchemeRegistrarImpl()
- : supported_thread_id_(base::PlatformThread::CurrentId()) {
+CefSchemeRegistrarImpl::CefSchemeRegistrarImpl() {
}
bool CefSchemeRegistrarImpl::AddCustomScheme(
@@ -35,9 +34,6 @@ bool CefSchemeRegistrarImpl::AddCustomScheme(
bool is_display_isolated,
bool is_secure,
bool is_cors_enabled) {
- if (!VerifyContext())
- return false;
-
const std::string& scheme = base::ToLowerASCII(scheme_name.ToString());
if (scheme::IsInternalHandledScheme(scheme) ||
registered_schemes_.find(scheme) != registered_schemes_.end()) {
@@ -68,30 +64,8 @@ bool CefSchemeRegistrarImpl::AddCustomScheme(
void CefSchemeRegistrarImpl::GetSchemes(
content::ContentClient::Schemes* schemes) {
- if (!VerifyContext())
- return;
-
AppendArray(schemes_.standard_schemes, &schemes->standard_schemes);
AppendArray(schemes_.local_schemes, &schemes->local_schemes);
AppendArray(schemes_.secure_schemes, &schemes->secure_schemes);
AppendArray(schemes_.cors_enabled_schemes, &schemes->cors_enabled_schemes);
}
-
-bool CefSchemeRegistrarImpl::VerifyRefCount() {
- return HasOneRef();
-}
-
-void CefSchemeRegistrarImpl::Detach() {
- if (VerifyContext())
- supported_thread_id_ = base::kInvalidThreadId;
-}
-
-bool CefSchemeRegistrarImpl::VerifyContext() {
- if (base::PlatformThread::CurrentId() != supported_thread_id_) {
- // This object should only be accessed from the thread that created it.
- NOTREACHED();
- return false;
- }
-
- return true;
-}
diff --git a/libcef/common/scheme_registrar_impl.h b/libcef/common/scheme_registrar_impl.h
index d009bc7ac..1567df442 100644
--- a/libcef/common/scheme_registrar_impl.h
+++ b/libcef/common/scheme_registrar_impl.h
@@ -11,7 +11,6 @@
#include "include/cef_scheme.h"
-#include "base/threading/platform_thread.h"
#include "content/public/common/content_client.h"
class CefSchemeRegistrarImpl : public CefSchemeRegistrar {
@@ -28,22 +27,13 @@ class CefSchemeRegistrarImpl : public CefSchemeRegistrar {
void GetSchemes(content::ContentClient::Schemes* schemes);
- // Verify that only a single reference exists to all CefSchemeRegistrarImpl
- // objects.
- bool VerifyRefCount();
-
- void Detach();
-
private:
// Verify that the object is being accessed from the correct thread.
bool VerifyContext();
- base::PlatformThreadId supported_thread_id_;
-
content::ContentClient::Schemes schemes_;
std::set registered_schemes_;
- IMPLEMENT_REFCOUNTING(CefSchemeRegistrarImpl);
DISALLOW_COPY_AND_ASSIGN(CefSchemeRegistrarImpl);
};
diff --git a/libcef/common/test/translator_test_impl.cc b/libcef/common/test/translator_test_impl.cc
index d82411f90..23ed616be 100644
--- a/libcef/common/test/translator_test_impl.cc
+++ b/libcef/common/test/translator_test_impl.cc
@@ -4,9 +4,10 @@
#include "include/test/cef_translator_test.h"
-class CefTranslatorTestObjectImpl : public CefTranslatorTestObject {
+class CefTranslatorTestRefPtrLibraryImpl :
+ public CefTranslatorTestRefPtrLibrary {
public:
- explicit CefTranslatorTestObjectImpl(int value)
+ explicit CefTranslatorTestRefPtrLibraryImpl(int value)
: value_(value) {
}
@@ -22,18 +23,20 @@ class CefTranslatorTestObjectImpl : public CefTranslatorTestObject {
int value_;
private:
- DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestObjectImpl);
- IMPLEMENT_REFCOUNTING(CefTranslatorTestObjectImpl);
+ DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestRefPtrLibraryImpl);
+ IMPLEMENT_REFCOUNTING(CefTranslatorTestRefPtrLibraryImpl);
};
// static
-CefRefPtr CefTranslatorTestObject::Create(int value) {
- return new CefTranslatorTestObjectImpl(value);
+CefRefPtr
+CefTranslatorTestRefPtrLibrary::Create(int value) {
+ return new CefTranslatorTestRefPtrLibraryImpl(value);
}
-class CefTranslatorTestObjectChildImpl : public CefTranslatorTestObjectChild {
+class CefTranslatorTestRefPtrLibraryChildImpl :
+ public CefTranslatorTestRefPtrLibraryChild {
public:
- CefTranslatorTestObjectChildImpl(int value, int other_value)
+ CefTranslatorTestRefPtrLibraryChildImpl(int value, int other_value)
: value_(value),
other_value_(other_value) {
}
@@ -59,21 +62,22 @@ class CefTranslatorTestObjectChildImpl : public CefTranslatorTestObjectChild {
int other_value_;
private:
- DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestObjectChildImpl);
- IMPLEMENT_REFCOUNTING(CefTranslatorTestObjectChildImpl);
+ DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestRefPtrLibraryChildImpl);
+ IMPLEMENT_REFCOUNTING(CefTranslatorTestRefPtrLibraryChildImpl);
};
// static
-CefRefPtr CefTranslatorTestObjectChild::Create(
+CefRefPtr
+CefTranslatorTestRefPtrLibraryChild::Create(
int value,
int other_value) {
- return new CefTranslatorTestObjectChildImpl(value, other_value);
+ return new CefTranslatorTestRefPtrLibraryChildImpl(value, other_value);
}
-class CefTranslatorTestObjectChildChildImpl :
- public CefTranslatorTestObjectChildChild {
+class CefTranslatorTestRefPtrLibraryChildChildImpl :
+ public CefTranslatorTestRefPtrLibraryChildChild {
public:
- CefTranslatorTestObjectChildChildImpl(int value,
+ CefTranslatorTestRefPtrLibraryChildChildImpl(int value,
int other_value,
int other_other_value)
: value_(value),
@@ -111,20 +115,147 @@ class CefTranslatorTestObjectChildChildImpl :
int other_other_value_;
private:
- DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestObjectChildChildImpl);
- IMPLEMENT_REFCOUNTING(CefTranslatorTestObjectChildChildImpl);
+ DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestRefPtrLibraryChildChildImpl);
+ IMPLEMENT_REFCOUNTING(CefTranslatorTestRefPtrLibraryChildChildImpl);
};
// static
-CefRefPtr
-CefTranslatorTestObjectChildChild::Create(
+CefRefPtr
+CefTranslatorTestRefPtrLibraryChildChild::Create(
int value,
int other_value,
int other_other_value) {
- return new CefTranslatorTestObjectChildChildImpl(value, other_value,
- other_other_value);
+ return new CefTranslatorTestRefPtrLibraryChildChildImpl(value, other_value,
+ other_other_value);
}
+
+class CefTranslatorTestScopedLibraryImpl :
+ public CefTranslatorTestScopedLibrary {
+ public:
+ explicit CefTranslatorTestScopedLibraryImpl(int value)
+ : value_(value) {
+ }
+
+ int GetValue() override {
+ return value_;
+ }
+
+ void SetValue(int value) override {
+ value_ = value;
+ }
+
+ protected:
+ int value_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestScopedLibraryImpl);
+};
+
+// static
+CefOwnPtr
+CefTranslatorTestScopedLibrary::Create(int value) {
+ return CefOwnPtr(
+ new CefTranslatorTestScopedLibraryImpl(value));
+}
+
+class CefTranslatorTestScopedLibraryChildImpl :
+ public CefTranslatorTestScopedLibraryChild {
+ public:
+ CefTranslatorTestScopedLibraryChildImpl(int value, int other_value)
+ : value_(value),
+ other_value_(other_value) {
+ }
+
+ int GetValue() override {
+ return value_;
+ }
+
+ void SetValue(int value) override {
+ value_ = value;
+ }
+
+ int GetOtherValue() override {
+ return other_value_;
+ }
+
+ void SetOtherValue(int value) override {
+ other_value_ = value;
+ }
+
+ protected:
+ int value_;
+ int other_value_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestScopedLibraryChildImpl);
+};
+
+// static
+CefOwnPtr
+CefTranslatorTestScopedLibraryChild::Create(
+ int value,
+ int other_value) {
+ return CefOwnPtr(
+ new CefTranslatorTestScopedLibraryChildImpl(value, other_value));
+}
+
+class CefTranslatorTestScopedLibraryChildChildImpl :
+ public CefTranslatorTestScopedLibraryChildChild {
+ public:
+ CefTranslatorTestScopedLibraryChildChildImpl(int value,
+ int other_value,
+ int other_other_value)
+ : value_(value),
+ other_value_(other_value),
+ other_other_value_(other_other_value) {
+ }
+
+ int GetValue() override {
+ return value_;
+ }
+
+ void SetValue(int value) override {
+ value_ = value;
+ }
+
+ int GetOtherValue() override {
+ return other_value_;
+ }
+
+ void SetOtherValue(int value) override {
+ other_value_ = value;
+ }
+
+ int GetOtherOtherValue() override {
+ return other_other_value_;
+ }
+
+ void SetOtherOtherValue(int value) override {
+ other_other_value_ = value;
+ }
+
+ protected:
+ int value_;
+ int other_value_;
+ int other_other_value_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestScopedLibraryChildChildImpl);
+};
+
+// static
+CefOwnPtr
+CefTranslatorTestScopedLibraryChildChild::Create(
+ int value,
+ int other_value,
+ int other_other_value) {
+ return CefOwnPtr(
+ new CefTranslatorTestScopedLibraryChildChildImpl(value, other_value,
+ other_other_value));
+}
+
+
class CefTranslatorTestImpl : public CefTranslatorTest {
public:
CefTranslatorTestImpl() {
@@ -338,91 +469,95 @@ class CefTranslatorTestImpl : public CefTranslatorTest {
}
- // LIBRARY-SIDE OBJECT VALUES
+ // LIBRARY-SIDE REFPTR VALUES
- CefRefPtr GetObject(int val) override {
- return new CefTranslatorTestObjectChildImpl(val, 0);
+ CefRefPtr GetRefPtrLibrary(int val) override {
+ return new CefTranslatorTestRefPtrLibraryChildImpl(val, 0);
}
- int SetObject(CefRefPtr val) override {
+ int SetRefPtrLibrary(CefRefPtr val) override {
return val->GetValue();
}
- CefRefPtr SetObjectAndReturn(
- CefRefPtr val) override {
+ CefRefPtr SetRefPtrLibraryAndReturn(
+ CefRefPtr val) override {
return val;
}
- int SetChildObject(CefRefPtr val) override {
+ int SetChildRefPtrLibrary(
+ CefRefPtr val) override {
return val->GetValue();
}
- CefRefPtr SetChildObjectAndReturnParent(
- CefRefPtr val) override {
+ CefRefPtr
+ SetChildRefPtrLibraryAndReturnParent(
+ CefRefPtr val) override {
return val;
}
- // LIBRARY-SIDE OBJECT LIST VALUES
+ // LIBRARY-SIDE REFPTR LIST VALUES
- bool SetObjectList(
- const std::vector >& val,
+ bool SetRefPtrLibraryList(
+ const std::vector >& val,
int val1, int val2) override {
if (val.size() != 2U)
return false;
return val[0]->GetValue() == val1 && val[1]->GetValue() == val2;
}
- bool GetObjectListByRef(ObjectList& val, int val1, int val2) override {
- if (val.size() != GetObjectListSize())
+ bool GetRefPtrLibraryListByRef(RefPtrLibraryList& val, int val1,
+ int val2) override {
+ if (val.size() != GetRefPtrLibraryListSize())
return false;
val.clear();
- val.push_back(new CefTranslatorTestObjectChildImpl(val1, 0));
- val.push_back(new CefTranslatorTestObjectImpl(val2));
+ val.push_back(new CefTranslatorTestRefPtrLibraryChildImpl(val1, 0));
+ val.push_back(new CefTranslatorTestRefPtrLibraryImpl(val2));
return true;
}
- size_t GetObjectListSize() override {
+ size_t GetRefPtrLibraryListSize() override {
return 2U;
}
- // CLIENT-SIDE OBJECT VALUES
+ // CLIENT-SIDE REFPTR VALUES
- int SetHandler(CefRefPtr val) override {
+ int SetRefPtrClient(CefRefPtr val) override {
return val->GetValue();
}
- CefRefPtr SetHandlerAndReturn(
- CefRefPtr val) override {
+ CefRefPtr SetRefPtrClientAndReturn(
+ CefRefPtr val) override {
return val;
}
- int SetChildHandler(CefRefPtr val) override {
+ int SetChildRefPtrClient(
+ CefRefPtr val) override {
return val->GetValue();
}
- CefRefPtr SetChildHandlerAndReturnParent(
- CefRefPtr val) override {
+ CefRefPtr SetChildRefPtrClientAndReturnParent(
+ CefRefPtr val) override {
return val;
}
- // CLIENT-SIDE OBJECT LIST VALUES
+ // CLIENT-SIDE REFPTR LIST VALUES
- bool SetHandlerList(
- const std::vector >& val,
+ bool SetRefPtrClientList(
+ const std::vector >& val,
int val1, int val2) override {
if (val.size() != 2U)
return false;
return val[0]->GetValue() == val1 && val[1]->GetValue() == val2;
}
- bool GetHandlerListByRef(
- HandlerList& val,
- CefRefPtr val1,
- CefRefPtr val2) override {
- if (val.size() != GetHandlerListSize())
+ bool GetRefPtrClientListByRef(
+ RefPtrClientList& val,
+ CefRefPtr val1,
+ CefRefPtr val2) override {
+ if (val.size() != GetRefPtrClientListSize())
return false;
val.clear();
val.push_back(val1);
@@ -430,10 +565,106 @@ class CefTranslatorTestImpl : public CefTranslatorTest {
return true;
}
- size_t GetHandlerListSize() override {
+ size_t GetRefPtrClientListSize() override {
return 2U;
}
+
+ // LIBRARY-SIDE OWNPTR VALUES
+
+ CefOwnPtr GetOwnPtrLibrary(int val) override {
+ return CefOwnPtr(
+ new CefTranslatorTestScopedLibraryChildImpl(val, 0));
+ }
+
+ int SetOwnPtrLibrary(CefOwnPtr val) override {
+ return val->GetValue();
+ }
+
+ CefOwnPtr SetOwnPtrLibraryAndReturn(
+ CefOwnPtr val) override {
+ return val;
+ }
+
+ int SetChildOwnPtrLibrary(
+ CefOwnPtr val) override {
+ return val->GetValue();
+ }
+
+ CefOwnPtr
+ SetChildOwnPtrLibraryAndReturnParent(
+ CefOwnPtr val) override {
+ return CefOwnPtr(val.release());
+ }
+
+
+ // CLIENT-SIDE OWNPTR VALUES
+
+ int SetOwnPtrClient(CefOwnPtr val) override {
+ return val->GetValue();
+ }
+
+ CefOwnPtr SetOwnPtrClientAndReturn(
+ CefOwnPtr val) override {
+ return val;
+ }
+
+ int SetChildOwnPtrClient(
+ CefOwnPtr val) override {
+ return val->GetValue();
+ }
+
+ CefOwnPtr SetChildOwnPtrClientAndReturnParent(
+ CefOwnPtr val) override {
+ return CefOwnPtr(val.release());
+ }
+
+
+ // LIBRARY-SIDE RAWPTR VALUES
+
+ int SetRawPtrLibrary(CefRawPtr val) override {
+ return val->GetValue();
+ }
+
+ int SetChildRawPtrLibrary(
+ CefRawPtr val) override {
+ return val->GetValue();
+ }
+
+
+ // LIBRARY-SIDE RAWPTR LIST VALUES
+
+ bool SetRawPtrLibraryList(
+ const std::vector >& val,
+ int val1, int val2) override {
+ if (val.size() != 2U)
+ return false;
+ return val[0]->GetValue() == val1 && val[1]->GetValue() == val2;
+ }
+
+
+ // CLIENT-SIDE RAWPTR VALUES
+
+ int SetRawPtrClient(CefRawPtr val) override {
+ return val->GetValue();
+ }
+
+ int SetChildRawPtrClient(
+ CefRawPtr val) override {
+ return val->GetValue();
+ }
+
+
+ // CLIENT-SIDE RAWPTR LIST VALUES
+
+ bool SetRawPtrClientList(
+ const std::vector >& val,
+ int val1, int val2) override {
+ if (val.size() != 2U)
+ return false;
+ return val[0]->GetValue() == val1 && val[1]->GetValue() == val2;
+ }
+
private:
IMPLEMENT_REFCOUNTING(CefTranslatorTestImpl);
DISALLOW_COPY_AND_ASSIGN(CefTranslatorTestImpl);
diff --git a/libcef_dll/cpptoc/app_cpptoc.cc b/libcef_dll/cpptoc/app_cpptoc.cc
index aa29a7342..0963510d1 100644
--- a/libcef_dll/cpptoc/app_cpptoc.cc
+++ b/libcef_dll/cpptoc/app_cpptoc.cc
@@ -49,14 +49,18 @@ void CEF_CALLBACK app_on_register_custom_schemes(struct _cef_app_t* self,
DCHECK(self);
if (!self)
return;
- // Verify param: registrar; type: refptr_diff
+ // Verify param: registrar; type: rawptr_diff
DCHECK(registrar);
if (!registrar)
return;
+ // Translate param: registrar; type: rawptr_diff
+ CefOwnPtr registrarPtr(CefSchemeRegistrarCToCpp::Wrap(
+ registrar));
+
// Execute
CefAppCppToC::Get(self)->OnRegisterCustomSchemes(
- CefSchemeRegistrarCToCpp::Wrap(registrar));
+ registrarPtr.get());
}
struct _cef_resource_bundle_handler_t* CEF_CALLBACK app_get_resource_bundle_handler(
diff --git a/libcef_dll/cpptoc/base_scoped_cpptoc.cc b/libcef_dll/cpptoc/base_scoped_cpptoc.cc
new file mode 100644
index 000000000..7562b04ff
--- /dev/null
+++ b/libcef_dll/cpptoc/base_scoped_cpptoc.cc
@@ -0,0 +1,30 @@
+// Copyright (c) 2017 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.
+
+#include "libcef_dll/cpptoc/base_scoped_cpptoc.h"
+
+CefBaseScopedCppToC::CefBaseScopedCppToC() {
+}
+
+template<> CefOwnPtr
+CefCppToCScoped::
+ UnwrapDerivedOwn(CefWrapperType type, cef_base_scoped_t* s) {
+ NOTREACHED();
+ return CefOwnPtr();
+}
+
+template<> CefRawPtr
+CefCppToCScoped::
+ UnwrapDerivedRaw(CefWrapperType type, cef_base_scoped_t* s) {
+ NOTREACHED();
+ return NULL;
+}
+
+#if DCHECK_IS_ON()
+template<> base::AtomicRefCount CefCppToCScoped::DebugObjCt = 0;
+#endif
+
+template<> CefWrapperType CefCppToCScoped::kWrapperType = WT_BASE;
diff --git a/libcef_dll/cpptoc/base_scoped_cpptoc.h b/libcef_dll/cpptoc/base_scoped_cpptoc.h
new file mode 100644
index 000000000..4d72763ee
--- /dev/null
+++ b/libcef_dll/cpptoc/base_scoped_cpptoc.h
@@ -0,0 +1,25 @@
+// Copyright (c) 2009 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_DLL_CPPTOC_BASE_CPPTOC_H_
+#define CEF_LIBCEF_DLL_CPPTOC_BASE_CPPTOC_H_
+#pragma once
+
+#include "include/cef_base.h"
+#include "include/capi/cef_base_capi.h"
+#include "libcef_dll/cpptoc/cpptoc_scoped.h"
+
+#if !defined(WRAPPING_CEF_SHARED)
+#error This file can be included wrapper-side only
+#endif
+
+// Wrap a C++ class with a C structure.
+class CefBaseScopedCppToC
+ : public CefCppToCScoped {
+ public:
+ CefBaseScopedCppToC();
+};
+
+#endif // CEF_LIBCEF_DLL_CPPTOC_BASE_CPPTOC_H_
diff --git a/libcef_dll/cpptoc/cpptoc_scoped.h b/libcef_dll/cpptoc/cpptoc_scoped.h
new file mode 100644
index 000000000..4230ef77f
--- /dev/null
+++ b/libcef_dll/cpptoc/cpptoc_scoped.h
@@ -0,0 +1,241 @@
+// Copyright (c) 2017 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_DLL_CPPTOC_CPPTOC_SCOPED_H_
+#define CEF_LIBCEF_DLL_CPPTOC_CPPTOC_SCOPED_H_
+#pragma once
+
+#include "include/base/cef_logging.h"
+#include "include/base/cef_macros.h"
+#include "include/cef_base.h"
+#include "include/capi/cef_base_capi.h"
+#include "libcef_dll/ptr_util.h"
+#include "libcef_dll/wrapper_types.h"
+
+// Wrap a C++ class with a C structure. This is used when the class
+// implementation exists on this side of the DLL boundary but will have methods
+// called from the other side of the DLL boundary.
+template
+class CefCppToCScoped : public CefBaseScoped {
+ public:
+ // Create a new wrapper instance and associated structure reference for
+ // passing an object instance the other side. The wrapper object will be
+ // deleted when |del| is called on the associated structure. The wrapped
+ // object will be deleted when the wrapper object is deleted. For example:
+ //
+ // void MyMethod(CefOwnPtr obj) {
+ // my_method(MyTypeCppToC::WrapOwn(obj));
+ // }
+ //
+ // void my_method(my_type_t* struct) {
+ // // Delete the MyTypeCppToC wrapper and the owned MyType object.
+ // struct->del(struct);
+ // }
+ static StructName* WrapOwn(CefOwnPtr c) {
+ if (!c)
+ return NULL;
+
+ // Wrap our object with the CefCppToC class.
+ ClassName* wrapper = new ClassName();
+ wrapper->Initialize(c.release(), true);
+
+ // Return the structure pointer that can now be passed to the other side.
+ return wrapper->GetStruct();
+ }
+
+ // Create a new wrapper instance and associated structure reference for
+ // passing an object instance to the other side. The wrapper object is owned
+ // by the caller. The wrapped object is unowned and must outlive the wrapper.
+ // For example:
+ //
+ // void MyMethod(MyType* obj) {
+ // CefOwnPtr MyTypeWrapper = MyTypeCppToC::WrapRaw(obj);
+ // my_method(MyTypeWrapper->GetStruct());
+ // // MyTypeWrapper is deleted when MyMethod() goes out of scope.
+ // }
+ //
+ // void my_method(my_type_t* struct) {
+ // // Access |struct| here but you can't delete it.
+ // }
+ static CefOwnPtr WrapRaw(CefRawPtr c) {
+ if (!c)
+ return CefOwnPtr();
+
+ // Wrap our object with the CefCppToC class.
+ ClassName* wrapper = new ClassName();
+ wrapper->Initialize(c, false);
+
+ // Return the owned wrapper object.
+ return CefOwnPtr(wrapper);
+ }
+
+ // Retrieve the underlying object instance for a structure reference passed
+ // back from the other side. The caller takes ownership of the object. For
+ // example:
+ //
+ // void my_method(my_type_t* struct) {
+ // CefOwnPtr MyTypePtr = MyTypeCppToC::UnwrapOwn(struct);
+ // // |struct| has been deleted and should no longer be accessed.
+ // }
+ static CefOwnPtr UnwrapOwn(StructName* s) {
+ if (!s)
+ return CefOwnPtr();
+
+ // Cast our structure to the wrapper structure type.
+ WrapperStruct* wrapperStruct = GetWrapperStruct(s);
+
+ // If the type does not match this object then we need to unwrap as the
+ // derived type.
+ if (wrapperStruct->type_ != kWrapperType)
+ return UnwrapDerivedOwn(wrapperStruct->type_, s);
+
+ // We should own the underlying object currently.
+ DCHECK(wrapperStruct->wrapper_->owned_);
+ DCHECK(wrapperStruct->object_);
+
+ // We're giving up ownership of the underlying object. Clear the pointer so
+ // it doesn't get deleted.
+ BaseName* object = wrapperStruct->object_;
+ wrapperStruct->object_ = NULL;
+
+ delete wrapperStruct->wrapper_;
+
+ // Return the underlying object instance.
+ return CefOwnPtr(object);
+ }
+
+ // Retrieve the underlying object instance for a structure reference passed
+ // back from the other side. Ownership does not change. For example:
+ //
+ // void my_method(my_type_t* struct) {
+ // CefRawPtr MyTypePtr = MyTypeCppToC::UnwrapRaw(struct);
+ // // |struct| is still valid.
+ // }
+ static CefRawPtr UnwrapRaw(StructName* s) {
+ if (!s)
+ return NULL;
+
+ // Cast our structure to the wrapper structure type.
+ WrapperStruct* wrapperStruct = GetWrapperStruct(s);
+
+ // If the type does not match this object then we need to unwrap as the
+ // derived type.
+ if (wrapperStruct->type_ != kWrapperType)
+ return UnwrapDerivedRaw(wrapperStruct->type_, s);
+
+ // Return the underlying object instance.
+ return wrapperStruct->object_;
+ }
+
+ // Retrieve the same side wrapper associated with the structure. Ownership
+ // does not change.
+ static ClassName* GetWrapper(StructName* s) {
+ DCHECK(s);
+ WrapperStruct* wrapperStruct = GetWrapperStruct(s);
+ // Verify that the wrapper offset was calculated correctly.
+ DCHECK_EQ(kWrapperType, wrapperStruct->type_);
+ return static_cast(wrapperStruct->wrapper_);
+ }
+
+ // Retrieve the underlying object instance from our own structure reference
+ // when the reference is passed as the required first parameter of a C API
+ // function call. Ownership of the object does not change.
+ static BaseName* Get(StructName* s) {
+ DCHECK(s);
+ WrapperStruct* wrapperStruct = GetWrapperStruct(s);
+ // Verify that the wrapper offset was calculated correctly.
+ DCHECK_EQ(kWrapperType, wrapperStruct->type_);
+ return wrapperStruct->object_;
+ }
+
+ // If returning the structure across the DLL boundary you should call
+ // AddRef() on this CefCppToC object. On the other side of the DLL boundary,
+ // call UnderlyingRelease() on the wrapping CefCToCpp object.
+ StructName* GetStruct() { return &wrapper_struct_.struct_; }
+
+#if DCHECK_IS_ON()
+ // Simple tracking of allocated objects.
+ static base::AtomicRefCount DebugObjCt; // NOLINT(runtime/int)
+#endif
+
+ protected:
+ CefCppToCScoped() {
+ wrapper_struct_.type_ = kWrapperType;
+ wrapper_struct_.wrapper_ = this;
+ memset(GetStruct(), 0, sizeof(StructName));
+
+#if DCHECK_IS_ON()
+ base::AtomicRefCountInc(&DebugObjCt);
+#endif
+ }
+
+ virtual ~CefCppToCScoped() {
+ // Only delete the underlying object if we own it.
+ if (owned_ && wrapper_struct_.object_)
+ delete wrapper_struct_.object_;
+
+#if DCHECK_IS_ON()
+ base::AtomicRefCountDec(&DebugObjCt);
+#endif
+ }
+
+ private:
+ // Used to associate this wrapper object, the underlying object instance and
+ // the structure that will be passed to the other side.
+ struct WrapperStruct {
+ CefWrapperType type_;
+ BaseName* object_;
+ CefCppToCScoped* wrapper_;
+ StructName struct_;
+ };
+
+ void Initialize(BaseName* obj, bool owned) {
+ wrapper_struct_.object_ = obj;
+ owned_ = owned;
+
+ cef_base_scoped_t* base = reinterpret_cast(GetStruct());
+ base->size = sizeof(StructName);
+ if (owned)
+ base->del = struct_del;
+ }
+
+ static WrapperStruct* GetWrapperStruct(StructName* s) {
+ // Offset using the WrapperStruct size instead of individual member sizes
+ // to avoid problems due to platform/compiler differences in structure
+ // padding.
+ return reinterpret_cast(
+ reinterpret_cast(s) -
+ (sizeof(WrapperStruct) - sizeof(StructName)));
+ }
+
+ // Unwrap as the derived type.
+ static CefOwnPtr UnwrapDerivedOwn(CefWrapperType type,
+ StructName* s);
+ static CefRawPtr UnwrapDerivedRaw(CefWrapperType type,
+ StructName* s);
+
+ static void CEF_CALLBACK struct_del(cef_base_scoped_t* base) {
+ DCHECK(base);
+ if (!base)
+ return;
+
+ WrapperStruct* wrapperStruct =
+ GetWrapperStruct(reinterpret_cast(base));
+ // Verify that the wrapper offset was calculated correctly.
+ DCHECK_EQ(kWrapperType, wrapperStruct->type_);
+
+ // Should only be deleting wrappers that own the underlying object.
+ DCHECK(wrapperStruct->wrapper_->owned_);
+ delete wrapperStruct->wrapper_;
+ }
+
+ WrapperStruct wrapper_struct_;
+ bool owned_;
+
+ static CefWrapperType kWrapperType;
+
+ DISALLOW_COPY_AND_ASSIGN(CefCppToCScoped);
+};
+
+#endif // CEF_LIBCEF_DLL_CPPTOC_CPPTOC_SCOPED_H_
diff --git a/libcef_dll/cpptoc/scheme_registrar_cpptoc.cc b/libcef_dll/cpptoc/scheme_registrar_cpptoc.cc
index 50e29de5d..95f68042c 100644
--- a/libcef_dll/cpptoc/scheme_registrar_cpptoc.cc
+++ b/libcef_dll/cpptoc/scheme_registrar_cpptoc.cc
@@ -53,18 +53,25 @@ CefSchemeRegistrarCppToC::CefSchemeRegistrarCppToC() {
GetStruct()->add_custom_scheme = scheme_registrar_add_custom_scheme;
}
-template<> CefRefPtr CefCppToC::UnwrapDerived(
+template<> CefOwnPtr CefCppToCScoped::UnwrapDerivedOwn(
+ CefWrapperType type, cef_scheme_registrar_t* s) {
+ NOTREACHED() << "Unexpected class type: " << type;
+ return CefOwnPtr();
+}
+
+template<> CefRawPtr CefCppToCScoped::UnwrapDerivedRaw(
CefWrapperType type, cef_scheme_registrar_t* s) {
NOTREACHED() << "Unexpected class type: " << type;
return NULL;
}
#if DCHECK_IS_ON()
-template<> base::AtomicRefCount CefCppToC base::AtomicRefCount CefCppToCScoped::DebugObjCt = 0;
#endif
-template<> CefWrapperType CefCppToC CefWrapperType CefCppToCScoped::kWrapperType =
WT_SCHEME_REGISTRAR;
diff --git a/libcef_dll/cpptoc/scheme_registrar_cpptoc.h b/libcef_dll/cpptoc/scheme_registrar_cpptoc.h
index 44daaa32a..857293142 100644
--- a/libcef_dll/cpptoc/scheme_registrar_cpptoc.h
+++ b/libcef_dll/cpptoc/scheme_registrar_cpptoc.h
@@ -20,12 +20,12 @@
#include "include/cef_scheme.h"
#include "include/capi/cef_scheme_capi.h"
-#include "libcef_dll/cpptoc/cpptoc.h"
+#include "libcef_dll/cpptoc/cpptoc_scoped.h"
// Wrap a C++ class with a C structure.
// This class may be instantiated and accessed DLL-side only.
class CefSchemeRegistrarCppToC
- : public CefCppToC {
public:
CefSchemeRegistrarCppToC();
diff --git a/libcef_dll/cpptoc/test/translator_test_cpptoc.cc b/libcef_dll/cpptoc/test/translator_test_cpptoc.cc
index a8807cf57..558021dd7 100644
--- a/libcef_dll/cpptoc/test/translator_test_cpptoc.cc
+++ b/libcef_dll/cpptoc/test/translator_test_cpptoc.cc
@@ -12,10 +12,14 @@
#include
#include "libcef_dll/cpptoc/test/translator_test_cpptoc.h"
-#include "libcef_dll/cpptoc/test/translator_test_object_cpptoc.h"
-#include "libcef_dll/cpptoc/test/translator_test_object_child_cpptoc.h"
-#include "libcef_dll/ctocpp/test/translator_test_handler_ctocpp.h"
-#include "libcef_dll/ctocpp/test/translator_test_handler_child_ctocpp.h"
+#include "libcef_dll/cpptoc/test/translator_test_ref_ptr_library_cpptoc.h"
+#include "libcef_dll/cpptoc/test/translator_test_ref_ptr_library_child_cpptoc.h"
+#include "libcef_dll/cpptoc/test/translator_test_scoped_library_cpptoc.h"
+#include "libcef_dll/cpptoc/test/translator_test_scoped_library_child_cpptoc.h"
+#include "libcef_dll/ctocpp/test/translator_test_ref_ptr_client_ctocpp.h"
+#include "libcef_dll/ctocpp/test/translator_test_ref_ptr_client_child_ctocpp.h"
+#include "libcef_dll/ctocpp/test/translator_test_scoped_client_ctocpp.h"
+#include "libcef_dll/ctocpp/test/translator_test_scoped_client_child_ctocpp.h"
#include "libcef_dll/transfer_util.h"
@@ -653,7 +657,7 @@ size_t CEF_CALLBACK translator_test_get_point_list_size(
return _retval;
}
-struct _cef_translator_test_object_t* CEF_CALLBACK translator_test_get_object(
+struct _cef_translator_test_ref_ptr_library_t* CEF_CALLBACK translator_test_get_ref_ptr_library(
struct _cef_translator_test_t* self, int val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
@@ -662,16 +666,17 @@ struct _cef_translator_test_object_t* CEF_CALLBACK translator_test_get_object(
return NULL;
// Execute
- CefRefPtr _retval = CefTranslatorTestCppToC::Get(
- self)->GetObject(
+ CefRefPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->GetRefPtrLibrary(
val);
// Return type: refptr_same
- return CefTranslatorTestObjectCppToC::Wrap(_retval);
+ return CefTranslatorTestRefPtrLibraryCppToC::Wrap(_retval);
}
-int CEF_CALLBACK translator_test_set_object(struct _cef_translator_test_t* self,
- struct _cef_translator_test_object_t* val) {
+int CEF_CALLBACK translator_test_set_ref_ptr_library(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_ref_ptr_library_t* val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -683,16 +688,16 @@ int CEF_CALLBACK translator_test_set_object(struct _cef_translator_test_t* self,
return 0;
// Execute
- int _retval = CefTranslatorTestCppToC::Get(self)->SetObject(
- CefTranslatorTestObjectCppToC::Unwrap(val));
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetRefPtrLibrary(
+ CefTranslatorTestRefPtrLibraryCppToC::Unwrap(val));
// Return type: simple
return _retval;
}
-struct _cef_translator_test_object_t* CEF_CALLBACK translator_test_set_object_and_return(
+struct _cef_translator_test_ref_ptr_library_t* CEF_CALLBACK translator_test_set_ref_ptr_library_and_return(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_object_t* val) {
+ struct _cef_translator_test_ref_ptr_library_t* val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -704,17 +709,17 @@ struct _cef_translator_test_object_t* CEF_CALLBACK translator_test_set_object_an
return NULL;
// Execute
- CefRefPtr _retval = CefTranslatorTestCppToC::Get(
- self)->SetObjectAndReturn(
- CefTranslatorTestObjectCppToC::Unwrap(val));
+ CefRefPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->SetRefPtrLibraryAndReturn(
+ CefTranslatorTestRefPtrLibraryCppToC::Unwrap(val));
// Return type: refptr_same
- return CefTranslatorTestObjectCppToC::Wrap(_retval);
+ return CefTranslatorTestRefPtrLibraryCppToC::Wrap(_retval);
}
-int CEF_CALLBACK translator_test_set_child_object(
+int CEF_CALLBACK translator_test_set_child_ref_ptr_library(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_object_child_t* val) {
+ struct _cef_translator_test_ref_ptr_library_child_t* val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -726,16 +731,16 @@ int CEF_CALLBACK translator_test_set_child_object(
return 0;
// Execute
- int _retval = CefTranslatorTestCppToC::Get(self)->SetChildObject(
- CefTranslatorTestObjectChildCppToC::Unwrap(val));
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetChildRefPtrLibrary(
+ CefTranslatorTestRefPtrLibraryChildCppToC::Unwrap(val));
// Return type: simple
return _retval;
}
-struct _cef_translator_test_object_t* CEF_CALLBACK translator_test_set_child_object_and_return_parent(
+struct _cef_translator_test_ref_ptr_library_t* CEF_CALLBACK translator_test_set_child_ref_ptr_library_and_return_parent(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_object_child_t* val) {
+ struct _cef_translator_test_ref_ptr_library_child_t* val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -747,17 +752,18 @@ struct _cef_translator_test_object_t* CEF_CALLBACK translator_test_set_child_obj
return NULL;
// Execute
- CefRefPtr _retval = CefTranslatorTestCppToC::Get(
- self)->SetChildObjectAndReturnParent(
- CefTranslatorTestObjectChildCppToC::Unwrap(val));
+ CefRefPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->SetChildRefPtrLibraryAndReturnParent(
+ CefTranslatorTestRefPtrLibraryChildCppToC::Unwrap(val));
// Return type: refptr_same
- return CefTranslatorTestObjectCppToC::Wrap(_retval);
+ return CefTranslatorTestRefPtrLibraryCppToC::Wrap(_retval);
}
-int CEF_CALLBACK translator_test_set_object_list(
+int CEF_CALLBACK translator_test_set_ref_ptr_library_list(
struct _cef_translator_test_t* self, size_t valCount,
- struct _cef_translator_test_object_t* const* val, int val1, int val2) {
+ struct _cef_translator_test_ref_ptr_library_t* const* val, int val1,
+ int val2) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -769,17 +775,17 @@ int CEF_CALLBACK translator_test_set_object_list(
return 0;
// Translate param: val; type: refptr_vec_same_byref_const
- std::vector > valList;
+ std::vector > valList;
if (valCount > 0) {
for (size_t i = 0; i < valCount; ++i) {
- CefRefPtr valVal =
- CefTranslatorTestObjectCppToC::Unwrap(val[i]);
+ CefRefPtr valVal =
+ CefTranslatorTestRefPtrLibraryCppToC::Unwrap(val[i]);
valList.push_back(valVal);
}
}
// Execute
- bool _retval = CefTranslatorTestCppToC::Get(self)->SetObjectList(
+ bool _retval = CefTranslatorTestCppToC::Get(self)->SetRefPtrLibraryList(
valList,
val1,
val2);
@@ -788,9 +794,9 @@ int CEF_CALLBACK translator_test_set_object_list(
return _retval;
}
-int CEF_CALLBACK translator_test_get_object_list_by_ref(
+int CEF_CALLBACK translator_test_get_ref_ptr_library_list_by_ref(
struct _cef_translator_test_t* self, size_t* valCount,
- struct _cef_translator_test_object_t** val, int val1, int val2) {
+ struct _cef_translator_test_ref_ptr_library_t** val, int val1, int val2) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -802,15 +808,15 @@ int CEF_CALLBACK translator_test_get_object_list_by_ref(
return 0;
// Translate param: val; type: refptr_vec_same_byref
- std::vector > valList;
+ std::vector > valList;
if (valCount && *valCount > 0 && val) {
for (size_t i = 0; i < *valCount; ++i) {
- valList.push_back(CefTranslatorTestObjectCppToC::Unwrap(val[i]));
+ valList.push_back(CefTranslatorTestRefPtrLibraryCppToC::Unwrap(val[i]));
}
}
// Execute
- bool _retval = CefTranslatorTestCppToC::Get(self)->GetObjectListByRef(
+ bool _retval = CefTranslatorTestCppToC::Get(self)->GetRefPtrLibraryListByRef(
valList,
val1,
val2);
@@ -820,7 +826,7 @@ int CEF_CALLBACK translator_test_get_object_list_by_ref(
*valCount = std::min(valList.size(), *valCount);
if (*valCount > 0) {
for (size_t i = 0; i < *valCount; ++i) {
- val[i] = CefTranslatorTestObjectCppToC::Wrap(valList[i]);
+ val[i] = CefTranslatorTestRefPtrLibraryCppToC::Wrap(valList[i]);
}
}
}
@@ -829,7 +835,7 @@ int CEF_CALLBACK translator_test_get_object_list_by_ref(
return _retval;
}
-size_t CEF_CALLBACK translator_test_get_object_list_size(
+size_t CEF_CALLBACK translator_test_get_ref_ptr_library_list_size(
struct _cef_translator_test_t* self) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
@@ -838,15 +844,16 @@ size_t CEF_CALLBACK translator_test_get_object_list_size(
return 0;
// Execute
- size_t _retval = CefTranslatorTestCppToC::Get(self)->GetObjectListSize();
+ size_t _retval = CefTranslatorTestCppToC::Get(self)->GetRefPtrLibraryListSize(
+ );
// Return type: simple
return _retval;
}
-int CEF_CALLBACK translator_test_set_handler(
+int CEF_CALLBACK translator_test_set_ref_ptr_client(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_handler_t* val) {
+ struct _cef_translator_test_ref_ptr_client_t* val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -858,16 +865,16 @@ int CEF_CALLBACK translator_test_set_handler(
return 0;
// Execute
- int _retval = CefTranslatorTestCppToC::Get(self)->SetHandler(
- CefTranslatorTestHandlerCToCpp::Wrap(val));
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetRefPtrClient(
+ CefTranslatorTestRefPtrClientCToCpp::Wrap(val));
// Return type: simple
return _retval;
}
-struct _cef_translator_test_handler_t* CEF_CALLBACK translator_test_set_handler_and_return(
+struct _cef_translator_test_ref_ptr_client_t* CEF_CALLBACK translator_test_set_ref_ptr_client_and_return(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_handler_t* val) {
+ struct _cef_translator_test_ref_ptr_client_t* val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -879,17 +886,17 @@ struct _cef_translator_test_handler_t* CEF_CALLBACK translator_test_set_handler_
return NULL;
// Execute
- CefRefPtr _retval = CefTranslatorTestCppToC::Get(
- self)->SetHandlerAndReturn(
- CefTranslatorTestHandlerCToCpp::Wrap(val));
+ CefRefPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->SetRefPtrClientAndReturn(
+ CefTranslatorTestRefPtrClientCToCpp::Wrap(val));
// Return type: refptr_diff
- return CefTranslatorTestHandlerCToCpp::Unwrap(_retval);
+ return CefTranslatorTestRefPtrClientCToCpp::Unwrap(_retval);
}
-int CEF_CALLBACK translator_test_set_child_handler(
+int CEF_CALLBACK translator_test_set_child_ref_ptr_client(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_handler_child_t* val) {
+ struct _cef_translator_test_ref_ptr_client_child_t* val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -901,16 +908,16 @@ int CEF_CALLBACK translator_test_set_child_handler(
return 0;
// Execute
- int _retval = CefTranslatorTestCppToC::Get(self)->SetChildHandler(
- CefTranslatorTestHandlerChildCToCpp::Wrap(val));
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetChildRefPtrClient(
+ CefTranslatorTestRefPtrClientChildCToCpp::Wrap(val));
// Return type: simple
return _retval;
}
-struct _cef_translator_test_handler_t* CEF_CALLBACK translator_test_set_child_handler_and_return_parent(
+struct _cef_translator_test_ref_ptr_client_t* CEF_CALLBACK translator_test_set_child_ref_ptr_client_and_return_parent(
struct _cef_translator_test_t* self,
- struct _cef_translator_test_handler_child_t* val) {
+ struct _cef_translator_test_ref_ptr_client_child_t* val) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -922,17 +929,18 @@ struct _cef_translator_test_handler_t* CEF_CALLBACK translator_test_set_child_ha
return NULL;
// Execute
- CefRefPtr _retval = CefTranslatorTestCppToC::Get(
- self)->SetChildHandlerAndReturnParent(
- CefTranslatorTestHandlerChildCToCpp::Wrap(val));
+ CefRefPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->SetChildRefPtrClientAndReturnParent(
+ CefTranslatorTestRefPtrClientChildCToCpp::Wrap(val));
// Return type: refptr_diff
- return CefTranslatorTestHandlerCToCpp::Unwrap(_retval);
+ return CefTranslatorTestRefPtrClientCToCpp::Unwrap(_retval);
}
-int CEF_CALLBACK translator_test_set_handler_list(
+int CEF_CALLBACK translator_test_set_ref_ptr_client_list(
struct _cef_translator_test_t* self, size_t valCount,
- struct _cef_translator_test_handler_t* const* val, int val1, int val2) {
+ struct _cef_translator_test_ref_ptr_client_t* const* val, int val1,
+ int val2) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -944,17 +952,17 @@ int CEF_CALLBACK translator_test_set_handler_list(
return 0;
// Translate param: val; type: refptr_vec_diff_byref_const
- std::vector > valList;
+ std::vector > valList;
if (valCount > 0) {
for (size_t i = 0; i < valCount; ++i) {
- CefRefPtr valVal =
- CefTranslatorTestHandlerCToCpp::Wrap(val[i]);
+ CefRefPtr valVal =
+ CefTranslatorTestRefPtrClientCToCpp::Wrap(val[i]);
valList.push_back(valVal);
}
}
// Execute
- bool _retval = CefTranslatorTestCppToC::Get(self)->SetHandlerList(
+ bool _retval = CefTranslatorTestCppToC::Get(self)->SetRefPtrClientList(
valList,
val1,
val2);
@@ -963,11 +971,11 @@ int CEF_CALLBACK translator_test_set_handler_list(
return _retval;
}
-int CEF_CALLBACK translator_test_get_handler_list_by_ref(
+int CEF_CALLBACK translator_test_get_ref_ptr_client_list_by_ref(
struct _cef_translator_test_t* self, size_t* valCount,
- struct _cef_translator_test_handler_t** val,
- struct _cef_translator_test_handler_t* val1,
- struct _cef_translator_test_handler_t* val2) {
+ struct _cef_translator_test_ref_ptr_client_t** val,
+ struct _cef_translator_test_ref_ptr_client_t* val1,
+ struct _cef_translator_test_ref_ptr_client_t* val2) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
DCHECK(self);
@@ -987,25 +995,25 @@ int CEF_CALLBACK translator_test_get_handler_list_by_ref(
return 0;
// Translate param: val; type: refptr_vec_diff_byref
- std::vector > valList;
+ std::vector > valList;
if (valCount && *valCount > 0 && val) {
for (size_t i = 0; i < *valCount; ++i) {
- valList.push_back(CefTranslatorTestHandlerCToCpp::Wrap(val[i]));
+ valList.push_back(CefTranslatorTestRefPtrClientCToCpp::Wrap(val[i]));
}
}
// Execute
- bool _retval = CefTranslatorTestCppToC::Get(self)->GetHandlerListByRef(
+ bool _retval = CefTranslatorTestCppToC::Get(self)->GetRefPtrClientListByRef(
valList,
- CefTranslatorTestHandlerCToCpp::Wrap(val1),
- CefTranslatorTestHandlerCToCpp::Wrap(val2));
+ CefTranslatorTestRefPtrClientCToCpp::Wrap(val1),
+ CefTranslatorTestRefPtrClientCToCpp::Wrap(val2));
// Restore param: val; type: refptr_vec_diff_byref
if (valCount && val) {
*valCount = std::min(valList.size(), *valCount);
if (*valCount > 0) {
for (size_t i = 0; i < *valCount; ++i) {
- val[i] = CefTranslatorTestHandlerCToCpp::Unwrap(valList[i]);
+ val[i] = CefTranslatorTestRefPtrClientCToCpp::Unwrap(valList[i]);
}
}
}
@@ -1014,7 +1022,7 @@ int CEF_CALLBACK translator_test_get_handler_list_by_ref(
return _retval;
}
-size_t CEF_CALLBACK translator_test_get_handler_list_size(
+size_t CEF_CALLBACK translator_test_get_ref_ptr_client_list_size(
struct _cef_translator_test_t* self) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
@@ -1023,12 +1031,385 @@ size_t CEF_CALLBACK translator_test_get_handler_list_size(
return 0;
// Execute
- size_t _retval = CefTranslatorTestCppToC::Get(self)->GetHandlerListSize();
+ size_t _retval = CefTranslatorTestCppToC::Get(self)->GetRefPtrClientListSize(
+ );
// Return type: simple
return _retval;
}
+struct _cef_translator_test_scoped_library_t* CEF_CALLBACK translator_test_get_own_ptr_library(
+ struct _cef_translator_test_t* self, int val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return NULL;
+
+ // Execute
+ CefOwnPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->GetOwnPtrLibrary(
+ val);
+
+ // Return type: ownptr_same
+ return CefTranslatorTestScopedLibraryCppToC::WrapOwn(OWN_PASS(_retval));
+}
+
+int CEF_CALLBACK translator_test_set_own_ptr_library(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: ownptr_same
+ DCHECK(val);
+ if (!val)
+ return 0;
+
+ // Execute
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetOwnPtrLibrary(
+ CefTranslatorTestScopedLibraryCppToC::UnwrapOwn(val));
+
+ // Return type: simple
+ return _retval;
+}
+
+struct _cef_translator_test_scoped_library_t* CEF_CALLBACK translator_test_set_own_ptr_library_and_return(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return NULL;
+ // Verify param: val; type: ownptr_same
+ DCHECK(val);
+ if (!val)
+ return NULL;
+
+ // Execute
+ CefOwnPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->SetOwnPtrLibraryAndReturn(
+ CefTranslatorTestScopedLibraryCppToC::UnwrapOwn(val));
+
+ // Return type: ownptr_same
+ return CefTranslatorTestScopedLibraryCppToC::WrapOwn(OWN_PASS(_retval));
+}
+
+int CEF_CALLBACK translator_test_set_child_own_ptr_library(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_child_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: ownptr_same
+ DCHECK(val);
+ if (!val)
+ return 0;
+
+ // Execute
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetChildOwnPtrLibrary(
+ CefTranslatorTestScopedLibraryChildCppToC::UnwrapOwn(val));
+
+ // Return type: simple
+ return _retval;
+}
+
+struct _cef_translator_test_scoped_library_t* CEF_CALLBACK translator_test_set_child_own_ptr_library_and_return_parent(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_child_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return NULL;
+ // Verify param: val; type: ownptr_same
+ DCHECK(val);
+ if (!val)
+ return NULL;
+
+ // Execute
+ CefOwnPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->SetChildOwnPtrLibraryAndReturnParent(
+ CefTranslatorTestScopedLibraryChildCppToC::UnwrapOwn(val));
+
+ // Return type: ownptr_same
+ return CefTranslatorTestScopedLibraryCppToC::WrapOwn(OWN_PASS(_retval));
+}
+
+int CEF_CALLBACK translator_test_set_own_ptr_client(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: ownptr_diff
+ DCHECK(val);
+ if (!val)
+ return 0;
+
+ // Translate param: val; type: ownptr_diff
+ CefOwnPtr valPtr(
+ CefTranslatorTestScopedClientCToCpp::Wrap(val));
+
+ // Execute
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetOwnPtrClient(
+ OWN_PASS(valPtr));
+
+ // Return type: simple
+ return _retval;
+}
+
+struct _cef_translator_test_scoped_client_t* CEF_CALLBACK translator_test_set_own_ptr_client_and_return(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return NULL;
+ // Verify param: val; type: ownptr_diff
+ DCHECK(val);
+ if (!val)
+ return NULL;
+
+ // Translate param: val; type: ownptr_diff
+ CefOwnPtr valPtr(
+ CefTranslatorTestScopedClientCToCpp::Wrap(val));
+
+ // Execute
+ CefOwnPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->SetOwnPtrClientAndReturn(
+ OWN_PASS(valPtr));
+
+ // Return type: ownptr_diff
+ return CefTranslatorTestScopedClientCToCpp::UnwrapOwn(OWN_PASS(_retval));
+}
+
+int CEF_CALLBACK translator_test_set_child_own_ptr_client(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_child_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: ownptr_diff
+ DCHECK(val);
+ if (!val)
+ return 0;
+
+ // Translate param: val; type: ownptr_diff
+ CefOwnPtr valPtr(
+ CefTranslatorTestScopedClientChildCToCpp::Wrap(val));
+
+ // Execute
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetChildOwnPtrClient(
+ OWN_PASS(valPtr));
+
+ // Return type: simple
+ return _retval;
+}
+
+struct _cef_translator_test_scoped_client_t* CEF_CALLBACK translator_test_set_child_own_ptr_client_and_return_parent(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_child_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return NULL;
+ // Verify param: val; type: ownptr_diff
+ DCHECK(val);
+ if (!val)
+ return NULL;
+
+ // Translate param: val; type: ownptr_diff
+ CefOwnPtr valPtr(
+ CefTranslatorTestScopedClientChildCToCpp::Wrap(val));
+
+ // Execute
+ CefOwnPtr _retval =
+ CefTranslatorTestCppToC::Get(self)->SetChildOwnPtrClientAndReturnParent(
+ OWN_PASS(valPtr));
+
+ // Return type: ownptr_diff
+ return CefTranslatorTestScopedClientCToCpp::UnwrapOwn(OWN_PASS(_retval));
+}
+
+int CEF_CALLBACK translator_test_set_raw_ptr_library(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: rawptr_same
+ DCHECK(val);
+ if (!val)
+ return 0;
+
+ // Execute
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetRawPtrLibrary(
+ CefTranslatorTestScopedLibraryCppToC::UnwrapRaw(val));
+
+ // Return type: simple
+ return _retval;
+}
+
+int CEF_CALLBACK translator_test_set_child_raw_ptr_library(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_library_child_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: rawptr_same
+ DCHECK(val);
+ if (!val)
+ return 0;
+
+ // Execute
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetChildRawPtrLibrary(
+ CefTranslatorTestScopedLibraryChildCppToC::UnwrapRaw(val));
+
+ // Return type: simple
+ return _retval;
+}
+
+int CEF_CALLBACK translator_test_set_raw_ptr_library_list(
+ struct _cef_translator_test_t* self, size_t valCount,
+ struct _cef_translator_test_scoped_library_t* const* val, int val1,
+ int val2) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: rawptr_vec_same_byref_const
+ DCHECK(valCount == 0 || val);
+ if (valCount > 0 && !val)
+ return 0;
+
+ // Translate param: val; type: rawptr_vec_same_byref_const
+ std::vector > valList;
+ if (valCount > 0) {
+ for (size_t i = 0; i < valCount; ++i) {
+ CefRawPtr valVal =
+ CefTranslatorTestScopedLibraryCppToC::UnwrapRaw(val[i]);
+ valList.push_back(valVal);
+ }
+ }
+
+ // Execute
+ bool _retval = CefTranslatorTestCppToC::Get(self)->SetRawPtrLibraryList(
+ valList,
+ val1,
+ val2);
+
+ // Return type: bool
+ return _retval;
+}
+
+int CEF_CALLBACK translator_test_set_raw_ptr_client(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: rawptr_diff
+ DCHECK(val);
+ if (!val)
+ return 0;
+
+ // Translate param: val; type: rawptr_diff
+ CefOwnPtr valPtr(
+ CefTranslatorTestScopedClientCToCpp::Wrap(val));
+
+ // Execute
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetRawPtrClient(
+ valPtr.get());
+
+ // Return type: simple
+ return _retval;
+}
+
+int CEF_CALLBACK translator_test_set_child_raw_ptr_client(
+ struct _cef_translator_test_t* self,
+ struct _cef_translator_test_scoped_client_child_t* val) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: rawptr_diff
+ DCHECK(val);
+ if (!val)
+ return 0;
+
+ // Translate param: val; type: rawptr_diff
+ CefOwnPtr valPtr(
+ CefTranslatorTestScopedClientChildCToCpp::Wrap(val));
+
+ // Execute
+ int _retval = CefTranslatorTestCppToC::Get(self)->SetChildRawPtrClient(
+ valPtr.get());
+
+ // Return type: simple
+ return _retval;
+}
+
+int CEF_CALLBACK translator_test_set_raw_ptr_client_list(
+ struct _cef_translator_test_t* self, size_t valCount,
+ struct _cef_translator_test_scoped_client_t* const* val, int val1,
+ int val2) {
+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
+
+ DCHECK(self);
+ if (!self)
+ return 0;
+ // Verify param: val; type: rawptr_vec_diff_byref_const
+ DCHECK(valCount == 0 || val);
+ if (valCount > 0 && !val)
+ return 0;
+
+ // Translate param: val; type: rawptr_vec_diff_byref_const
+ std::vector > valList;
+ if (valCount > 0) {
+ for (size_t i = 0; i < valCount; ++i) {
+ CefRawPtr valVal =
+ CefTranslatorTestScopedClientCToCpp::Wrap(val[i]).release();
+ valList.push_back(valVal);
+ }
+ }
+
+ // Execute
+ bool _retval = CefTranslatorTestCppToC::Get(self)->SetRawPtrClientList(
+ valList,
+ val1,
+ val2);
+
+ // Restore param: val; type: rawptr_vec_diff_byref_const
+ if (valCount > 0) {
+ for (size_t i = 0; i < valCount; ++i) {
+ delete valList[i];
+ }
+ }
+
+ // Return type: bool
+ return _retval;
+}
+
} // namespace
@@ -1066,24 +1447,58 @@ CefTranslatorTestCppToC::CefTranslatorTestCppToC() {
GetStruct()->set_point_list = translator_test_set_point_list;
GetStruct()->get_point_list_by_ref = translator_test_get_point_list_by_ref;
GetStruct()->get_point_list_size = translator_test_get_point_list_size;
- GetStruct()->get_object = translator_test_get_object;
- GetStruct()->set_object = translator_test_set_object;
- GetStruct()->set_object_and_return = translator_test_set_object_and_return;
- GetStruct()->set_child_object = translator_test_set_child_object;
- GetStruct()->set_child_object_and_return_parent =
- translator_test_set_child_object_and_return_parent;
- GetStruct()->set_object_list = translator_test_set_object_list;
- GetStruct()->get_object_list_by_ref = translator_test_get_object_list_by_ref;
- GetStruct()->get_object_list_size = translator_test_get_object_list_size;
- GetStruct()->set_handler = translator_test_set_handler;
- GetStruct()->set_handler_and_return = translator_test_set_handler_and_return;
- GetStruct()->set_child_handler = translator_test_set_child_handler;
- GetStruct()->set_child_handler_and_return_parent =
- translator_test_set_child_handler_and_return_parent;
- GetStruct()->set_handler_list = translator_test_set_handler_list;
- GetStruct()->get_handler_list_by_ref =
- translator_test_get_handler_list_by_ref;
- GetStruct()->get_handler_list_size = translator_test_get_handler_list_size;
+ GetStruct()->get_ref_ptr_library = translator_test_get_ref_ptr_library;
+ GetStruct()->set_ref_ptr_library = translator_test_set_ref_ptr_library;
+ GetStruct()->set_ref_ptr_library_and_return =
+ translator_test_set_ref_ptr_library_and_return;
+ GetStruct()->set_child_ref_ptr_library =
+ translator_test_set_child_ref_ptr_library;
+ GetStruct()->set_child_ref_ptr_library_and_return_parent =
+ translator_test_set_child_ref_ptr_library_and_return_parent;
+ GetStruct()->set_ref_ptr_library_list =
+ translator_test_set_ref_ptr_library_list;
+ GetStruct()->get_ref_ptr_library_list_by_ref =
+ translator_test_get_ref_ptr_library_list_by_ref;
+ GetStruct()->get_ref_ptr_library_list_size =
+ translator_test_get_ref_ptr_library_list_size;
+ GetStruct()->set_ref_ptr_client = translator_test_set_ref_ptr_client;
+ GetStruct()->set_ref_ptr_client_and_return =
+ translator_test_set_ref_ptr_client_and_return;
+ GetStruct()->set_child_ref_ptr_client =
+ translator_test_set_child_ref_ptr_client;
+ GetStruct()->set_child_ref_ptr_client_and_return_parent =
+ translator_test_set_child_ref_ptr_client_and_return_parent;
+ GetStruct()->set_ref_ptr_client_list =
+ translator_test_set_ref_ptr_client_list;
+ GetStruct()->get_ref_ptr_client_list_by_ref =
+ translator_test_get_ref_ptr_client_list_by_ref;
+ GetStruct()->get_ref_ptr_client_list_size =
+ translator_test_get_ref_ptr_client_list_size;
+ GetStruct()->get_own_ptr_library = translator_test_get_own_ptr_library;
+ GetStruct()->set_own_ptr_library = translator_test_set_own_ptr_library;
+ GetStruct()->set_own_ptr_library_and_return =
+ translator_test_set_own_ptr_library_and_return;
+ GetStruct()->set_child_own_ptr_library =
+ translator_test_set_child_own_ptr_library;
+ GetStruct()->set_child_own_ptr_library_and_return_parent =
+ translator_test_set_child_own_ptr_library_and_return_parent;
+ GetStruct()->set_own_ptr_client = translator_test_set_own_ptr_client;
+ GetStruct()->set_own_ptr_client_and_return =
+ translator_test_set_own_ptr_client_and_return;
+ GetStruct()->set_child_own_ptr_client =
+ translator_test_set_child_own_ptr_client;
+ GetStruct()->set_child_own_ptr_client_and_return_parent =
+ translator_test_set_child_own_ptr_client_and_return_parent;
+ GetStruct()->set_raw_ptr_library = translator_test_set_raw_ptr_library;
+ GetStruct()->set_child_raw_ptr_library =
+ translator_test_set_child_raw_ptr_library;
+ GetStruct()->set_raw_ptr_library_list =
+ translator_test_set_raw_ptr_library_list;
+ GetStruct()->set_raw_ptr_client = translator_test_set_raw_ptr_client;
+ GetStruct()->set_child_raw_ptr_client =
+ translator_test_set_child_raw_ptr_client;
+ GetStruct()->set_raw_ptr_client_list =
+ translator_test_set_raw_ptr_client_list;
}
template<> CefRefPtr CefCppToCGetOtherValue();
-
- // Return type: simple
- return _retval;
-}
-
-int CEF_CALLBACK translator_test_handler_child_get_value(
- struct _cef_translator_test_handler_t* self) {
- // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-
- DCHECK(self);
- if (!self)
- return 0;
-
- // Execute
- int _retval = CefTranslatorTestHandlerChildCppToC::Get(
- reinterpret_cast(self))->GetValue(
- );
-
- // Return type: simple
- return _retval;
-}
-
-} // namespace
-
-
-// CONSTRUCTOR - Do not edit by hand.
-
-CefTranslatorTestHandlerChildCppToC::CefTranslatorTestHandlerChildCppToC() {
- GetStruct()->get_other_value = translator_test_handler_child_get_other_value;
- GetStruct()->base.get_value = translator_test_handler_child_get_value;
-}
-
-template<> CefRefPtr CefCppToC::UnwrapDerived(CefWrapperType type,
- cef_translator_test_handler_child_t* s) {
- NOTREACHED() << "Unexpected class type: " << type;
- return NULL;
-}
-
-#if DCHECK_IS_ON()
-template<> base::AtomicRefCount CefCppToC::DebugObjCt = 0;
-#endif
-
-template<> CefWrapperType CefCppToC::kWrapperType =
- WT_TRANSLATOR_TEST_HANDLER_CHILD;
diff --git a/libcef_dll/cpptoc/test/translator_test_handler_cpptoc.cc b/libcef_dll/cpptoc/test/translator_test_handler_cpptoc.cc
deleted file mode 100644
index 01a6caeaa..000000000
--- a/libcef_dll/cpptoc/test/translator_test_handler_cpptoc.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2017 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/cpptoc/test/translator_test_handler_cpptoc.h"
-#include "libcef_dll/cpptoc/test/translator_test_handler_child_cpptoc.h"
-
-
-namespace {
-
-// MEMBER FUNCTIONS - Body may be edited by hand.
-
-int CEF_CALLBACK translator_test_handler_get_value(
- struct _cef_translator_test_handler_t* self) {
- // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-
- DCHECK(self);
- if (!self)
- return 0;
-
- // Execute
- int _retval = CefTranslatorTestHandlerCppToC::Get(self)->GetValue();
-
- // Return type: simple
- return _retval;
-}
-
-} // namespace
-
-
-// CONSTRUCTOR - Do not edit by hand.
-
-CefTranslatorTestHandlerCppToC::CefTranslatorTestHandlerCppToC() {
- GetStruct()->get_value = translator_test_handler_get_value;
-}
-
-template<> CefRefPtr