From bbd93f24d8920c0d1d13e4d63f47f2539617e20f Mon Sep 17 00:00:00 2001 From: Keeley Hammond Date: Tue, 27 Jan 2026 17:46:01 -0800 Subject: [PATCH] 7000847: add type tag to v8::External calls in callback and osr_converter The v8::External API now requires an EmbedderPointerTypeTag parameter for both New() and Value() methods to improve V8 sandbox type safety. Updated calls in: - callback.cc: TranslatorHolder constructor and CallTranslator - osr_converter.cc: OffscreenSharedTextureValue converter Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7000847 --- shell/common/gin_converters/osr_converter.cc | 6 ++++-- shell/common/gin_helper/callback.cc | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/shell/common/gin_converters/osr_converter.cc b/shell/common/gin_converters/osr_converter.cc index 4c513a4d34..27129416c9 100644 --- a/shell/common/gin_converters/osr_converter.cc +++ b/shell/common/gin_converters/osr_converter.cc @@ -87,10 +87,12 @@ v8::Local Converter::ToV8( // GC collects the object. auto* monitor = new OffscreenReleaseHolderMonitor(val.releaser_holder); - auto releaserHolder = v8::External::New(isolate, monitor); + auto releaserHolder = + v8::External::New(isolate, monitor, v8::kExternalPointerTypeTagDefault); auto releaserFunc = [](const v8::FunctionCallbackInfo& info) { auto* mon = static_cast( - info.Data().As()->Value()); + info.Data().As()->Value( + v8::kExternalPointerTypeTagDefault)); // Release the shared texture, so that future frames can be generated. mon->ReleaseTexture(); // Release the monitor happens at GC, don't release here. diff --git a/shell/common/gin_helper/callback.cc b/shell/common/gin_helper/callback.cc index fb56f95a01..403fe751b1 100644 --- a/shell/common/gin_helper/callback.cc +++ b/shell/common/gin_helper/callback.cc @@ -14,7 +14,10 @@ namespace { struct TranslatorHolder { explicit TranslatorHolder(v8::Isolate* isolate) - : handle(isolate, v8::External::New(isolate, this)) { + : handle(isolate, + v8::External::New(isolate, + this, + v8::kExternalPointerTypeTagDefault)) { handle.SetWeak(this, &GC, v8::WeakCallbackType::kParameter); } ~TranslatorHolder() { @@ -57,7 +60,8 @@ void CallTranslator(v8::Local external, } } - auto* holder = static_cast(external->Value()); + auto* holder = static_cast( + external->Value(v8::kExternalPointerTypeTagDefault)); holder->translator.Run(args); // Free immediately for one-time callback.