Merge pull request from GHSA-h9jc-284h-533g
This commit is contained in:
parent
d0f19d8369
commit
e4c82fdf2d
2 changed files with 13 additions and 11 deletions
|
@ -398,19 +398,19 @@ v8::MaybeLocal<v8::Object> CreateProxyForAPI(
|
||||||
context_bridge::ObjectCache* object_cache,
|
context_bridge::ObjectCache* object_cache,
|
||||||
int recursion_depth) {
|
int recursion_depth) {
|
||||||
gin_helper::Dictionary api(source_context->GetIsolate(), api_object);
|
gin_helper::Dictionary api(source_context->GetIsolate(), api_object);
|
||||||
gin_helper::Dictionary proxy =
|
|
||||||
gin::Dictionary::CreateEmpty(destination_context->GetIsolate());
|
|
||||||
object_cache->CacheProxiedObject(api.GetHandle(), proxy.GetHandle());
|
|
||||||
auto maybe_keys = api.GetHandle()->GetOwnPropertyNames(
|
|
||||||
source_context,
|
|
||||||
static_cast<v8::PropertyFilter>(v8::ONLY_ENUMERABLE | v8::SKIP_SYMBOLS),
|
|
||||||
v8::KeyConversionMode::kConvertToString);
|
|
||||||
if (maybe_keys.IsEmpty())
|
|
||||||
return v8::MaybeLocal<v8::Object>(proxy.GetHandle());
|
|
||||||
auto keys = maybe_keys.ToLocalChecked();
|
|
||||||
|
|
||||||
v8::Context::Scope destination_context_scope(destination_context);
|
v8::Context::Scope destination_context_scope(destination_context);
|
||||||
{
|
{
|
||||||
|
gin_helper::Dictionary proxy =
|
||||||
|
gin::Dictionary::CreateEmpty(destination_context->GetIsolate());
|
||||||
|
object_cache->CacheProxiedObject(api.GetHandle(), proxy.GetHandle());
|
||||||
|
auto maybe_keys = api.GetHandle()->GetOwnPropertyNames(
|
||||||
|
source_context,
|
||||||
|
static_cast<v8::PropertyFilter>(v8::ONLY_ENUMERABLE | v8::SKIP_SYMBOLS),
|
||||||
|
v8::KeyConversionMode::kConvertToString);
|
||||||
|
if (maybe_keys.IsEmpty())
|
||||||
|
return v8::MaybeLocal<v8::Object>(proxy.GetHandle());
|
||||||
|
auto keys = maybe_keys.ToLocalChecked();
|
||||||
|
|
||||||
uint32_t length = keys->Length();
|
uint32_t length = keys->Length();
|
||||||
std::string key_str;
|
std::string key_str;
|
||||||
for (uint32_t i = 0; i < length; i++) {
|
for (uint32_t i = 0; i < length; i++) {
|
||||||
|
|
|
@ -422,6 +422,7 @@ describe('contextBridge', () => {
|
||||||
string: 'string',
|
string: 'string',
|
||||||
boolean: true,
|
boolean: true,
|
||||||
arr: [123, 'string', true, ['foo']],
|
arr: [123, 'string', true, ['foo']],
|
||||||
|
getObject: () => ({ thing: 123 }),
|
||||||
getNumber: () => 123,
|
getNumber: () => 123,
|
||||||
getString: () => 'string',
|
getString: () => 'string',
|
||||||
getBoolean: () => true,
|
getBoolean: () => true,
|
||||||
|
@ -455,6 +456,7 @@ describe('contextBridge', () => {
|
||||||
[example.arr[3][0], String],
|
[example.arr[3][0], String],
|
||||||
[example.getNumber, Function],
|
[example.getNumber, Function],
|
||||||
[example.getNumber(), Number],
|
[example.getNumber(), Number],
|
||||||
|
[example.getObject(), Object],
|
||||||
[example.getString(), String],
|
[example.getString(), String],
|
||||||
[example.getBoolean(), Boolean],
|
[example.getBoolean(), Boolean],
|
||||||
[example.getArr(), Array],
|
[example.getArr(), Array],
|
||||||
|
|
Loading…
Add table
Reference in a new issue