[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
This commit is contained in:
Alex
2026-06-05 09:23:58 -04:00
committed by GitHub
parent 4f5982f522
commit b6408f71cb
8 changed files with 20 additions and 9 deletions
-1
View File
@@ -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",
+6 -8
View File
@@ -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;
}
@@ -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.
@@ -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);
}
@@ -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)
@@ -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 {}
@@ -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:
@@ -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();
}