mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Add support for V8 ArrayBuffers (issue #244)
This commit is contained in:
committed by
Marshall Greenblatt
parent
bb28b85bdd
commit
4315f3b724
63
libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc
Normal file
63
libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc
Normal file
@ -0,0 +1,63 @@
|
||||
// Copyright (c) 2018 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.
|
||||
//
|
||||
// $hash=4518c58051d90673ecc1fc2b9e29b70467b36c97$
|
||||
//
|
||||
|
||||
#include "libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.h"
|
||||
|
||||
// VIRTUAL METHODS - Body may be edited by hand.
|
||||
|
||||
void CefV8ArrayBufferReleaseCallbackCToCpp::ReleaseBuffer(void* buffer) {
|
||||
cef_v8array_buffer_release_callback_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, release_buffer))
|
||||
return;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: buffer; type: simple_byaddr
|
||||
DCHECK(buffer);
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
// Execute
|
||||
_struct->release_buffer(_struct, buffer);
|
||||
}
|
||||
|
||||
// CONSTRUCTOR - Do not edit by hand.
|
||||
|
||||
CefV8ArrayBufferReleaseCallbackCToCpp::CefV8ArrayBufferReleaseCallbackCToCpp() {
|
||||
}
|
||||
|
||||
template <>
|
||||
cef_v8array_buffer_release_callback_t*
|
||||
CefCToCppRefCounted<CefV8ArrayBufferReleaseCallbackCToCpp,
|
||||
CefV8ArrayBufferReleaseCallback,
|
||||
cef_v8array_buffer_release_callback_t>::
|
||||
UnwrapDerived(CefWrapperType type, CefV8ArrayBufferReleaseCallback* c) {
|
||||
NOTREACHED() << "Unexpected class type: " << type;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if DCHECK_IS_ON()
|
||||
template <>
|
||||
base::AtomicRefCount CefCToCppRefCounted<
|
||||
CefV8ArrayBufferReleaseCallbackCToCpp,
|
||||
CefV8ArrayBufferReleaseCallback,
|
||||
cef_v8array_buffer_release_callback_t>::DebugObjCt ATOMIC_DECLARATION;
|
||||
#endif
|
||||
|
||||
template <>
|
||||
CefWrapperType
|
||||
CefCToCppRefCounted<CefV8ArrayBufferReleaseCallbackCToCpp,
|
||||
CefV8ArrayBufferReleaseCallback,
|
||||
cef_v8array_buffer_release_callback_t>::kWrapperType =
|
||||
WT_V8ARRAY_BUFFER_RELEASE_CALLBACK;
|
40
libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.h
Normal file
40
libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.h
Normal file
@ -0,0 +1,40 @@
|
||||
// Copyright (c) 2018 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.
|
||||
//
|
||||
// $hash=6c5b7fe181699426e51ca11b6216a1ec56e36032$
|
||||
//
|
||||
|
||||
#ifndef CEF_LIBCEF_DLL_CTOCPP_V8ARRAY_BUFFER_RELEASE_CALLBACK_CTOCPP_H_
|
||||
#define CEF_LIBCEF_DLL_CTOCPP_V8ARRAY_BUFFER_RELEASE_CALLBACK_CTOCPP_H_
|
||||
#pragma once
|
||||
|
||||
#if !defined(BUILDING_CEF_SHARED)
|
||||
#error This file can be included DLL-side only
|
||||
#endif
|
||||
|
||||
#include "include/capi/cef_v8_capi.h"
|
||||
#include "include/cef_v8.h"
|
||||
#include "libcef_dll/ctocpp/ctocpp_ref_counted.h"
|
||||
|
||||
// Wrap a C structure with a C++ class.
|
||||
// This class may be instantiated and accessed DLL-side only.
|
||||
class CefV8ArrayBufferReleaseCallbackCToCpp
|
||||
: public CefCToCppRefCounted<CefV8ArrayBufferReleaseCallbackCToCpp,
|
||||
CefV8ArrayBufferReleaseCallback,
|
||||
cef_v8array_buffer_release_callback_t> {
|
||||
public:
|
||||
CefV8ArrayBufferReleaseCallbackCToCpp();
|
||||
|
||||
// CefV8ArrayBufferReleaseCallback methods.
|
||||
void ReleaseBuffer(void* buffer) override;
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_DLL_CTOCPP_V8ARRAY_BUFFER_RELEASE_CALLBACK_CTOCPP_H_
|
@ -9,12 +9,13 @@
|
||||
// implementations. See the translator.README.txt file in the tools directory
|
||||
// for more information.
|
||||
//
|
||||
// $hash=54a9512b67fa17d33626e83e249fa27037bd92bc$
|
||||
// $hash=c08a6af7e4295bc574af45eb798e84e546f2e1a0$
|
||||
//
|
||||
|
||||
#include "libcef_dll/ctocpp/v8value_ctocpp.h"
|
||||
#include "libcef_dll/cpptoc/base_ref_counted_cpptoc.h"
|
||||
#include "libcef_dll/cpptoc/v8accessor_cpptoc.h"
|
||||
#include "libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.h"
|
||||
#include "libcef_dll/cpptoc/v8handler_cpptoc.h"
|
||||
#include "libcef_dll/cpptoc/v8interceptor_cpptoc.h"
|
||||
#include "libcef_dll/ctocpp/v8context_ctocpp.h"
|
||||
@ -131,6 +132,30 @@ CefRefPtr<CefV8Value> CefV8Value::CreateArray(int length) {
|
||||
return CefV8ValueCToCpp::Wrap(_retval);
|
||||
}
|
||||
|
||||
CefRefPtr<CefV8Value> CefV8Value::CreateArrayBuffer(
|
||||
void* buffer,
|
||||
size_t length,
|
||||
CefRefPtr<CefV8ArrayBufferReleaseCallback> release_callback) {
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Verify param: buffer; type: simple_byaddr
|
||||
DCHECK(buffer);
|
||||
if (!buffer)
|
||||
return NULL;
|
||||
// Verify param: release_callback; type: refptr_diff
|
||||
DCHECK(release_callback.get());
|
||||
if (!release_callback.get())
|
||||
return NULL;
|
||||
|
||||
// Execute
|
||||
cef_v8value_t* _retval = cef_v8value_create_array_buffer(
|
||||
buffer, length,
|
||||
CefV8ArrayBufferReleaseCallbackCppToC::Wrap(release_callback));
|
||||
|
||||
// Return type: refptr_same
|
||||
return CefV8ValueCToCpp::Wrap(_retval);
|
||||
}
|
||||
|
||||
CefRefPtr<CefV8Value> CefV8Value::CreateFunction(
|
||||
const CefString& name,
|
||||
CefRefPtr<CefV8Handler> handler) {
|
||||
@ -309,6 +334,20 @@ bool CefV8ValueCToCpp::IsArray() {
|
||||
return _retval ? true : false;
|
||||
}
|
||||
|
||||
bool CefV8ValueCToCpp::IsArrayBuffer() {
|
||||
cef_v8value_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, is_array_buffer))
|
||||
return false;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Execute
|
||||
int _retval = _struct->is_array_buffer(_struct);
|
||||
|
||||
// Return type: bool
|
||||
return _retval ? true : false;
|
||||
}
|
||||
|
||||
bool CefV8ValueCToCpp::IsFunction() {
|
||||
cef_v8value_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, is_function))
|
||||
@ -784,6 +823,36 @@ int CefV8ValueCToCpp::GetArrayLength() {
|
||||
return _retval;
|
||||
}
|
||||
|
||||
CefRefPtr<CefV8ArrayBufferReleaseCallback>
|
||||
CefV8ValueCToCpp::GetArrayBufferReleaseCallback() {
|
||||
cef_v8value_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, get_array_buffer_release_callback))
|
||||
return NULL;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Execute
|
||||
cef_v8array_buffer_release_callback_t* _retval =
|
||||
_struct->get_array_buffer_release_callback(_struct);
|
||||
|
||||
// Return type: refptr_diff
|
||||
return CefV8ArrayBufferReleaseCallbackCppToC::Unwrap(_retval);
|
||||
}
|
||||
|
||||
bool CefV8ValueCToCpp::NeuterArrayBuffer() {
|
||||
cef_v8value_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, neuter_array_buffer))
|
||||
return false;
|
||||
|
||||
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||
|
||||
// Execute
|
||||
int _retval = _struct->neuter_array_buffer(_struct);
|
||||
|
||||
// Return type: bool
|
||||
return _retval ? true : false;
|
||||
}
|
||||
|
||||
CefString CefV8ValueCToCpp::GetFunctionName() {
|
||||
cef_v8value_t* _struct = GetStruct();
|
||||
if (CEF_MEMBER_MISSING(_struct, get_function_name))
|
||||
|
@ -9,7 +9,7 @@
|
||||
// implementations. See the translator.README.txt file in the tools directory
|
||||
// for more information.
|
||||
//
|
||||
// $hash=8a913ff3ac0743621e969fed20ce713804ac4f16$
|
||||
// $hash=72b98313f1c00f864fd01694eb741f066ae2c5f4$
|
||||
//
|
||||
|
||||
#ifndef CEF_LIBCEF_DLL_CTOCPP_V8VALUE_CTOCPP_H_
|
||||
@ -44,6 +44,7 @@ class CefV8ValueCToCpp
|
||||
bool IsString() OVERRIDE;
|
||||
bool IsObject() OVERRIDE;
|
||||
bool IsArray() OVERRIDE;
|
||||
bool IsArrayBuffer() OVERRIDE;
|
||||
bool IsFunction() OVERRIDE;
|
||||
bool IsSame(CefRefPtr<CefV8Value> that) OVERRIDE;
|
||||
bool GetBoolValue() OVERRIDE;
|
||||
@ -77,6 +78,9 @@ class CefV8ValueCToCpp
|
||||
int GetExternallyAllocatedMemory() OVERRIDE;
|
||||
int AdjustExternallyAllocatedMemory(int change_in_bytes) OVERRIDE;
|
||||
int GetArrayLength() OVERRIDE;
|
||||
CefRefPtr<CefV8ArrayBufferReleaseCallback> GetArrayBufferReleaseCallback()
|
||||
OVERRIDE;
|
||||
bool NeuterArrayBuffer() OVERRIDE;
|
||||
CefString GetFunctionName() OVERRIDE;
|
||||
CefRefPtr<CefV8Handler> GetFunctionHandler() OVERRIDE;
|
||||
CefRefPtr<CefV8Value> ExecuteFunction(
|
||||
|
Reference in New Issue
Block a user