From 5a6f1ede6aa56da2e5d819c41de5c3717db62b61 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 1 Apr 2025 08:52:12 -0500 Subject: [PATCH] feat!: remove support for ProtocolResponse.session null value (#46264) BREAKING CHANGE This was deprecated in f7ba0d3b & is now being removed for Electron 37. --- docs/api/structures/protocol-response.md | 7 ++----- docs/breaking-changes.md | 12 +++++++++++ .../net/electron_url_loader_factory.cc | 20 +++++-------------- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/docs/api/structures/protocol-response.md b/docs/api/structures/protocol-response.md index 244cb929653f..c408cca0bc56 100644 --- a/docs/api/structures/protocol-response.md +++ b/docs/api/structures/protocol-response.md @@ -25,11 +25,8 @@ and URL responses. * `method` string (optional) - The HTTP `method`. This is only used for file and URL responses. -* `session` Session (optional) - The session used for requesting URL, by default - the HTTP request will reuse the current session. Setting `session` to `null` - would use a random independent session. This is only used for URL responses. - **Deprecated:** Using `null` to create a random independent session is - deprecated and will be removed soon. +* `session` Session (optional) - The session used for requesting URL. + The HTTP request will reuse the current session by default. * `uploadData` [ProtocolResponseUploadData](protocol-response-upload-data.md) (optional) - The data used as upload data. This is only used for URL responses when `method` is `"POST"`. diff --git a/docs/breaking-changes.md b/docs/breaking-changes.md index dd3cbd005635..3d570fda9e77 100644 --- a/docs/breaking-changes.md +++ b/docs/breaking-changes.md @@ -14,6 +14,18 @@ This document uses the following convention to categorize breaking changes: ## Planned Breaking API Changes (37.0) +### Removed: `null` value for `session` property in `ProtocolResponse` + +This deprecated feature has been removed. + +Previously, setting the `ProtocolResponse.session` property to `null` +would create a random independent session. This is no longer supported. + +Using single-purpose sessions here is discouraged due to overhead costs; +however, old code that needs to preserve this behavior can emulate it by +creating a random session with `session.fromPartition(some_random_string)` +and then using it in `ProtocolResponse.session`. + ### Behavior Changed: `BrowserWindow.IsVisibleOnAllWorkspaces()` on Linux `BrowserWindow.IsVisibleOnAllWorkspaces()` will now return false on Linux if the diff --git a/shell/browser/net/electron_url_loader_factory.cc b/shell/browser/net/electron_url_loader_factory.cc index 1f06048ed313..847c858c990c 100644 --- a/shell/browser/net/electron_url_loader_factory.cc +++ b/shell/browser/net/electron_url_loader_factory.cc @@ -13,7 +13,6 @@ #include "base/containers/fixed_flat_map.h" #include "base/strings/string_number_conversions.h" #include "base/task/sequenced_task_runner.h" -#include "base/uuid.h" #include "base/values.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/storage_partition.h" @@ -671,20 +670,11 @@ void ElectronURLLoaderFactory::StartLoadingHttp( request->method != net::HttpRequestHeaders::kHeadMethod) dict.Get("uploadData", &upload_data); - auto* browser_context = ElectronBrowserContext::GetDefaultBrowserContext(); - v8::Local value; - if (dict.Get("session", &value)) { - if (value->IsNull()) { - browser_context = ElectronBrowserContext::From( - base::Uuid::GenerateRandomV4().AsLowercaseString(), true); - } else { - gin::Handle session; - if (gin::ConvertFromV8(dict.isolate(), value, &session) && - !session.IsEmpty()) { - browser_context = session->browser_context(); - } - } - } + gin::Handle session; + auto* browser_context = + dict.Get("session", &session) && !session.IsEmpty() + ? session->browser_context() + : ElectronBrowserContext::GetDefaultBrowserContext(); new URLPipeLoader( browser_context->GetURLLoaderFactory(), std::move(request),