[cr140] Migrate SpeedreaderJSHandler to gin::Wrappable

This class was still using the deprecated version that is set to be
deleted. This change migrates this class to use Oilpan GC for memory
management.

Chromium changes:
https://chromium.googlesource.com/chromium/src/+/61e491610dac67129273aa96549603483c59759f

commit 61e491610dac67129273aa96549603483c59759f
Author: Andreas Haas <ahaas@chromium.org>
Date:   Wed Jul 30 03:35:32 2025 -0700

    [gin] Delete DeprecatedWrappable

    This CL deletes gin::DeprecatedWrappable, and classes and data
    structures related to gin::DeprecatedWrappable. Additionally it removes
    internal fields of JS wrapper objects that were only used by
    gin::DeprecatedWrappable, but are not needed anymore with the new
    gin::Wrappable.

    Bug: 345640553
    Change-Id: Ideb4424048e62fec6c6a7ee5fd60a4635f6ef1e8
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6799157
    Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    Reviewed-by: Camille Lamy <clamy@chromium.org>
    Commit-Queue: Andreas Haas <ahaas@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1494071}
This commit is contained in:
Claudio DeSouza
2025-08-19 19:54:32 +01:00
parent 06c9414a0d
commit d3a7f9ea83
3 changed files with 20 additions and 18 deletions
@@ -14,6 +14,7 @@
kMetaMask, \
kSolanaProvider, \
kSkusBindings, \
SpeedreaderBindings, \
kCardanoProvider
// clang-format on
@@ -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<SpeedreaderRenderFrameObserver> owner)
: owner_(std::move(owner)) {}
@@ -62,13 +60,12 @@ void SpeedreaderJSHandler::Install(
return;
}
gin::Handle<SpeedreaderJSHandler> handler =
gin::CreateHandle(isolate, new SpeedreaderJSHandler(std::move(owner)));
if (handler.IsEmpty()) {
return;
}
SpeedreaderJSHandler* handler =
cppgc::MakeGarbageCollected<SpeedreaderJSHandler>(
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<SpeedreaderJSHandler>::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);
@@ -14,11 +14,14 @@ namespace speedreader {
class SpeedreaderRenderFrameObserver;
class SpeedreaderJSHandler final
: public gin::DeprecatedWrappable<SpeedreaderJSHandler> {
class SpeedreaderJSHandler final : public gin::Wrappable<SpeedreaderJSHandler> {
public:
static gin::DeprecatedWrapperInfo kWrapperInfo;
static constexpr gin::WrapperInfo kWrapperInfo = {{gin::kEmbedderNativeGin},
gin::SpeedreaderBindings};
explicit SpeedreaderJSHandler(
base::WeakPtr<SpeedreaderRenderFrameObserver> owner);
~SpeedreaderJSHandler() final;
SpeedreaderJSHandler(const SpeedreaderJSHandler&) = delete;
SpeedreaderJSHandler& operator=(const SpeedreaderJSHandler&) = delete;
@@ -26,13 +29,11 @@ class SpeedreaderJSHandler final
v8::Local<v8::Context> context);
private:
explicit SpeedreaderJSHandler(
base::WeakPtr<SpeedreaderRenderFrameObserver> 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);