feat!: remove support for ProtocolResponse.session null value (#46264)

BREAKING CHANGE

This was deprecated in f7ba0d3b & is now being removed for Electron 37.
This commit is contained in:
Charles Kerr 2025-04-01 08:52:12 -05:00 committed by GitHub
parent 0e687d3082
commit 5a6f1ede6a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 19 additions and 20 deletions

View file

@ -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"`.

View file

@ -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

View file

@ -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<v8::Value> value;
if (dict.Get("session", &value)) {
if (value->IsNull()) {
browser_context = ElectronBrowserContext::From(
base::Uuid::GenerateRandomV4().AsLowercaseString(), true);
} else {
gin::Handle<api::Session> session;
if (gin::ConvertFromV8(dict.isolate(), value, &session) &&
!session.IsEmpty()) {
browser_context = session->browser_context();
}
}
}
gin::Handle<api::Session> session;
auto* browser_context =
dict.Get("session", &session) && !session.IsEmpty()
? session->browser_context()
: ElectronBrowserContext::GetDefaultBrowserContext();
new URLPipeLoader(
browser_context->GetURLLoaderFactory(), std::move(request),