Skip to content

Commit 632f17b

Browse files
committed
Fixes ads enabled by default on upgrade for new ad regions
1 parent 737e7b8 commit 632f17b

File tree

9 files changed

+1393
-25
lines changed

9 files changed

+1393
-25
lines changed

browser/extensions/api/brave_rewards_api.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,9 @@ ExtensionFunction::ResponseAction BraveRewardsSaveAdsSettingFunction::Run() {
605605
AdsService* ads_service_ = AdsServiceFactory::GetForProfile(profile);
606606
if (ads_service_) {
607607
if (params->key == "adsEnabled") {
608-
ads_service_->SetEnabled(params->value == "true");
608+
const auto is_enabled =
609+
params->value == "true" && ads_service_->IsSupportedLocale();
610+
ads_service_->SetEnabled(is_enabled);
609611
} else if (params->key == "shouldAllowAdConversionTracking") {
610612
ads_service_->SetAllowAdConversionTracking(params->value == "true");
611613
}

components/brave_ads/browser/ads_service_impl.cc

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1237,7 +1237,8 @@ bool AdsServiceImpl::MigratePrefs(
12371237
{{2, 3}, &AdsServiceImpl::MigratePrefsVersion2To3},
12381238
{{3, 4}, &AdsServiceImpl::MigratePrefsVersion3To4},
12391239
{{4, 5}, &AdsServiceImpl::MigratePrefsVersion4To5},
1240-
{{5, 6}, &AdsServiceImpl::MigratePrefsVersion5To6}
1240+
{{5, 6}, &AdsServiceImpl::MigratePrefsVersion5To6},
1241+
{{6, 7}, &AdsServiceImpl::MigratePrefsVersion6To7}
12411242
};
12421243

12431244
// Cycle through migration paths, i.e. if upgrading from version 2 to 5 we
@@ -1422,6 +1423,72 @@ void AdsServiceImpl::MigratePrefsVersion5To6() {
14221423
SetUint64Pref(prefs::kAdsPerDay, 20);
14231424
}
14241425

1426+
void AdsServiceImpl::MigratePrefsVersion6To7() {
1427+
// Disable ads for newly supported regions due to a bug where ads were enabled
1428+
// even if the users region was not supported
1429+
1430+
const auto locale = GetLocale();
1431+
const auto region = ads::Ads::GetRegion(locale);
1432+
1433+
const std::vector<std::string> legacy_regions = {
1434+
"US", // United States of America
1435+
"CA", // Canada
1436+
"GB", // United Kingdom (Great Britain and Northern Ireland)
1437+
"DE", // Germany
1438+
"FR", // France
1439+
"AU", // Australia
1440+
"NZ", // New Zealand
1441+
"IE", // Ireland
1442+
"AR", // Argentina
1443+
"AT", // Austria
1444+
"BR", // Brazil
1445+
"CH", // Switzerland
1446+
"CL", // Chile
1447+
"CO", // Colombia
1448+
"DK", // Denmark
1449+
"EC", // Ecuador
1450+
"IL", // Israel
1451+
"IN", // India
1452+
"IT", // Italy
1453+
"JP", // Japan
1454+
"KR", // Korea
1455+
"MX", // Mexico
1456+
"NL", // Netherlands
1457+
"PE", // Peru
1458+
"PH", // Philippines
1459+
"PL", // Poland
1460+
"SE", // Sweden
1461+
"SG", // Singapore
1462+
"VE", // Venezuela
1463+
"ZA", // South Africa
1464+
"KY" // Cayman Islands
1465+
};
1466+
1467+
const bool is_a_legacy_region = std::find(legacy_regions.begin(),
1468+
legacy_regions.end(), region) != legacy_regions.end();
1469+
1470+
if (is_a_legacy_region) {
1471+
// Do not disable Brave Ads for legacy regions introduced before version
1472+
// 1.3.x
1473+
return;
1474+
}
1475+
1476+
const int last_schema_version =
1477+
GetIntegerPref(prefs::kSupportedRegionsLastSchemaVersion);
1478+
1479+
if (last_schema_version >= 4) {
1480+
// Do not disable Brave Ads if |prefs::kSupportedRegionsLastSchemaVersion|
1481+
// is newer than or equal to schema version 4. This can occur if a user is
1482+
// upgrading from an older version of 1.3.x or above
1483+
return;
1484+
}
1485+
1486+
SetEnabled(false);
1487+
1488+
SetBooleanPref(prefs::kShouldShowOnboarding, true);
1489+
SetUint64Pref(prefs::kOnboardingTimestamp, 0);
1490+
}
1491+
14251492
int AdsServiceImpl::GetPrefsVersion() const {
14261493
return GetIntegerPref(prefs::kVersion);
14271494
}

components/brave_ads/browser/ads_service_impl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ class AdsServiceImpl : public AdsService,
286286
void MigratePrefsVersion3To4();
287287
void MigratePrefsVersion4To5();
288288
void MigratePrefsVersion5To6();
289+
void MigratePrefsVersion6To7();
289290
int GetPrefsVersion() const;
290291

291292
bool IsUpgradingFromPreBraveAdsBuild();

components/brave_ads/common/pref_names.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const int kSupportedRegionsSchemaVersionNumber = 5;
5555
// Stores the preferences version number
5656
const char kVersion[] = "brave.brave_ads.prefs.version";
5757

58-
const int kCurrentVersionNumber = 6;
58+
const int kCurrentVersionNumber = 7;
5959

6060
} // namespace prefs
6161

0 commit comments

Comments
 (0)