Account/Email Aliases: add profile-scoped enabled predicates (#36262)

This commit is contained in:
Szilard Szaloki
2026-05-07 23:02:37 -07:00
committed by GitHub
parent ceb89f09eb
commit f39dc03561
15 changed files with 80 additions and 32 deletions
+4 -1
View File
@@ -97,7 +97,10 @@ source_set("brave_origin") {
}
if (enable_email_aliases) {
deps += [ "//brave/components/email_aliases:service" ]
deps += [
"//brave/components/email_aliases:pref_names",
"//brave/components/email_aliases:service",
]
}
}
+1
View File
@@ -43,6 +43,7 @@ source_set("unit_tests") {
"//brave/components/brave_account",
"//brave/components/brave_account:features",
"//brave/components/email_aliases:features",
"//brave/components/email_aliases:pref_names",
"//brave/components/email_aliases:service",
"//chrome/browser/profiles",
"//chrome/test:test_support",
@@ -11,7 +11,6 @@
#include "brave/components/brave_account/brave_account_service.h"
#include "brave/components/email_aliases/email_aliases_service.h"
#include "brave/components/email_aliases/features.h"
#include "brave/components/email_aliases/pref_names.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_selections.h"
#include "components/pref_registry/pref_registry_syncable.h"
@@ -61,11 +60,9 @@ void EmailAliasesServiceFactory::RegisterProfilePrefs(
std::unique_ptr<KeyedService>
EmailAliasesServiceFactory::BuildServiceInstanceForBrowserContext(
content::BrowserContext* context) const {
if (!features::IsEmailAliasesEnabled()) {
return nullptr;
}
PrefService* pref_service = user_prefs::UserPrefs::Get(context);
if (!pref_service || !pref_service->GetBoolean(prefs::kEmailAliasesEnabled)) {
if (!pref_service ||
!features::IsEmailAliasesEnabledForProfile(*pref_service)) {
return nullptr;
}
+4 -1
View File
@@ -86,6 +86,9 @@ source_set("brave_simple_policy_map") {
}
if (enable_email_aliases) {
deps += [ "//brave/components/email_aliases:service" ]
deps += [
"//brave/components/email_aliases:pref_names",
"//brave/components/email_aliases:service",
]
}
}
+1
View File
@@ -362,6 +362,7 @@ if (enable_email_aliases) {
"//brave/browser/ui/webui/email_aliases",
"//brave/components/email_aliases:features",
"//brave/components/email_aliases:mojom",
"//brave/components/email_aliases:pref_names",
"//brave/components/email_aliases:service",
]
}
@@ -8,6 +8,7 @@
#include <optional>
#include "base/check.h"
#include "base/check_deref.h"
#include "base/check_is_test.h"
#include "base/containers/fixed_flat_set.h"
#include "base/feature_list.h"
@@ -96,7 +97,6 @@
#endif
#if BUILDFLAG(ENABLE_EMAIL_ALIASES)
#include "brave/browser/email_aliases/email_aliases_service_factory.h"
#include "brave/browser/ui/email_aliases/email_aliases_controller.h"
#include "brave/components/email_aliases/features.h"
#endif
@@ -351,11 +351,9 @@ void BraveBrowserCommandController::InitBraveCommandState() {
UpdateCommandEnabled(IDC_EXPORT_ALL_BOOKMARKS, true);
#if BUILDFLAG(ENABLE_EMAIL_ALIASES)
UpdateCommandEnabled(
IDC_SHOW_EMAIL_ALIASES,
email_aliases::features::IsEmailAliasesEnabled() &&
email_aliases::EmailAliasesServiceFactory::GetServiceForProfile(
browser_->profile()));
UpdateCommandEnabled(IDC_SHOW_EMAIL_ALIASES,
email_aliases::features::IsEmailAliasesEnabledForProfile(
CHECK_DEREF(browser_->profile()->GetPrefs())));
#endif
if (browser_->is_type_normal()) {
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/browser_window/public/browser_window_features.h"
#include "base/check_deref.h"
#include "base/memory/ptr_util.h"
#include "base/notreached.h"
#include "brave/browser/ui/brave_browser_window.h"
@@ -114,14 +115,14 @@ void BrowserWindowFeatures::InitPostBrowserViewConstruction(
}
#if BUILDFLAG(ENABLE_EMAIL_ALIASES)
if (email_aliases::features::IsEmailAliasesEnabled()) {
if (auto* email_aliases_service =
email_aliases::EmailAliasesServiceFactory::GetServiceForProfile(
browser_view->GetProfile())) {
email_aliases_controller_ =
std::make_unique<email_aliases::EmailAliasesController>(
browser_view, email_aliases_service);
}
if (email_aliases::features::IsEmailAliasesEnabledForProfile(
CHECK_DEREF(browser_view->GetProfile()->GetPrefs()))) {
email_aliases_controller_ =
std::make_unique<email_aliases::EmailAliasesController>(
browser_view,
&CHECK_DEREF(
email_aliases::EmailAliasesServiceFactory::GetServiceForProfile(
browser_view->GetProfile())));
}
#endif
+6 -5
View File
@@ -292,17 +292,18 @@ void BraveSettingsUI::AddResources(content::WebUIDataSource* html_source,
#if BUILDFLAG(ENABLE_EMAIL_ALIASES)
html_source->AddBoolean(
"isEmailAliasesEnabled",
email_aliases::features::IsEmailAliasesEnabled() &&
email_aliases::EmailAliasesServiceFactory::GetServiceForProfile(
profile));
email_aliases::features::IsEmailAliasesEnabledForProfile(
CHECK_DEREF(profile->GetPrefs())));
#endif
#if BUILDFLAG(ENABLE_CONTAINERS)
html_source->AddBoolean(
"isContainersEnabled",
base::FeatureList::IsEnabled(containers::features::kContainers));
#endif
html_source->AddBoolean("isBraveAccountEnabled",
brave_account::features::IsBraveAccountEnabled());
html_source->AddBoolean(
"isBraveAccountEnabled",
brave_account::features::IsBraveAccountEnabledForProfile(
CHECK_DEREF(profile->GetPrefs())));
html_source->AddBoolean("isBraveOriginBrandedBuild",
BUILDFLAG(IS_BRAVE_ORIGIN_BRANDED));
html_source->AddBoolean("isBraveOriginPurchased",
+16 -3
View File
@@ -17,9 +17,9 @@ namespace {
BASE_FEATURE(kBraveAccount, base::FEATURE_DISABLED_BY_DEFAULT);
} // namespace
// Brave Account is enabled when:
// - the explicit kBraveAccount feature flag is enabled (dev/testing), OR
// - a dependent feature (e.g. Email Aliases) requires it
// Process-wide: true if kBraveAccount is on, or a dependent feature (e.g.
// Email Aliases) is built and feature-flagged on. Use when per-profile state
// shouldn't or can't influence the answer.
bool IsBraveAccountEnabled() {
return base::FeatureList::IsEnabled(kBraveAccount)
#if BUILDFLAG(ENABLE_EMAIL_ALIASES)
@@ -28,6 +28,19 @@ bool IsBraveAccountEnabled() {
;
}
// Per-profile: "is Brave Account active for this profile?".
// Use for UI gating and other per-profile decisions. The result can differ
// across profiles because dependent features (Email Aliases) consult a
// per-profile pref.
bool IsBraveAccountEnabledForProfile(const PrefService& pref_service) {
return base::FeatureList::IsEnabled(kBraveAccount)
#if BUILDFLAG(ENABLE_EMAIL_ALIASES)
||
email_aliases::features::IsEmailAliasesEnabledForProfile(pref_service)
#endif
;
}
const base::Feature& BraveAccountFeatureForTesting() {
return kBraveAccount;
}
+3
View File
@@ -8,9 +8,12 @@
#include "base/feature_list.h"
class PrefService;
namespace brave_account::features {
bool IsBraveAccountEnabled();
bool IsBraveAccountEnabledForProfile(const PrefService& pref_service);
const base::Feature& BraveAccountFeatureForTesting();
+11 -1
View File
@@ -27,12 +27,21 @@ generated_types("email_aliases_api_types") {
root_namespace = "email_aliases"
}
source_set("pref_names") {
sources = [ "pref_names.h" ]
}
static_library("features") {
sources = [
"features.cc",
"features.h",
]
deps = [
":pref_names",
"//components/prefs",
]
public_deps = [ "//base" ]
}
@@ -45,11 +54,11 @@ static_library("service") {
"email_aliases_notes.h",
"email_aliases_service.cc",
"email_aliases_service.h",
"pref_names.h",
]
deps = [
":email_aliases_api_types",
":mojom",
":pref_names",
"//base",
"//brave/brave_domains",
"//brave/components/brave_account",
@@ -97,6 +106,7 @@ source_set("unit_tests") {
]
deps = [
":features",
":pref_names",
":service",
":test_utils",
"//base/test:test_support",
+8
View File
@@ -5,6 +5,9 @@
#include "brave/components/email_aliases/features.h"
#include "brave/components/email_aliases/pref_names.h"
#include "components/prefs/pref_service.h"
namespace email_aliases::features {
BASE_FEATURE(kEmailAliases, base::FEATURE_DISABLED_BY_DEFAULT);
@@ -13,4 +16,9 @@ bool IsEmailAliasesEnabled() {
return base::FeatureList::IsEnabled(kEmailAliases);
}
bool IsEmailAliasesEnabledForProfile(const PrefService& pref_service) {
return IsEmailAliasesEnabled() &&
pref_service.GetBoolean(prefs::kEmailAliasesEnabled);
}
} // namespace email_aliases::features
+3
View File
@@ -8,11 +8,14 @@
#include "base/feature_list.h"
class PrefService;
namespace email_aliases::features {
BASE_DECLARE_FEATURE(kEmailAliases);
bool IsEmailAliasesEnabled();
bool IsEmailAliasesEnabledForProfile(const PrefService& pref_service);
} // namespace email_aliases::features
+4 -1
View File
@@ -61,6 +61,9 @@ source_set("brave_origin") {
deps += [ "//brave/components/brave_news/common" ]
}
if (enable_email_aliases) {
deps += [ "//brave/components/email_aliases:service" ]
deps += [
"//brave/components/email_aliases:pref_names",
"//brave/components/email_aliases:service",
]
}
}
+4 -1
View File
@@ -36,6 +36,9 @@ source_set("policy") {
deps += [ "//brave/components/brave_talk" ]
}
if (enable_email_aliases) {
deps += [ "//brave/components/email_aliases:service" ]
deps += [
"//brave/components/email_aliases:pref_names",
"//brave/components/email_aliases:service",
]
}
}