From b6595637249ff69d0e852ff76b7ec69a0d3e5783 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 11 Nov 2025 00:33:25 -0600 Subject: [PATCH] refactor: use gin_helper's `gin::Wrappable`-to-`v8::Local` converter (#48885) * refactor: Session::NetLog() returns a NetLog* Use gin_helper's gin::Wrappable-to-v8::Local converter instead of rewriting it. * refactor: FromPath(base::FilePath&, gin::Arguments*) returns a Session* refactor: FromPartition(std::string&, gin::Arguments*) returns a Session* Use gin_helper's gin::Wrappable-to-v8::Local converter instead of rewriting it. --- shell/browser/api/electron_api_session.cc | 43 +++++------------------ shell/browser/api/electron_api_session.h | 2 +- 2 files changed, 9 insertions(+), 36 deletions(-) diff --git a/shell/browser/api/electron_api_session.cc b/shell/browser/api/electron_api_session.cc index 5a25cef4bb..da2525aab9 100644 --- a/shell/browser/api/electron_api_session.cc +++ b/shell/browser/api/electron_api_session.cc @@ -1368,15 +1368,11 @@ v8::Local Session::WebRequest(v8::Isolate* isolate) { return web_request_.Get(isolate); } -v8::Local Session::NetLog(v8::Isolate* isolate) { +NetLog* Session::NetLog(v8::Isolate* isolate) { if (!net_log_) { net_log_ = NetLog::Create(isolate, browser_context()); } - - v8::Local wrapper; - return net_log_->GetWrapper(isolate).ToLocal(&wrapper) - ? wrapper.As() - : v8::Null(isolate); + return net_log_; } static void StartPreconnectOnUI(ElectronBrowserContext* browser_context, @@ -1887,47 +1883,24 @@ namespace { using electron::api::Session; -v8::Local FromPartition(const std::string& partition, - gin::Arguments* args) { +Session* FromPartition(const std::string& partition, gin::Arguments* args) { if (!electron::Browser::Get()->is_ready()) { args->ThrowTypeError("Session can only be received when app is ready"); - return v8::Null(args->isolate()); + return {}; } base::Value::Dict options; args->GetNext(&options); - Session* session = - Session::FromPartition(args->isolate(), partition, std::move(options)); - - if (session) { - v8::Local wrapper; - if (!session->GetWrapper(args->isolate()).ToLocal(&wrapper)) { - return v8::Null(args->isolate()); - } - return wrapper; - } else { - return v8::Null(args->isolate()); - } + return Session::FromPartition(args->isolate(), partition, std::move(options)); } -v8::Local FromPath(const base::FilePath& path, - gin::Arguments* args) { +Session* FromPath(const base::FilePath& path, gin::Arguments* args) { if (!electron::Browser::Get()->is_ready()) { args->ThrowTypeError("Session can only be received when app is ready"); - return v8::Null(args->isolate()); + return {}; } base::Value::Dict options; args->GetNext(&options); - Session* session = Session::FromPath(args, path, std::move(options)); - - if (session) { - v8::Local wrapper; - if (!session->GetWrapper(args->isolate()).ToLocal(&wrapper)) { - return v8::Null(args->isolate()); - } - return wrapper; - } else { - return v8::Null(args->isolate()); - } + return Session::FromPath(args, path, std::move(options)); } void Initialize(v8::Local exports, diff --git a/shell/browser/api/electron_api_session.h b/shell/browser/api/electron_api_session.h index 5dacd5172f..29cf1eea0c 100644 --- a/shell/browser/api/electron_api_session.h +++ b/shell/browser/api/electron_api_session.h @@ -170,7 +170,7 @@ class Session final : public gin::Wrappable, v8::Local Protocol(v8::Isolate* isolate); v8::Local ServiceWorkerContext(v8::Isolate* isolate); v8::Local WebRequest(v8::Isolate* isolate); - v8::Local NetLog(v8::Isolate* isolate); + api::NetLog* NetLog(v8::Isolate* isolate); void Preconnect(const gin_helper::Dictionary& options, gin::Arguments* args); v8::Local CloseAllConnections(); v8::Local GetPath(v8::Isolate* isolate);