-
Notifications
You must be signed in to change notification settings - Fork 868
/
about_flags.cc
485 lines (423 loc) · 25.1 KB
/
about_flags.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
/* Copyright (c) 2021 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "chrome/browser/about_flags.h"
#include "base/strings/string_util.h"
#include "brave/browser/brave_features_internal_names.h"
#include "brave/browser/ethereum_remote_client/buildflags/buildflags.h"
#include "brave/browser/ethereum_remote_client/features.h"
#include "brave/common/brave_features.h"
#include "brave/components/brave_ads/common/features.h"
#include "brave/components/brave_component_updater/browser/features.h"
#include "brave/components/brave_rewards/common/buildflags/buildflags.h"
#include "brave/components/brave_rewards/common/features.h"
#include "brave/components/brave_shields/common/features.h"
#include "brave/components/brave_sync/features.h"
#include "brave/components/brave_today/common/features.h"
#include "brave/components/brave_vpn/buildflags/buildflags.h"
#include "brave/components/brave_wallet/common/features.h"
#include "brave/components/debounce/common/features.h"
#include "brave/components/decentralized_dns/buildflags/buildflags.h"
#include "brave/components/ipfs/buildflags/buildflags.h"
#include "brave/components/ntp_background_images/browser/features.h"
#include "brave/components/sidebar/buildflags/buildflags.h"
#include "brave/components/speedreader/buildflags.h"
#include "brave/components/translate/core/common/brave_translate_features.h"
#include "brave/components/translate/core/common/buildflags.h"
#include "net/base/features.h"
#include "third_party/blink/public/common/features.h"
#if BUILDFLAG(ENABLE_BRAVE_VPN) && !defined(OS_ANDROID)
#include "brave/components/brave_vpn/features.h"
#endif
#if BUILDFLAG(ENABLE_SIDEBAR)
#include "brave/components/sidebar/features.h"
#endif
#if BUILDFLAG(ENABLE_SPEEDREADER)
#include "brave/components/speedreader/features.h"
#endif
#if BUILDFLAG(ENABLE_IPFS)
#include "brave/components/ipfs/features.h"
#endif
#if BUILDFLAG(DECENTRALIZED_DNS_ENABLED)
#include "brave/components/decentralized_dns/features.h"
#endif
using brave_shields::features::kBraveAdblockCnameUncloaking;
using brave_shields::features::kBraveAdblockCollapseBlockedElements;
using brave_shields::features::kBraveAdblockCookieListDefault;
using brave_shields::features::kBraveAdblockCosmeticFiltering;
using brave_shields::features::kBraveAdblockCspRules;
using brave_shields::features::kBraveAdblockDefault1pBlocking;
using brave_shields::features::kBraveDarkModeBlock;
using brave_shields::features::kBraveDomainBlock;
using brave_shields::features::kBraveExtensionNetworkBlocking;
using brave_shields::features::kCosmeticFilteringSyncLoad;
using debounce::features::kBraveDebounce;
using ntp_background_images::features::kBraveNTPBrandedWallpaper;
using ntp_background_images::features::kBraveNTPBrandedWallpaperDemo;
using ntp_background_images::features::kBraveNTPSuperReferralWallpaper;
namespace flag_descriptions {
namespace {
constexpr char kBraveAdblockCnameUncloakingName[] = "Enable CNAME uncloaking";
constexpr char kBraveAdblockCnameUncloakingDescription[] =
"Take DNS CNAME records into account when making network request blocking "
"decisions.";
constexpr char kBraveAdblockCollapseBlockedElementsName[] =
"Collapse HTML elements with blocked source attributes";
constexpr char kBraveAdblockCollapseBlockedElementsDescription[] =
"Cause iframe and img elements to be collapsed if the URL of their src "
"attribute is blocked";
constexpr char kBraveAdblockCookieListDefaultName[] =
"Treat 'Easylist-Cookie List' as a default list source";
constexpr char kBraveAdblockCookieListDefaultDescription[] =
"Enables the 'Easylist-Cookie List' regional list regardless of its "
"toggle setting in brave://adblock";
constexpr char kBraveAdblockCosmeticFilteringName[] =
"Enable cosmetic filtering";
constexpr char kBraveAdblockCosmeticFilteringDescription[] =
"Enable support for cosmetic filtering";
constexpr char kBraveAdblockCspRulesName[] = "Enable support for CSP rules";
constexpr char kBraveAdblockCspRulesDescription[] =
"Applies additional CSP rules to pages for which a $csp rule has been "
"loaded from a filter list";
constexpr char kBraveAdblockDefault1pBlockingName[] =
"Shields first-party network blocking";
constexpr char kBraveAdblockDefault1pBlockingDescription[] =
"Allow Brave Shields to block first-party network requests in Standard "
"blocking mode";
constexpr char kBraveAdsCustomNotificationsName[] =
"Enable Brave Ads custom push notifications";
constexpr char kBraveAdsCustomNotificationsDescription[] =
"Enable Brave Ads custom push notifications to support rich media";
constexpr char kBraveAdsCustomNotificationsFallbackName[] =
"Allow Brave Ads to fallback from native to custom push notifications";
constexpr char kBraveAdsCustomNotificationsFallbackDescription[] =
"Allow Brave Ads to fallback from native to custom push notifications on "
"operating systems which do not support native notifications";
constexpr char kBraveDarkModeBlockName[] =
"Enable dark mode blocking fingerprinting protection";
constexpr char kBraveDarkModeBlockDescription[] =
"Always report light mode when fingerprinting protections set to Strict";
constexpr char kAdblockRedirectUrlName[] =
"Enable support for $redirect-url filter option for adblock rules";
constexpr char kAdblockRedirectUrlDescription[] =
"Enable support for loading adblock replacement resources over the network "
"via the $redirect-url filter option";
constexpr char kBraveDomainBlockName[] = "Enable domain blocking";
constexpr char kBraveDomainBlockDescription[] =
"Enable support for blocking domains with an interstitial page";
constexpr char kBraveDebounceName[] = "Enable debouncing";
constexpr char kBraveDebounceDescription[] =
"Enable support for skipping top-level redirect tracking URLs";
constexpr char kBraveExtensionNetworkBlockingName[] =
"Enable extension network blocking";
constexpr char kBraveExtensionNetworkBlockingDescription[] =
"Enable blocking for network requests initiated by extensions";
constexpr char kCosmeticFilteringSyncLoadName[] =
"Enable sync loading of cosmetic filter rules";
constexpr char kCosmeticFilteringSyncLoadDescription[] =
"Enable sync loading of cosmetic filter rules";
constexpr char kBraveIpfsName[] = "Enable IPFS";
constexpr char kBraveIpfsDescription[] = "Enable native support of IPFS.";
constexpr char kBraveNTPBrandedWallpaperName[] =
"New Tab Page Branded Wallpapers";
constexpr char kBraveNTPBrandedWallpaperDescription[] =
"Allow New Tab Page Branded Wallpapers and user preference.";
constexpr char kBraveNTPBrandedWallpaperDemoName[] =
"New Tab Page Demo Branded Wallpaper";
constexpr char kBraveNTPBrandedWallpaperDemoDescription[] =
"Force dummy data for the Branded Wallpaper New Tab Page Experience. "
"View rate and user opt-in conditionals will still be followed to decide "
"when to display the Branded Wallpaper.";
constexpr char kBraveSidebarName[] = "Enable Sidebar";
// TODO(simon): Use better description.
constexpr char kBraveSidebarDescription[] = "Enable Sidebar";
constexpr char kBraveSpeedreaderName[] = "Enable SpeedReader";
constexpr char kBraveSpeedreaderDescription[] =
"Enables faster loading of simplified article-style web pages.";
constexpr char kBraveSpeedreaderLegacyName[] =
"Enable legacy adblock based backend for SpeedReader";
constexpr char kBraveSpeedreaderLegacyDescription[] =
"Enables the legacy backend for SpeedReader. Uses adblock rules to "
"determine if pages are readable and distills using CSS selector rules.";
constexpr char kBraveSyncName[] = "Enable Brave Sync v2";
constexpr char kBraveSyncDescription[] =
"Brave Sync v2 integrates with chromium sync engine with Brave specific "
"authentication flow and enforce client side encryption";
constexpr char kBraveVPNName[] = "Enable experimental Brave VPN";
constexpr char kBraveVPNDescription[] = "Experimental native VPN support";
constexpr char kBraveDecentralizedDnsName[] = "Enable decentralized DNS";
constexpr char kBraveDecentralizedDnsDescription[] =
"Enable decentralized DNS support, such as Unstoppable Domains and "
"Ethereum Name Service (ENS).";
constexpr char kBraveEphemeralStorageName[] = "Enable Ephemeral Storage";
constexpr char kBraveEphemeralStorageDescription[] =
"Use ephemeral storage for third-party frames";
constexpr char kBraveEphemeralStorageKeepAliveName[] =
"Ephemeral Storage Keep Alive";
constexpr char kBraveEphemeralStorageKeepAliveDescription[] =
"Keep ephemeral storage partitions alive for a specified time after all "
"tabs for that origin are closed";
constexpr char kBraveFirstPartyEphemeralStorageName[] =
"First Party Ephemeral Storage";
constexpr char kBraveFirstPartyEphemeralStorageDescription[] =
"Enable support for first party ephemeral storage using SESSION ONLY "
"cookie setting";
#if BUILDFLAG(ENABLE_GEMINI_WALLET)
constexpr char kBraveRewardsGeminiName[] = "Enable Gemini for Brave Rewards";
constexpr char kBraveRewardsGeminiDescription[] =
"Enables support for Gemini as an external wallet provider for Brave";
#endif
constexpr char kBraveRewardsVerboseLoggingName[] =
"Enable Brave Rewards verbose logging";
constexpr char kBraveRewardsVerboseLoggingDescription[] =
"Enables detailed logging of Brave Rewards system events to a log file "
"stored on your device. Please note that this log file could include "
"information such as browsing history and credentials such as passwords "
"and access tokens depending on your activity. Please do not share it "
"unless asked to by Brave staff.";
constexpr char kBraveSearchDefaultAPIName[] =
"Enable Brave Search website default search provider API";
constexpr char kBraveSearchDefaultAPIDescription[] =
"Enable javascript API only on "
"Brave Search websites which will allow the user to make the search engine "
"their default search provider.";
constexpr char kBraveSuperReferralName[] = "Enable Brave Super Referral";
constexpr char kBraveSuperReferralDescription[] =
"Use custom theme for Brave Super Referral";
constexpr char kNativeBraveWalletName[] = "Enable Brave Wallet";
constexpr char kNativeBraveWalletDescription[] =
"Native cryptocurrency wallet support without the use of extensions";
constexpr char kBraveNewsName[] = "Enable Brave News";
constexpr char kBraveNewsDescription[] =
"Brave News is completely private and includes anonymized ads matched on "
"your device.";
constexpr char kCryptoWalletsForNewInstallsName[] =
"Enable Crypto Wallets option in settings";
constexpr char kCryptoWalletsForNewInstallsDescription[] =
"Crypto Wallets extension is deprecated but with this option it can still "
"be enabled in settings. If it was previously used, this flag is ignored.";
constexpr char kUseDevUpdaterUrlName[] = "Use dev updater url";
constexpr char kUseDevUpdaterUrlDescription[] =
"Use the dev url for the component updater. "
"This is for internal testing only.";
constexpr char kBraveTranslateGoName[] =
"Enable internal translate engine (brave-translate-go)";
constexpr char kBraveTranslateGoDescription[] =
"Enable internal translate engine, which are build on top of client engine "
"and brave translation backed. Also disables suggestions to install google "
"translate extension.";
// A blink feature.
constexpr char kFileSystemAccessAPIName[] = "File System Access API";
constexpr char kFileSystemAccessAPIDescription[] =
"Enables the File System Access API, giving websites access to the file "
"system";
} // namespace
} // namespace flag_descriptions
// clang-format seems to have a lot of issues with the macros in this
// file so we turn it off for the macro sections.
// clang-format off
#if BUILDFLAG(ENABLE_BRAVE_VPN) && !defined(OS_ANDROID)
#define BRAVE_VPN_FEATURE_ENTRIES \
{kBraveVPNFeatureInternalName, \
flag_descriptions::kBraveVPNName, \
flag_descriptions::kBraveVPNDescription, \
kOsMac | kOsWin, \
FEATURE_VALUE_TYPE(brave_vpn::features::kBraveVPN)},
#else
#define BRAVE_VPN_FEATURE_ENTRIES
#endif
#if BUILDFLAG(ENABLE_SIDEBAR)
#define SIDEBAR_FEATURE_ENTRIES \
{kBraveSidebarFeatureInternalName, \
flag_descriptions::kBraveSidebarName, \
flag_descriptions::kBraveSidebarDescription, \
kOsMac | kOsWin | kOsLinux, \
FEATURE_VALUE_TYPE(sidebar::kSidebarFeature)},
#else
#define SIDEBAR_FEATURE_ENTRIES
#endif
#if BUILDFLAG(ENABLE_SPEEDREADER)
#define SPEEDREADER_FEATURE_ENTRIES \
{"brave-speedreader", \
flag_descriptions::kBraveSpeedreaderName, \
flag_descriptions::kBraveSpeedreaderDescription, kOsDesktop, \
FEATURE_VALUE_TYPE(speedreader::kSpeedreaderFeature)},
#else
#define SPEEDREADER_FEATURE_ENTRIES
#endif
#if BUILDFLAG(ENABLE_GEMINI_WALLET)
#define BRAVE_REWARDS_GEMINI_FEATURE_ENTRIES \
{"brave-rewards-gemini", \
flag_descriptions::kBraveRewardsGeminiName, \
flag_descriptions::kBraveRewardsGeminiDescription, kOsDesktop, \
FEATURE_VALUE_TYPE(brave_rewards::features::kGeminiFeature)},
#else
#define BRAVE_REWARDS_GEMINI_FEATURE_ENTRIES
#endif
#if BUILDFLAG(ENABLE_IPFS)
#define BRAVE_IPFS_FEATURE_ENTRIES \
{"brave-ipfs", \
flag_descriptions::kBraveIpfsName, \
flag_descriptions::kBraveIpfsDescription, \
kOsDesktop | kOsAndroid, \
FEATURE_VALUE_TYPE(ipfs::features::kIpfsFeature)},
#else
#define BRAVE_IPFS_FEATURE_ENTRIES
#endif
#define BRAVE_NATIVE_WALLET_FEATURE_ENTRIES \
{"native-brave-wallet", \
flag_descriptions::kNativeBraveWalletName, \
flag_descriptions::kNativeBraveWalletDescription, \
kOsDesktop | flags_ui::kOsAndroid, \
FEATURE_VALUE_TYPE(brave_wallet::features::kNativeBraveWalletFeature)},
#define BRAVE_NEWS_FEATURE_ENTRIES \
{"brave-news", \
flag_descriptions::kBraveNewsName, \
flag_descriptions::kBraveNewsDescription, \
kOsDesktop | flags_ui::kOsAndroid, \
FEATURE_VALUE_TYPE(brave_today::features::kBraveNewsFeature)},
#if BUILDFLAG(ETHEREUM_REMOTE_CLIENT_ENABLED)
#define CRYPTO_WALLETS_FEATURE_ENTRIES \
{"ethereum_remote-client_new-installs", \
flag_descriptions::kCryptoWalletsForNewInstallsName, \
flag_descriptions::kCryptoWalletsForNewInstallsDescription, \
kOsDesktop, \
FEATURE_VALUE_TYPE( \
ethereum_remote_client::features::kCryptoWalletsForNewInstallsFeature)},
#else
#define CRYPTO_WALLETS_FEATURE_ENTRIES
#endif
#if BUILDFLAG(DECENTRALIZED_DNS_ENABLED)
#define BRAVE_DECENTRALIZED_DNS_FEATURE_ENTRIES \
{"brave-decentralized-dns", \
flag_descriptions::kBraveDecentralizedDnsName, \
flag_descriptions::kBraveDecentralizedDnsDescription, \
kOsDesktop | kOsAndroid, \
FEATURE_VALUE_TYPE(decentralized_dns::features::kDecentralizedDns)},
#else
#define BRAVE_DECENTRALIZED_DNS_FEATURE_ENTRIES
#endif
#if BUILDFLAG(ENABLE_BRAVE_TRANSLATE_GO)
#define BRAVE_TRANSLATE_GO_FEATURE_ENTRIES \
{"brave-translate-go", \
flag_descriptions::kBraveTranslateGoName, \
flag_descriptions::kBraveTranslateGoDescription, \
kOsDesktop, \
FEATURE_VALUE_TYPE(translate::features::kUseBraveTranslateGo)},
#else
#define BRAVE_TRANSLATE_GO_FEATURE_ENTRIES
#endif // BUILDFLAG(ENABLE_BRAVE_TRANSLATE_GO)
#define BRAVE_ABOUT_FLAGS_FEATURE_ENTRIES \
{"use-dev-updater-url", \
flag_descriptions::kUseDevUpdaterUrlName, \
flag_descriptions::kUseDevUpdaterUrlDescription, kOsAll, \
FEATURE_VALUE_TYPE(brave_component_updater::kUseDevUpdaterUrl)}, \
{"brave-ntp-branded-wallpaper", \
flag_descriptions::kBraveNTPBrandedWallpaperName, \
flag_descriptions::kBraveNTPBrandedWallpaperDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveNTPBrandedWallpaper)}, \
{"brave-ntp-branded-wallpaper-demo", \
flag_descriptions::kBraveNTPBrandedWallpaperDemoName, \
flag_descriptions::kBraveNTPBrandedWallpaperDemoDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveNTPBrandedWallpaperDemo)}, \
{"brave-adblock-cname-uncloaking", \
flag_descriptions::kBraveAdblockCnameUncloakingName, \
flag_descriptions::kBraveAdblockCnameUncloakingDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveAdblockCnameUncloaking)}, \
{"brave-adblock-collapse-blocked-elements", \
flag_descriptions::kBraveAdblockCollapseBlockedElementsName, \
flag_descriptions::kBraveAdblockCollapseBlockedElementsDescription, \
kOsAll, FEATURE_VALUE_TYPE(kBraveAdblockCollapseBlockedElements)}, \
{"brave-adblock-cookie-list-default", \
flag_descriptions::kBraveAdblockCookieListDefaultName, \
flag_descriptions::kBraveAdblockCookieListDefaultDescription, \
kOsAll, FEATURE_VALUE_TYPE(kBraveAdblockCookieListDefault)}, \
{"brave-adblock-cosmetic-filtering", \
flag_descriptions::kBraveAdblockCosmeticFilteringName, \
flag_descriptions::kBraveAdblockCosmeticFilteringDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveAdblockCosmeticFiltering)}, \
{"brave-adblock-csp-rules", \
flag_descriptions::kBraveAdblockCspRulesName, \
flag_descriptions::kBraveAdblockCspRulesDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveAdblockCspRules)}, \
{"brave-adblock-default-1p-blocking", \
flag_descriptions::kBraveAdblockDefault1pBlockingName, \
flag_descriptions::kBraveAdblockDefault1pBlockingDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveAdblockDefault1pBlocking)}, \
{"brave-dark-mode-block", \
flag_descriptions::kBraveDarkModeBlockName, \
flag_descriptions::kBraveDarkModeBlockDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveDarkModeBlock)}, \
{"brave-adblock-redirect-url", \
flag_descriptions::kAdblockRedirectUrlName, \
flag_descriptions::kAdblockRedirectUrlDescription, kOsAll, \
FEATURE_VALUE_TYPE(net::features::kAdblockRedirectUrl)}, \
{"brave-domain-block", \
flag_descriptions::kBraveDomainBlockName, \
flag_descriptions::kBraveDomainBlockDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveDomainBlock)}, \
{"brave-debounce", \
flag_descriptions::kBraveDebounceName, \
flag_descriptions::kBraveDebounceDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveDebounce)}, \
{"brave-extension-network-blocking", \
flag_descriptions::kBraveExtensionNetworkBlockingName, \
flag_descriptions::kBraveExtensionNetworkBlockingDescription, kOsAll, \
FEATURE_VALUE_TYPE(kBraveExtensionNetworkBlocking)}, \
{"brave-cosmetic-filtering-sync-load", \
flag_descriptions::kCosmeticFilteringSyncLoadName, \
flag_descriptions::kCosmeticFilteringSyncLoadDescription, kOsAll, \
FEATURE_VALUE_TYPE(kCosmeticFilteringSyncLoad)}, \
{"brave-super-referral", \
flag_descriptions::kBraveSuperReferralName, \
flag_descriptions::kBraveSuperReferralDescription, \
flags_ui::kOsMac | flags_ui::kOsWin | flags_ui::kOsAndroid, \
FEATURE_VALUE_TYPE(kBraveNTPSuperReferralWallpaper)}, \
{"brave-ephemeral-storage", \
flag_descriptions::kBraveEphemeralStorageName, \
flag_descriptions::kBraveEphemeralStorageDescription, kOsAll, \
FEATURE_VALUE_TYPE(net::features::kBraveEphemeralStorage)}, \
{"brave-ephemeral-storage-keep-alive", \
flag_descriptions::kBraveEphemeralStorageKeepAliveName, \
flag_descriptions::kBraveEphemeralStorageKeepAliveDescription, kOsAll, \
FEATURE_VALUE_TYPE(net::features::kBraveEphemeralStorageKeepAlive)}, \
{"brave-first-party-ephemeral-storage", \
flag_descriptions::kBraveFirstPartyEphemeralStorageName, \
flag_descriptions::kBraveFirstPartyEphemeralStorageDescription, \
kOsAll, \
FEATURE_VALUE_TYPE(net::features::kBraveFirstPartyEphemeralStorage)}, \
{"brave-rewards-verbose-logging", \
flag_descriptions::kBraveRewardsVerboseLoggingName, \
flag_descriptions::kBraveRewardsVerboseLoggingDescription, \
kOsDesktop | kOsAndroid, \
FEATURE_VALUE_TYPE(brave_rewards::features::kVerboseLoggingFeature)}, \
{"brave-ads-custom-push-notifications-ads", \
flag_descriptions::kBraveAdsCustomNotificationsName, \
flag_descriptions::kBraveAdsCustomNotificationsDescription, \
kOsAll, \
FEATURE_VALUE_TYPE(brave_ads::features::kCustomAdNotifications)}, \
{"brave-ads-allowed-to-fallback-to-custom-push-notification-ads", \
flag_descriptions::kBraveAdsCustomNotificationsFallbackName, \
flag_descriptions::kBraveAdsCustomNotificationsFallbackDescription, \
kOsAll, \
FEATURE_VALUE_TYPE( \
brave_ads::features::kAllowedToFallbackToCustomAdNotifications)}, \
{"brave-sync-v2", \
flag_descriptions::kBraveSyncName, \
flag_descriptions::kBraveSyncDescription, kOsDesktop, \
FEATURE_VALUE_TYPE(brave_sync::features::kBraveSync)}, \
{"file-system-access-api", \
flag_descriptions::kFileSystemAccessAPIName, \
flag_descriptions::kFileSystemAccessAPIDescription, kOsDesktop, \
FEATURE_VALUE_TYPE(blink::features::kFileSystemAccessAPI)}, \
BRAVE_DECENTRALIZED_DNS_FEATURE_ENTRIES \
BRAVE_IPFS_FEATURE_ENTRIES \
BRAVE_NATIVE_WALLET_FEATURE_ENTRIES \
BRAVE_NEWS_FEATURE_ENTRIES \
CRYPTO_WALLETS_FEATURE_ENTRIES \
BRAVE_REWARDS_GEMINI_FEATURE_ENTRIES \
BRAVE_VPN_FEATURE_ENTRIES \
SIDEBAR_FEATURE_ENTRIES \
SPEEDREADER_FEATURE_ENTRIES \
BRAVE_TRANSLATE_GO_FEATURE_ENTRIES