diff --git a/chromium_src/gin/public/wrappable_pointer_tags.h b/chromium_src/gin/public/wrappable_pointer_tags.h index 4585c160ebb..e3e91321fa2 100644 --- a/chromium_src/gin/public/wrappable_pointer_tags.h +++ b/chromium_src/gin/public/wrappable_pointer_tags.h @@ -14,6 +14,7 @@ kMetaMask, \ kSolanaProvider, \ kSkusBindings, \ + SpeedreaderBindings, \ kCardanoProvider // clang-format on diff --git a/components/speedreader/renderer/speedreader_js_handler.cc b/components/speedreader/renderer/speedreader_js_handler.cc index 46d3c0add81..fc5c998010e 100644 --- a/components/speedreader/renderer/speedreader_js_handler.cc +++ b/components/speedreader/renderer/speedreader_js_handler.cc @@ -12,7 +12,6 @@ #include "brave/components/speedreader/renderer/speedreader_render_frame_observer.h" #include "content/public/renderer/render_frame.h" #include "gin/converter.h" -#include "gin/handle.h" #include "gin/object_template_builder.h" #include "gin/wrappable.h" #include "mojo/public/cpp/bindings/associated_remote.h" @@ -20,7 +19,9 @@ #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" #include "third_party/blink/public/web/blink.h" #include "third_party/blink/public/web/web_local_frame.h" +#include "v8/include/cppgc/allocation.h" #include "v8/include/v8-context.h" +#include "v8/include/v8-cppgc.h" namespace { constexpr const char kSpeedreader[] = "speedreader"; @@ -28,9 +29,6 @@ constexpr const char kSpeedreader[] = "speedreader"; namespace speedreader { -gin::DeprecatedWrapperInfo SpeedreaderJSHandler::kWrapperInfo = { - gin::kEmbedderNativeGin}; - SpeedreaderJSHandler::SpeedreaderJSHandler( base::WeakPtr owner) : owner_(std::move(owner)) {} @@ -62,13 +60,12 @@ void SpeedreaderJSHandler::Install( return; } - gin::Handle handler = - gin::CreateHandle(isolate, new SpeedreaderJSHandler(std::move(owner))); - if (handler.IsEmpty()) { - return; - } + SpeedreaderJSHandler* handler = + cppgc::MakeGarbageCollected( + isolate->GetCppHeap()->GetAllocationHandle(), std::move(owner)); - v8::PropertyDescriptor desc(handler.ToV8(), false); + v8::PropertyDescriptor desc(handler->GetWrapper(isolate).ToLocalChecked(), + false); desc.set_configurable(false); global @@ -79,8 +76,7 @@ void SpeedreaderJSHandler::Install( gin::ObjectTemplateBuilder SpeedreaderJSHandler::GetObjectTemplateBuilder( v8::Isolate* isolate) { - return gin::DeprecatedWrappable< - SpeedreaderJSHandler>::GetObjectTemplateBuilder(isolate) + return gin::Wrappable::GetObjectTemplateBuilder(isolate) .SetMethod("showOriginalPage", &SpeedreaderJSHandler::ShowOriginalPage) .SetMethod("ttsPlayPause", &SpeedreaderJSHandler::TtsPlayPause); } @@ -100,6 +96,10 @@ void SpeedreaderJSHandler::ShowOriginalPage(v8::Isolate* isolate) { } } +const gin::WrapperInfo* SpeedreaderJSHandler::wrapper_info() const { + return &kWrapperInfo; +} + void SpeedreaderJSHandler::TtsPlayPause(v8::Isolate* isolate, int paragraph_index) { DCHECK(isolate); diff --git a/components/speedreader/renderer/speedreader_js_handler.h b/components/speedreader/renderer/speedreader_js_handler.h index b331675edba..0bd617d8052 100644 --- a/components/speedreader/renderer/speedreader_js_handler.h +++ b/components/speedreader/renderer/speedreader_js_handler.h @@ -14,11 +14,14 @@ namespace speedreader { class SpeedreaderRenderFrameObserver; -class SpeedreaderJSHandler final - : public gin::DeprecatedWrappable { +class SpeedreaderJSHandler final : public gin::Wrappable { public: - static gin::DeprecatedWrapperInfo kWrapperInfo; + static constexpr gin::WrapperInfo kWrapperInfo = {{gin::kEmbedderNativeGin}, + gin::SpeedreaderBindings}; + explicit SpeedreaderJSHandler( + base::WeakPtr owner); + ~SpeedreaderJSHandler() final; SpeedreaderJSHandler(const SpeedreaderJSHandler&) = delete; SpeedreaderJSHandler& operator=(const SpeedreaderJSHandler&) = delete; @@ -26,13 +29,11 @@ class SpeedreaderJSHandler final v8::Local context); private: - explicit SpeedreaderJSHandler( - base::WeakPtr owner); - ~SpeedreaderJSHandler() final; // gin::WrappableBase gin::ObjectTemplateBuilder GetObjectTemplateBuilder( v8::Isolate* isolate) final; + const gin::WrapperInfo* wrapper_info() const override; // A function to be called from JS void ShowOriginalPage(v8::Isolate* isolate);