Skip to content

Conversation

@codebytere
Copy link
Member

Backport of #48512.

See that PR for details.

Notes: Added support for WebSocket authentication through the login event on webContents.

@codebytere codebytere requested a review from a team November 24, 2025 20:01
@electron-cation electron-cation bot added the new-pr 🌱 PR opened recently label Nov 24, 2025
@trop trop bot added 40-x-y backport This is a backport PR backport/requested 🗳 semver/minor backwards-compatible functionality labels Nov 24, 2025
@electron-cation electron-cation bot removed the new-pr 🌱 PR opened recently label Nov 24, 2025
Copy link
Member

@ckerr ckerr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FTBFS
2025-11-25T05:47:47.4598820Z In file included from ../../electron/shell/browser/net/proxying_websocket.cc:5:
2025-11-25T05:47:47.4888530Z ##[error]../../electron/shell/browser/net/proxying_websocket.h:109:31: error: use of undeclared identifier 'api'; did you mean 'extensions::api'?
2025-11-25T05:47:47.4890690Z   109 |   void OnAuthRequiredComplete(api::WebRequest::AuthRequiredResponse rv);
2025-11-25T05:47:47.4891220Z       |                               ^~~
2025-11-25T05:47:47.4891590Z       |                               extensions::api
2025-11-25T05:47:47.4892180Z gen/extensions/common/api/declarative_net_request.h:28:11: note: 'extensions::api' declared here
2025-11-25T05:47:47.4892550Z    28 | namespace api {
2025-11-25T05:47:47.4892740Z       |           ^
2025-11-25T05:47:47.4893190Z In file included from ../../electron/shell/browser/net/proxying_websocket.cc:5:
2025-11-25T05:47:47.4895200Z ##[error]../../electron/shell/browser/net/proxying_websocket.h:109:31: error: no member named 'WebRequest' in namespace 'extensions::api'; did you mean 'WebRequestAPI'?
2025-11-25T05:47:47.4895940Z   109 |   void OnAuthRequiredComplete(api::WebRequest::AuthRequiredResponse rv);
2025-11-25T05:47:47.4896310Z       |                               ^~~~~~~~~~~~~~~
2025-11-25T05:47:47.4896620Z       |                               WebRequestAPI
2025-11-25T05:47:47.4897190Z ../../electron/shell/browser/net/web_request_api_interface.h:21:7: note: 'WebRequestAPI' declared here
2025-11-25T05:47:47.4897790Z    21 | class WebRequestAPI {
2025-11-25T05:47:47.4898010Z       |       ^
2025-11-25T05:47:47.4944780Z In file included from ../../electron/shell/browser/net/proxying_websocket.cc:5:
2025-11-25T05:47:47.4946650Z ##[error]../../electron/shell/browser/net/proxying_websocket.h:109:48: error: no type named 'AuthRequiredResponse' in 'electron::WebRequestAPI'
2025-11-25T05:47:47.4947580Z   109 |   void OnAuthRequiredComplete(api::WebRequest::AuthRequiredResponse rv);
2025-11-25T05:47:47.4948000Z       |                               ~~~~~~~~~~~~~~~~~^
2025-11-25T05:47:47.4949330Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:378:5: error: use of undeclared identifier 'api'; did you mean 'extensions::api'?
2025-11-25T05:47:47.4964850Z   378 |     api::WebRequest::AuthRequiredResponse rv) {
2025-11-25T05:47:47.4969750Z       |     ^~~
2025-11-25T05:47:47.4970010Z       |     extensions::api
2025-11-25T05:47:47.4981920Z gen/extensions/common/api/declarative_net_request.h:28:11: note: 'extensions::api' declared here
2025-11-25T05:47:47.4982340Z    28 | namespace api {
2025-11-25T05:47:47.4982560Z       |           ^
2025-11-25T05:47:47.4983670Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:378:5: error: no member named 'WebRequest' in namespace 'extensions::api'; did you mean 'WebRequestAPI'?
2025-11-25T05:47:47.4984370Z   378 |     api::WebRequest::AuthRequiredResponse rv) {
2025-11-25T05:47:47.4984670Z       |     ^~~~~~~~~~~~~~~
2025-11-25T05:47:47.4984900Z       |     WebRequestAPI
2025-11-25T05:47:47.4985540Z ../../electron/shell/browser/net/web_request_api_interface.h:21:7: note: 'WebRequestAPI' declared here
2025-11-25T05:47:47.4985980Z    21 | class WebRequestAPI {
2025-11-25T05:47:47.4986220Z       |       ^
2025-11-25T05:47:47.4990220Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:378:22: error: no type named 'AuthRequiredResponse' in 'electron::WebRequestAPI'
2025-11-25T05:47:47.4990860Z   378 |     api::WebRequest::AuthRequiredResponse rv) {
2025-11-25T05:47:47.4991280Z       |     ~~~~~~~~~~~~~~~~~^
2025-11-25T05:47:47.4992110Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:382:10: error: use of undeclared identifier 'api'; did you mean 'extensions::api'?
2025-11-25T05:47:47.4992740Z   382 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.4993020Z       |          ^~~
2025-11-25T05:47:47.4993300Z       |          extensions::api
2025-11-25T05:47:47.4993900Z gen/extensions/common/api/declarative_net_request.h:28:11: note: 'extensions::api' declared here
2025-11-25T05:47:47.4994320Z    28 | namespace api {
2025-11-25T05:47:47.4994510Z       |           ^
2025-11-25T05:47:47.4995380Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:382:10: error: no member named 'WebRequest' in namespace 'extensions::api'; did you mean 'WebRequestAPI'?
2025-11-25T05:47:47.4996060Z   382 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.4996390Z       |          ^~~~~~~~~~~~~~~
2025-11-25T05:47:47.4996680Z       |          WebRequestAPI
2025-11-25T05:47:47.4997310Z ../../electron/shell/browser/net/web_request_api_interface.h:21:7: note: 'WebRequestAPI' declared here
2025-11-25T05:47:47.4997740Z    21 | class WebRequestAPI {
2025-11-25T05:47:47.4997980Z       |       ^
2025-11-25T05:47:47.4998720Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:382:27: error: no member named 'AuthRequiredResponse' in 'electron::WebRequestAPI'
2025-11-25T05:47:47.4999370Z   382 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.4999700Z       |          ~~~~~~~~~~~~~~~~~^
2025-11-25T05:47:47.5000470Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:384:10: error: use of undeclared identifier 'api'; did you mean 'extensions::api'?
2025-11-25T05:47:47.5001060Z   384 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.5001350Z       |          ^~~
2025-11-25T05:47:47.5001600Z       |          extensions::api
2025-11-25T05:47:47.5002340Z gen/extensions/common/api/declarative_net_request.h:28:11: note: 'extensions::api' declared here
2025-11-25T05:47:47.5002820Z    28 | namespace api {
2025-11-25T05:47:47.5003060Z       |           ^
2025-11-25T05:47:47.5003950Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:384:10: error: no member named 'WebRequest' in namespace 'extensions::api'; did you mean 'WebRequestAPI'?
2025-11-25T05:47:47.5004640Z   384 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.5005050Z       |          ^~~~~~~~~~~~~~~
2025-11-25T05:47:47.5005340Z       |          WebRequestAPI
2025-11-25T05:47:47.5005960Z ../../electron/shell/browser/net/web_request_api_interface.h:21:7: note: 'WebRequestAPI' declared here
2025-11-25T05:47:47.5006380Z    21 | class WebRequestAPI {
2025-11-25T05:47:47.5006610Z       |       ^
2025-11-25T05:47:47.5007680Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:384:27: error: no member named 'AuthRequiredResponse' in 'electron::WebRequestAPI'
2025-11-25T05:47:47.5008310Z   384 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.5008640Z       |          ~~~~~~~~~~~~~~~~~^
2025-11-25T05:47:47.5009430Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:389:10: error: use of undeclared identifier 'api'; did you mean 'extensions::api'?
2025-11-25T05:47:47.5010180Z   389 |     case api::WebRequest::AuthRequiredResponse::AUTH_REQUIRED_RESPONSE_SET_AUTH:
2025-11-25T05:47:47.5010530Z       |          ^~~
2025-11-25T05:47:47.5010780Z       |          extensions::api
2025-11-25T05:47:47.5011380Z gen/extensions/common/api/declarative_net_request.h:28:11: note: 'extensions::api' declared here
2025-11-25T05:47:47.5011810Z    28 | namespace api {
2025-11-25T05:47:47.5012020Z       |           ^
2025-11-25T05:47:47.5012950Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:389:10: error: no member named 'WebRequest' in namespace 'extensions::api'; did you mean 'WebRequestAPI'?
2025-11-25T05:47:47.5013760Z   389 |     case api::WebRequest::AuthRequiredResponse::AUTH_REQUIRED_RESPONSE_SET_AUTH:
2025-11-25T05:47:47.5014240Z       |          ^~~~~~~~~~~~~~~
2025-11-25T05:47:47.5014510Z       |          WebRequestAPI
2025-11-25T05:47:47.5015120Z ../../electron/shell/browser/net/web_request_api_interface.h:21:7: note: 'WebRequestAPI' declared here
2025-11-25T05:47:47.5020750Z    21 | class WebRequestAPI {
2025-11-25T05:47:47.5021010Z       |       ^
2025-11-25T05:47:47.5021830Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:389:27: error: no member named 'AuthRequiredResponse' in 'electron::WebRequestAPI'
2025-11-25T05:47:47.5022600Z   389 |     case api::WebRequest::AuthRequiredResponse::AUTH_REQUIRED_RESPONSE_SET_AUTH:
2025-11-25T05:47:47.5023010Z       |          ~~~~~~~~~~~~~~~~~^
2025-11-25T05:47:47.5023820Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:392:10: error: use of undeclared identifier 'api'; did you mean 'extensions::api'?
2025-11-25T05:47:47.5024470Z   392 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.5024760Z       |          ^~~
2025-11-25T05:47:47.5024980Z       |          extensions::api
2025-11-25T05:47:47.5025550Z gen/extensions/common/api/declarative_net_request.h:28:11: note: 'extensions::api' declared here
2025-11-25T05:47:47.5025910Z    28 | namespace api {
2025-11-25T05:47:47.5026090Z       |           ^
2025-11-25T05:47:47.5026950Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:392:10: error: no member named 'WebRequest' in namespace 'extensions::api'; did you mean 'WebRequestAPI'?
2025-11-25T05:47:47.5027630Z   392 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.5027950Z       |          ^~~~~~~~~~~~~~~
2025-11-25T05:47:47.5028190Z       |          WebRequestAPI
2025-11-25T05:47:47.5028780Z ../../electron/shell/browser/net/web_request_api_interface.h:21:7: note: 'WebRequestAPI' declared here
2025-11-25T05:47:47.5029220Z    21 | class WebRequestAPI {
2025-11-25T05:47:47.5029470Z       |       ^
2025-11-25T05:47:47.5030350Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:392:27: error: no member named 'AuthRequiredResponse' in 'electron::WebRequestAPI'
2025-11-25T05:47:47.5031000Z   392 |     case api::WebRequest::AuthRequiredResponse::
2025-11-25T05:47:47.5031320Z       |          ~~~~~~~~~~~~~~~~~^
2025-11-25T05:47:47.5032000Z ##[error]../../electron/shell/browser/net/proxying_websocket.cc:410:18: error: use of undeclared identifier 'web_request_'
2025-11-25T05:47:47.5032670Z   410 |   auto auth_rv = web_request_->OnAuthRequired(
2025-11-25T05:47:47.5032980Z       |                  ^~~~~~~~~~~~
2025-11-25T05:47:47.5033420Z fatal error: too many errors emitted, stopping now [-ferror-limit=]
2025-11-25T05:47:47.5033750Z 20 errors generated.

@ckerr
Copy link
Member

ckerr commented Nov 26, 2025

CI is failing on an unrelated test:

2025-11-26T17:20:14.2770529Z not ok 289 powerMonitor when powerMonitor module is loaded with dbus mock "before all" hook for "should call Inhibit to delay suspend once a listener is added"
2025-11-26T17:20:14.2772808Z not enough parameters for 'unix' connection - you need to specify 'socket' or 'path' parameter

I'm going to rebase to pick up John's Linux DBus test fixups from 9ec95c0

@ckerr ckerr force-pushed the web-socket-40-x-y branch from 67f275d to 9e630e1 Compare November 26, 2025 18:05
@jkleinsc jkleinsc merged commit 05b4b57 into 40-x-y Jan 12, 2026
103 of 104 checks passed
@release-clerk
Copy link

release-clerk bot commented Jan 12, 2026

Release Notes Persisted

Added support for WebSocket authentication through the login event on webContents.

@jkleinsc jkleinsc deleted the web-socket-40-x-y branch January 12, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

40-x-y backport/approved ✅ backport This is a backport PR semver/minor backwards-compatible functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants