![trop[bot]](/assets/img/avatar_default.png)
* chore: bump chromium to 128.0.6558.0 32-x-y * chore: bump chromium in DEPS to 127.0.6526.0 * chore: update network_service_allow_remote_certificate_verification_logic.patch manually apply patch due to minor upstream shear Xref:5598454
* chore: update fix_move_autopipsettingshelper_behind_branding_buildflag.patch No manual changes; patch applied with fuzz 1 * chore: update refactor_expose_file_system_access_blocklist.patch No manual changes; patch applied with fuzz 2 * chore: update revert_heap_add_checks_position_info.patch No manual changes; patch applied with fuzz 1 * chore: e patches all * chore: bump chromium in DEPS to 127.0.6527.0 * chore: update patches * chore: bump chromium in DEPS to 127.0.6529.0 * chore: bump chromium in DEPS to 127.0.6531.0 * chore: update patches * 5596349: Remove PDF OCR toggle from settings.5596349
* 5585932: [video-pip] Add minimize button to video picture-in-picture window5585932
* 5604487: Reland "[api] Deprecate v8::FunctionCallbackInfo::Holder() for real"5604487
* 5581721: [DEPS] Update clang-format location5581721
* 5597904: [Windows] Remove ConvertToLongPath from Sandbox Utilities.5597904
ResolveNTFunctionPtr was removed in this CL. * fix: visibility state specs on macOS Refs5605407
* Revert "fix: visibility state specs on macOS" This reverts commit 1eee30a33dfafeec86cdd09526a07b01abca2ed6. * temp: disable occlusion checker on macOS * chore: bump chromium in DEPS to 128.0.6535.0 * chore: update patches * [Extensions] Move some scriptings files out of the API directory. Refs5606682
* fix[node]: do not use soon-to-be-deprecated V8 API * fix: update api_remove_allcan_read_write.patch * chore: update patches * chore: update patches * chore: fix lf mismatch in api_remove_allcan_read_write.patch * chore: update patches * chore: bump chromium in DEPS to 128.0.6538.0 * chore: update v8 patches * chore: update patches * ui/gl/features.gni: Set use_egl=true unconditionally. Refs5569748
Refs https://issues.chromium.org/issues/344606399 * chore: bump chromium in DEPS to 128.0.6540.0 * chore: bump chromium in DEPS to 128.0.6541.0 * chore: update patches * chore: fix nan read/write patch * chore: bump chromium in DEPS to 128.0.6543.0 * 5626254: Use sandbox_type instead of process_type |5626254
* chore: update patches * rework nan patches * 5621488: Apply consistent naming conventions to zoom values |5621488
* chore: bump chromium in DEPS to 128.0.6544.0 * 5605693: Remove files from third_party/ninja |5605693
* chore: update patches * chore: maybe fix nan patch, part 3 * chore: delete nan patch * chore: re-add nan patch (attempt 2) * chore: add test patch * fixup! add test patch * chore: bump chromium in DEPS to 128.0.6549.0 * chore: bump chromium in DEPS to 128.0.6551.0 * 5637699: Add command line to ASAN Additional Info section |5637699
* chore: update patches * chore: bump chromium in DEPS to 128.0.6553.0 * chore: bump chromium in DEPS to 128.0.6555.0 * fix: add property query interceptors * chore: bump chromium in DEPS to 128.0.6557.0 * 5583182: Automatic Fullscreen: Prototype Permissions API query support |5583182
* 5613297: Move render input router and related dependencies to //components/input |5613297
* chore: update patches * test: skip methodswithdata-test.js nan test * chore: bump chromium in DEPS to 128.0.6558.0 * chore: update patches * build: reference correct ninja cipd ref Ref:5605693
* update libcxx filenames * refactor: CursorManager moved to //components/input Ref:5613297
* refactor: spanify mojo Read/WriteData methods Ref:5619291
* refactor: remove constexpr from KeyboardCodeFromKeyIdentifier Ref: unknown Added TODO to investigate after * chore: update patches * refactor: improve type safety of a11y ids Ref:5614590
* chore: disable tls node tests that don't apply given boringssl tls configuration Ref: https://boringssl-review.googlesource.com/c/boringssl/+/68487 * chore: add patch to fix nan v8 incompat with NamedPropertyHandlerConfiguration and IndexedPropertyHandlerConfiguration Ref:5630388
* fix: limit subspan length per feedback * Fix incorrect CalculateInsetsInDIP check * 5645742: Reland "Reland "Add toolchains without PartitionAlloc-Everywhere for dump_syms et al""5645742
* chore: more Windows logging * 5617471: Add NPU blocking to chromium blocklist5617471
--------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Keeley Hammond <khammond@slack-corp.com> Co-authored-by: Alice Zhao <alice@makenotion.com> Co-authored-by: Samuel Attard <marshallofsound@electronjs.org> Co-authored-by: VerteDinde <vertedinde@electronjs.org> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> * chore: cleanup .patches after trop --------- Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
73 lines
2.4 KiB
C++
73 lines
2.4 KiB
C++
// Copyright (c) 2019 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/common/gin_helper/destroyable.h"
|
|
|
|
#include "base/no_destructor.h"
|
|
#include "gin/converter.h"
|
|
#include "shell/common/gin_helper/wrappable_base.h"
|
|
|
|
namespace gin_helper {
|
|
|
|
namespace {
|
|
|
|
v8::Global<v8::FunctionTemplate>* GetDestroyFunc() {
|
|
static base::NoDestructor<v8::Global<v8::FunctionTemplate>> destroy_func;
|
|
return destroy_func.get();
|
|
}
|
|
|
|
v8::Global<v8::FunctionTemplate>* GetIsDestroyedFunc() {
|
|
static base::NoDestructor<v8::Global<v8::FunctionTemplate>> is_destroyed_func;
|
|
return is_destroyed_func.get();
|
|
}
|
|
|
|
void DestroyFunc(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
|
v8::Local<v8::Object> holder = info.This();
|
|
if (Destroyable::IsDestroyed(holder))
|
|
return;
|
|
|
|
// TODO(zcbenz): gin_helper::Wrappable will be removed.
|
|
delete static_cast<gin_helper::WrappableBase*>(
|
|
holder->GetAlignedPointerFromInternalField(0));
|
|
holder->SetAlignedPointerInInternalField(0, nullptr);
|
|
}
|
|
|
|
void IsDestroyedFunc(const v8::FunctionCallbackInfo<v8::Value>& info) {
|
|
info.GetReturnValue().Set(gin::ConvertToV8(
|
|
info.GetIsolate(), Destroyable::IsDestroyed(info.This())));
|
|
}
|
|
|
|
} // namespace
|
|
|
|
// static
|
|
bool Destroyable::IsDestroyed(v8::Local<v8::Object> object) {
|
|
// An object is considered destroyed if it has no internal pointer or its
|
|
// internal has been destroyed.
|
|
return object->InternalFieldCount() == 0 ||
|
|
object->GetAlignedPointerFromInternalField(0) == nullptr;
|
|
}
|
|
|
|
// static
|
|
void Destroyable::MakeDestroyable(v8::Isolate* isolate,
|
|
v8::Local<v8::FunctionTemplate> prototype) {
|
|
// Cache the FunctionTemplate of "destroy" and "isDestroyed".
|
|
if (GetDestroyFunc()->IsEmpty()) {
|
|
auto templ = v8::FunctionTemplate::New(isolate, DestroyFunc);
|
|
templ->RemovePrototype();
|
|
GetDestroyFunc()->Reset(isolate, templ);
|
|
templ = v8::FunctionTemplate::New(isolate, IsDestroyedFunc);
|
|
templ->RemovePrototype();
|
|
GetIsDestroyedFunc()->Reset(isolate, templ);
|
|
}
|
|
|
|
auto proto_templ = prototype->PrototypeTemplate();
|
|
proto_templ->Set(
|
|
gin::StringToSymbol(isolate, "destroy"),
|
|
v8::Local<v8::FunctionTemplate>::New(isolate, *GetDestroyFunc()));
|
|
proto_templ->Set(
|
|
gin::StringToSymbol(isolate, "isDestroyed"),
|
|
v8::Local<v8::FunctionTemplate>::New(isolate, *GetIsDestroyedFunc()));
|
|
}
|
|
|
|
} // namespace gin_helper
|