From b6408f71cba316c1218834d08838e7061e1e4b0f Mon Sep 17 00:00:00 2001 From: Alex <256235273+alekspop26@users.noreply.github.com> Date: Fri, 5 Jun 2026 09:23:58 -0400 Subject: [PATCH] [VPN 2.0] Add GetLastConnectionError API to BraveVpnService (#37008) Currently, SkusInternalsUI uses a call to the VPN connection manager to get a last VPN error. This is relevant only to Architecture 1.0, since in Architecture 2.0 there is no connection manager in the browser. Hence we need to implement an implementation-agnotic API in the BraveVpnService, to access the last VPN connection error in SkusInternalsUI. This change introduces this new API. Resolves https://github.com/brave/brave-browser/issues/55762 --- browser/ui/BUILD.gn | 1 - browser/ui/webui/skus_internals_ui.cc | 14 ++++++-------- components/brave_vpn/browser/brave_vpn_service.h | 1 + .../brave_vpn/browser/brave_vpn_service_impl.cc | 5 +++++ .../brave_vpn/browser/brave_vpn_service_impl.h | 1 + .../browser/brave_vpn_service_unittest.cc | 1 + .../brave_vpn/browser/v2/brave_vpn_service_impl.h | 1 + .../browser/v2/brave_vpn_service_impl_desktop.cc | 5 +++++ 8 files changed, 20 insertions(+), 9 deletions(-) diff --git a/browser/ui/BUILD.gn b/browser/ui/BUILD.gn index 9e8e8833902..bd317f9ee9a 100644 --- a/browser/ui/BUILD.gn +++ b/browser/ui/BUILD.gn @@ -993,7 +993,6 @@ source_set("ui") { ] } if (enable_brave_vpn_v1) { - deps += [ "//brave/components/brave_vpn/browser/connection:api" ] if (is_win) { deps += [ "//brave/components/brave_vpn/common/win", diff --git a/browser/ui/webui/skus_internals_ui.cc b/browser/ui/webui/skus_internals_ui.cc index 1465f018dfb..52d244a0a75 100644 --- a/browser/ui/webui/skus_internals_ui.cc +++ b/browser/ui/webui/skus_internals_ui.cc @@ -42,10 +42,6 @@ #include "brave/components/brave_vpn/common/pref_names.h" #endif -#if BUILDFLAG(ENABLE_BRAVE_VPN_V1) -#include "brave/components/brave_vpn/browser/connection/brave_vpn_connection_manager.h" -#endif - namespace { void SaveSkusStateToFile(const base::FilePath& path, @@ -231,10 +227,12 @@ void SkusInternalsUI::FileSelectionCanceled() { std::string SkusInternalsUI::GetLastVPNConnectionError() const { std::string error; -#if BUILDFLAG(ENABLE_BRAVE_VPN_V1) - auto* manager = g_brave_browser_process->brave_vpn_connection_manager(); - CHECK(manager); - error = manager->GetLastConnectionError(); +#if BUILDFLAG(ENABLE_BRAVE_VPN) && !BUILDFLAG(IS_ANDROID) + auto* profile = Profile::FromWebUI(web_ui()); + if (auto* service = + brave_vpn::BraveVpnServiceFactory::GetForProfile(profile)) { + error = service->GetLastConnectionError(); + } #endif return error; } diff --git a/components/brave_vpn/browser/brave_vpn_service.h b/components/brave_vpn/browser/brave_vpn_service.h index b66a3297a3c..3cecb9b6ce7 100644 --- a/components/brave_vpn/browser/brave_vpn_service.h +++ b/components/brave_vpn/browser/brave_vpn_service.h @@ -63,6 +63,7 @@ class BraveVpnService : public mojom::ServiceHandler, public KeyedService { virtual bool IsConnected() const = 0; virtual void ToggleConnection() = 0; virtual mojom::ConnectionState GetConnectionState() const = 0; + virtual std::string GetLastConnectionError() const = 0; virtual void RecordWidgetUsageMetrics(bool new_usage) = 0; #else // !BUILDFLAG(IS_ANDROID) // Public interface for Android native worker. diff --git a/components/brave_vpn/browser/brave_vpn_service_impl.cc b/components/brave_vpn/browser/brave_vpn_service_impl.cc index caf104f05c2..41f20eed4c0 100644 --- a/components/brave_vpn/browser/brave_vpn_service_impl.cc +++ b/components/brave_vpn/browser/brave_vpn_service_impl.cc @@ -122,6 +122,11 @@ std::string BraveVpnServiceImpl::GetCurrentEnvironment() const { } #if !BUILDFLAG(IS_ANDROID) +std::string BraveVpnServiceImpl::GetLastConnectionError() const { + CHECK(connection_manager_); + return connection_manager_->GetLastConnectionError(); +} + void BraveVpnServiceImpl::RecordWidgetUsageMetrics(bool new_usage) { brave_vpn_metrics_.RecordWidgetUsage(new_usage); } diff --git a/components/brave_vpn/browser/brave_vpn_service_impl.h b/components/brave_vpn/browser/brave_vpn_service_impl.h index 99e181b5c87..6916b03a019 100644 --- a/components/brave_vpn/browser/brave_vpn_service_impl.h +++ b/components/brave_vpn/browser/brave_vpn_service_impl.h @@ -77,6 +77,7 @@ class BraveVpnServiceImpl : public BraveVpnService, bool IsConnected() const override; void ToggleConnection() override; mojom::ConnectionState GetConnectionState() const override; + std::string GetLastConnectionError() const override; void RecordWidgetUsageMetrics(bool new_usage) override; #endif // !BUILDFLAG(IS_ANDROID) diff --git a/components/brave_vpn/browser/brave_vpn_service_unittest.cc b/components/brave_vpn/browser/brave_vpn_service_unittest.cc index 6c6e77c2880..8bc90c334a5 100644 --- a/components/brave_vpn/browser/brave_vpn_service_unittest.cc +++ b/components/brave_vpn/browser/brave_vpn_service_unittest.cc @@ -45,6 +45,7 @@ class TestBraveVpnService : public BraveVpnService { mojom::ConnectionState GetConnectionState() const override { return mojom::ConnectionState::DISCONNECTED; } + std::string GetLastConnectionError() const override { return {}; } void RecordWidgetUsageMetrics(bool new_usage) override {} #else void GetTimezonesForRegions(ResponseCallback callback) override {} diff --git a/components/brave_vpn/browser/v2/brave_vpn_service_impl.h b/components/brave_vpn/browser/v2/brave_vpn_service_impl.h index fc413a28da7..b7dc39dccd3 100644 --- a/components/brave_vpn/browser/v2/brave_vpn_service_impl.h +++ b/components/brave_vpn/browser/v2/brave_vpn_service_impl.h @@ -37,6 +37,7 @@ class BraveVpnServiceImpl : public BraveVpnService { bool IsConnected() const override; void ToggleConnection() override; mojom::ConnectionState GetConnectionState() const override; + std::string GetLastConnectionError() const override; void RecordWidgetUsageMetrics(bool new_usage) override; // mojom::ServiceHandler overrides: diff --git a/components/brave_vpn/browser/v2/brave_vpn_service_impl_desktop.cc b/components/brave_vpn/browser/v2/brave_vpn_service_impl_desktop.cc index 515a37219bd..1bb4e466f3e 100644 --- a/components/brave_vpn/browser/v2/brave_vpn_service_impl_desktop.cc +++ b/components/brave_vpn/browser/v2/brave_vpn_service_impl_desktop.cc @@ -26,6 +26,11 @@ mojom::ConnectionState BraveVpnServiceImpl::GetConnectionState() const { return connection_state_; } +std::string BraveVpnServiceImpl::GetLastConnectionError() const { + NOTIMPLEMENTED(); + return std::string(); +} + void BraveVpnServiceImpl::RecordWidgetUsageMetrics(bool new_usage) { NOTIMPLEMENTED(); }