Use base::OnceCallback for Brave Ads Initialize/Shutdown.

This commit is contained in:
Aleksey Seren
2022-11-04 09:48:14 -05:00
parent 5ca8831436
commit a0136d31fd
20 changed files with 219 additions and 236 deletions
+2 -29
View File
@@ -45,20 +45,11 @@ BatAdsImpl::BatAdsImpl(
BatAdsImpl::~BatAdsImpl() = default;
void BatAdsImpl::Initialize(InitializeCallback callback) {
auto* holder =
new CallbackHolder<InitializeCallback>(AsWeakPtr(), std::move(callback));
ads_->Initialize(
std::bind(BatAdsImpl::OnInitialize, holder, std::placeholders::_1));
ads_->Initialize(std::move(callback));
}
void BatAdsImpl::Shutdown(ShutdownCallback callback) {
auto* holder =
new CallbackHolder<ShutdownCallback>(AsWeakPtr(), std::move(callback));
auto shutdown_callback =
std::bind(BatAdsImpl::OnShutdown, holder, std::placeholders::_1);
ads_->Shutdown(shutdown_callback);
ads_->Shutdown(std::move(callback));
}
void BatAdsImpl::OnLocaleDidChange(const std::string& locale) {
@@ -296,24 +287,6 @@ void BatAdsImpl::OnDidUpdateResourceComponent(const std::string& id) {
///////////////////////////////////////////////////////////////////////////////
void BatAdsImpl::OnInitialize(CallbackHolder<InitializeCallback>* holder,
const bool success) {
if (holder->is_valid()) {
std::move(holder->get()).Run(success);
}
delete holder;
}
void BatAdsImpl::OnShutdown(CallbackHolder<ShutdownCallback>* holder,
const bool success) {
if (holder->is_valid()) {
std::move(holder->get()).Run(success);
}
delete holder;
}
// static
void BatAdsImpl::OnMaybeServeNewTabPageAd(
CallbackHolder<MaybeServeNewTabPageAdCallback>* holder,
@@ -159,11 +159,6 @@ class BatAdsImpl : public mojom::BatAds,
T callback_;
};
static void OnInitialize(CallbackHolder<InitializeCallback>* holder,
bool success);
static void OnShutdown(CallbackHolder<ShutdownCallback>* holder,
bool success);
static void OnMaybeServeInlineContentAd(
CallbackHolder<MaybeServeInlineContentAdCallback>* holder,
const std::string& dimensions,
+6 -6
View File
@@ -269,11 +269,11 @@ ads::mojom::DBCommandResponseInfoPtr RunDBTransactionOnTaskRunner(
adsClient = new AdsClientIOS(self);
ads = ads::Ads::CreateInstance(adsClient);
ads->Initialize(^(const bool success) {
ads->Initialize(base::BindOnce(^(const bool success) {
[self periodicallyCheckForAdsResourceUpdates];
[self registerAdsResources];
completion(success);
});
}));
}
- (void)updateWalletInfo:(NSString*)paymentId base64Seed:(NSString*)base64Seed {
@@ -302,7 +302,7 @@ ads::mojom::DBCommandResponseInfoPtr RunDBTransactionOnTaskRunner(
- (void)shutdown:(nullable void (^)())completion {
if ([self isAdsServiceRunning]) {
dispatch_group_notify(self.prefsWriteGroup, dispatch_get_main_queue(), ^{
self->ads->Shutdown(^(bool) {
self->ads->Shutdown(base::BindOnce(^(bool) {
if (self->ads != nil) {
delete self->ads;
}
@@ -322,7 +322,7 @@ ads::mojom::DBCommandResponseInfoPtr RunDBTransactionOnTaskRunner(
if (completion) {
completion();
}
});
}));
});
} else {
if (completion) {
@@ -467,7 +467,7 @@ ads::mojom::DBCommandResponseInfoPtr RunDBTransactionOnTaskRunner(
return;
}
ads->RemoveAllHistory(base::BindOnce(^(const bool success) {
completion(success ? YES : NO);
completion(success);
}));
}
@@ -668,7 +668,7 @@ ads::mojom::DBCommandResponseInfoPtr RunDBTransactionOnTaskRunner(
}
ads->PurgeOrphanedAdEventsForType(static_cast<ads::mojom::AdType>(adType),
base::BindOnce(^(const bool success) {
completion(success ? YES : NO);
completion(success);
}));
}
+2 -2
View File
@@ -18,8 +18,8 @@
namespace ads {
using InitializeCallback = std::function<void(const bool)>;
using ShutdownCallback = std::function<void(const bool)>;
using InitializeCallback = base::OnceCallback<void(const bool)>;
using ShutdownCallback = base::OnceCallback<void(const bool)>;
using RemoveAllHistoryCallback = base::OnceCallback<void(const bool)>;
+73 -71
View File
@@ -70,10 +70,10 @@ namespace ads {
namespace {
void FailedToInitialize(const InitializeCallback& callback) {
void FailedToInitialize(InitializeCallback callback) {
BLOG(1, "Failed to initialize ads");
callback(/*success*/ false);
std::move(callback).Run(/*success*/ false);
}
} // namespace
@@ -163,17 +163,17 @@ void AdsImpl::Initialize(InitializeCallback callback) {
if (IsInitialized()) {
BLOG(1, "Already initialized ads");
FailedToInitialize(callback);
FailedToInitialize(std::move(callback));
return;
}
CreateOrOpenDatabase(callback);
CreateOrOpenDatabase(std::move(callback));
}
void AdsImpl::Shutdown(ShutdownCallback callback) {
if (!is_initialized_) {
BLOG(0, "Shutdown failed as not initialized");
callback(/*success*/ false);
std::move(callback).Run(/*success*/ false);
return;
}
@@ -181,7 +181,7 @@ void AdsImpl::Shutdown(ShutdownCallback callback) {
NotificationAdManager::GetInstance()->RemoveAll();
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
}
void AdsImpl::OnLocaleDidChange(const std::string& locale) {
@@ -446,99 +446,101 @@ bool AdsImpl::ToggleSavedAd(base::Value::Dict value) {
///////////////////////////////////////////////////////////////////////////////
void AdsImpl::CreateOrOpenDatabase(InitializeCallback callback) {
DatabaseManager::GetInstance()->CreateOrOpen(base::BindOnce(
&AdsImpl::OnCreateOrOpenDatabase, base::Unretained(this), callback));
DatabaseManager::GetInstance()->CreateOrOpen(
base::BindOnce(&AdsImpl::OnCreateOrOpenDatabase, base::Unretained(this),
std::move(callback)));
}
void AdsImpl::OnCreateOrOpenDatabase(const InitializeCallback& callback,
void AdsImpl::OnCreateOrOpenDatabase(InitializeCallback callback,
const bool success) {
if (!success) {
BLOG(0, "Failed to create or open database");
FailedToInitialize(callback);
FailedToInitialize(std::move(callback));
return;
}
MigrateConversions(callback);
conversions::Migrate(base::BindOnce(&AdsImpl::OnMigrateConversions,
base::Unretained(this),
std::move(callback)));
}
void AdsImpl::MigrateConversions(const InitializeCallback& callback) {
conversions::Migrate([=](const bool success) {
if (!success) {
FailedToInitialize(callback);
return;
}
void AdsImpl::OnMigrateConversions(InitializeCallback callback,
const bool success) {
if (!success) {
FailedToInitialize(std::move(callback));
return;
}
MigrateRewards(callback);
});
rewards::Migrate(base::BindOnce(&AdsImpl::OnMigrateRewards,
base::Unretained(this), std::move(callback)));
}
void AdsImpl::MigrateRewards(const InitializeCallback& callback) {
rewards::Migrate([=](const bool success) {
if (!success) {
FailedToInitialize(callback);
return;
}
void AdsImpl::OnMigrateRewards(InitializeCallback callback,
const bool success) {
if (!success) {
FailedToInitialize(std::move(callback));
return;
}
MigrateClientState(callback);
});
client::Migrate(base::BindOnce(&AdsImpl::OnMigrateClientState,
base::Unretained(this), std::move(callback)));
}
void AdsImpl::MigrateClientState(const InitializeCallback& callback) {
client::Migrate([=](const bool success) {
if (!success) {
FailedToInitialize(callback);
return;
}
void AdsImpl::OnMigrateClientState(InitializeCallback callback,
const bool success) {
if (!success) {
FailedToInitialize(std::move(callback));
return;
}
LoadClientState(callback);
});
ClientStateManager::GetInstance()->Initialize(
base::BindOnce(&AdsImpl::OnLoadClientState, base::Unretained(this),
std::move(callback)));
}
void AdsImpl::LoadClientState(const InitializeCallback& callback) {
ClientStateManager::GetInstance()->Initialize([=](const bool success) {
if (!success) {
FailedToInitialize(callback);
return;
}
void AdsImpl::OnLoadClientState(InitializeCallback callback,
const bool success) {
if (!success) {
FailedToInitialize(std::move(callback));
return;
}
MigrateConfirmationState(callback);
});
confirmations::Migrate(base::BindOnce(&AdsImpl::OnMigrateConfirmationState,
base::Unretained(this),
std::move(callback)));
}
void AdsImpl::MigrateConfirmationState(const InitializeCallback& callback) {
confirmations::Migrate([=](const bool success) {
if (!success) {
callback(/*success*/ false);
return;
}
void AdsImpl::OnMigrateConfirmationState(InitializeCallback callback,
const bool success) {
if (!success) {
FailedToInitialize(std::move(callback));
return;
}
LoadConfirmationState(callback);
});
ConfirmationStateManager::GetInstance()->Initialize(
base::BindOnce(&AdsImpl::OnLoadConfirmationState, base::Unretained(this),
std::move(callback)));
}
void AdsImpl::LoadConfirmationState(const InitializeCallback& callback) {
ConfirmationStateManager::GetInstance()->Initialize([=](const bool success) {
if (!success) {
FailedToInitialize(callback);
return;
}
void AdsImpl::OnLoadConfirmationState(InitializeCallback callback,
const bool success) {
if (!success) {
FailedToInitialize(std::move(callback));
return;
}
MigrateNotificationState(callback);
});
notifications::Migrate(base::BindOnce(&AdsImpl::OnMigrateNotificationState,
base::Unretained(this),
std::move(callback)));
}
void AdsImpl::MigrateNotificationState(const InitializeCallback& callback) {
notifications::Migrate([=](const bool success) {
if (!success) {
callback(/*success*/ false);
return;
}
void AdsImpl::OnMigrateNotificationState(InitializeCallback callback,
const bool success) {
if (!success) {
FailedToInitialize(std::move(callback));
return;
}
SuccessfullyInitialized(callback);
});
}
void AdsImpl::SuccessfullyInitialized(const InitializeCallback& callback) {
BLOG(1, "Successfully initialized ads");
is_initialized_ = true;
@@ -546,7 +548,7 @@ void AdsImpl::SuccessfullyInitialized(const InitializeCallback& callback) {
UserActivityManager::GetInstance()->RecordEvent(
UserActivityEventType::kInitializedAds);
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
Start();
}
+8 -9
View File
@@ -196,16 +196,15 @@ class AdsImpl final : public Ads,
private:
void CreateOrOpenDatabase(InitializeCallback callback);
void OnCreateOrOpenDatabase(const InitializeCallback& callback, bool success);
void MigrateConversions(const InitializeCallback& callback);
void MigrateRewards(const InitializeCallback& callback);
void MigrateClientState(const InitializeCallback& callback);
void LoadClientState(const InitializeCallback& callback);
void MigrateConfirmationState(const InitializeCallback& callback);
void LoadConfirmationState(const InitializeCallback& callback);
void MigrateNotificationState(const InitializeCallback& callback);
void OnCreateOrOpenDatabase(InitializeCallback callback, bool success);
void OnMigrateConversions(InitializeCallback callback, bool success);
void OnMigrateRewards(InitializeCallback callback, bool success);
void OnMigrateClientState(InitializeCallback callback, bool success);
void OnLoadClientState(InitializeCallback callback, bool success);
void OnMigrateConfirmationState(InitializeCallback callback, bool success);
void OnLoadConfirmationState(InitializeCallback callback, bool success);
void OnMigrateNotificationState(InitializeCallback callback, bool success);
void SuccessfullyInitialized(const InitializeCallback& callback);
bool IsInitialized() const;
void Start();
@@ -182,11 +182,11 @@ void UnitTestBase::Initialize() {
client_state_manager_ = std::make_unique<ClientStateManager>();
client_state_manager_->Initialize(
[](const bool success) { ASSERT_TRUE(success); });
base::BindOnce([](const bool success) { ASSERT_TRUE(success); }));
confirmation_state_manager_ = std::make_unique<ConfirmationStateManager>();
confirmation_state_manager_->Initialize(
[](const bool success) { ASSERT_TRUE(success); });
base::BindOnce([](const bool success) { ASSERT_TRUE(success); }));
covariate_manager_ = std::make_unique<CovariateManager>();
@@ -321,15 +321,18 @@ void UnitTestBase::SetUpIntegrationTest() {
"initialized for integration testing";
ads_ = std::make_unique<AdsImpl>(ads_client_mock_.get());
ads_->Initialize([=](const bool success) {
ASSERT_TRUE(success);
ads_->OnRewardsWalletDidChange(
/*payment_id*/ "c387c2d8-a26d-4451-83e4-5c0c6fd942be",
/*seed*/ "5BEKM1Y7xcRSg/1q8in/+Lki2weFZQB+UMYZlRw8ql8=");
});
ads_->Initialize(
base::BindOnce(&UnitTestBase::OnAdsInitialize, base::Unretained(this)));
task_environment_.RunUntilIdle();
}
void UnitTestBase::OnAdsInitialize(const bool success) {
ASSERT_TRUE(success);
ads_->OnRewardsWalletDidChange(
/*payment_id*/ "c387c2d8-a26d-4451-83e4-5c0c6fd942be",
/*seed*/ "5BEKM1Y7xcRSg/1q8in/+Lki2weFZQB+UMYZlRw8ql8=");
}
} // namespace ads
@@ -145,6 +145,8 @@ class UnitTestBase : public testing::Test {
void SetUpIntegrationTest();
void OnAdsInitialize(bool success);
base::ScopedTempDir temp_dir_;
bool is_integration_test_ = false;
@@ -137,9 +137,7 @@ const FlaggedAdList& ClientStateManager::GetFlaggedAds() const {
}
void ClientStateManager::Initialize(InitializeCallback callback) {
callback_ = std::move(callback);
Load();
Load(std::move(callback));
}
void ClientStateManager::AppendHistory(const HistoryItemInfo& history_item) {
@@ -537,15 +535,18 @@ void ClientStateManager::Save() {
base::BindOnce(&OnSaved));
}
void ClientStateManager::Load() {
void ClientStateManager::Load(InitializeCallback callback) {
BLOG(3, "Loading client state");
AdsClientHelper::GetInstance()->Load(
kClientStateFilename,
base::BindOnce(&ClientStateManager::OnLoaded, base::Unretained(this)));
base::BindOnce(&ClientStateManager::OnLoaded, base::Unretained(this),
std::move(callback)));
}
void ClientStateManager::OnLoaded(const bool success, const std::string& json) {
void ClientStateManager::OnLoaded(InitializeCallback callback,
const bool success,
const std::string& json) {
if (!success) {
BLOG(3, "Client state does not exist, creating default state");
@@ -559,7 +560,7 @@ void ClientStateManager::OnLoaded(const bool success, const std::string& json) {
BLOG(3, "Failed to parse client state: " << json);
callback_(/*success*/ false);
std::move(callback).Run(/*success*/ false);
return;
}
@@ -573,7 +574,7 @@ void ClientStateManager::OnLoaded(const bool success, const std::string& json) {
BLOG(9, "Client state is mutated");
}
callback_(/*success */ true);
std::move(callback).Run(/*success */ true);
}
bool ClientStateManager::FromJson(const std::string& json) {
@@ -100,8 +100,10 @@ class ClientStateManager final {
private:
void Save();
void Load();
void OnLoaded(bool success, const std::string& json);
void Load(InitializeCallback callback);
void OnLoaded(InitializeCallback callback,
bool success,
const std::string& json);
bool FromJson(const std::string& json);
@@ -110,8 +112,6 @@ class ClientStateManager final {
bool is_mutated_ = false;
bool is_initialized_ = false;
InitializeCallback callback_;
};
} // namespace ads
@@ -307,25 +307,20 @@ bool ConfirmationStateManager::HasInstance() {
}
void ConfirmationStateManager::Initialize(InitializeCallback callback) {
callback_ = std::move(callback);
BLOG(3, "Loading confirmations state");
Load();
AdsClientHelper::GetInstance()->Load(
kConfirmationStateFilename,
base::BindOnce(&ConfirmationStateManager::OnLoaded,
base::Unretained(this), std::move(callback)));
}
bool ConfirmationStateManager::IsInitialized() const {
return is_initialized_;
}
void ConfirmationStateManager::Load() {
BLOG(3, "Loading confirmations state");
AdsClientHelper::GetInstance()->Load(
kConfirmationStateFilename,
base::BindOnce(&ConfirmationStateManager::OnLoaded,
base::Unretained(this)));
}
void ConfirmationStateManager::OnLoaded(const bool success,
void ConfirmationStateManager::OnLoaded(InitializeCallback callback,
const bool success,
const std::string& json) {
if (!success) {
BLOG(3, "Confirmations state does not exist, creating default state");
@@ -339,7 +334,7 @@ void ConfirmationStateManager::OnLoaded(const bool success,
BLOG(3, "Failed to parse confirmations state: " << json);
callback_(/*success*/ false);
std::move(callback).Run(/*success*/ false);
return;
}
@@ -353,7 +348,7 @@ void ConfirmationStateManager::OnLoaded(const bool success,
BLOG(9, "Confirmation state is mutated");
}
callback_(/*success*/ true);
std::move(callback).Run(/*success*/ true);
}
void ConfirmationStateManager::Save() {
@@ -41,7 +41,6 @@ class ConfirmationStateManager final {
void Initialize(InitializeCallback callback);
bool IsInitialized() const;
void Load();
void Save();
std::string ToJson();
@@ -65,7 +64,9 @@ class ConfirmationStateManager final {
bool is_mutated() const { return is_mutated_; }
private:
void OnLoaded(bool success, const std::string& json);
void OnLoaded(InitializeCallback callback,
bool success,
const std::string& json);
bool ParseFailedConfirmationsFromDictionary(const base::Value::Dict& dict);
@@ -76,7 +77,6 @@ class ConfirmationStateManager final {
bool is_mutated_ = false;
bool is_initialized_ = false;
InitializeCallback callback_;
ConfirmationList failed_confirmations_;
@@ -6,6 +6,7 @@
#include "bat/ads/internal/legacy_migration/client/legacy_client_migration.h"
#include <string>
#include <utility>
#include "base/bind.h"
#include "bat/ads/internal/ads_client_helper.h"
@@ -19,21 +20,21 @@ namespace ads::client {
namespace {
void FailedToMigrate(const InitializeCallback& callback) {
callback(/*success*/ false);
void FailedToMigrate(InitializeCallback callback) {
std::move(callback).Run(/*success*/ false);
}
void SuccessfullyMigrated(const InitializeCallback& callback) {
void SuccessfullyMigrated(InitializeCallback callback) {
AdsClientHelper::GetInstance()->SetBooleanPref(prefs::kHasMigratedClientState,
true);
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
}
} // namespace
void Migrate(InitializeCallback callback) {
if (HasMigrated()) {
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
return;
}
@@ -46,14 +47,14 @@ void Migrate(InitializeCallback callback) {
const std::string& json) {
if (!success) {
// Client state does not exist
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
return;
}
ClientInfo client;
if (!client.FromJson(json)) {
BLOG(0, "Failed to load client state");
FailedToMigrate(callback);
FailedToMigrate(std::move(callback));
return;
}
@@ -67,19 +68,19 @@ void Migrate(InitializeCallback callback) {
AdsClientHelper::GetInstance()->Save(
kClientStateFilename, migrated_json,
base::BindOnce(
[](const InitializeCallback& callback, const bool success) {
[](InitializeCallback callback, const bool success) {
if (!success) {
BLOG(0, "Failed to save client state");
FailedToMigrate(callback);
FailedToMigrate(std::move(callback));
return;
}
BLOG(3, "Successfully migrated client state");
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
},
callback));
std::move(callback)));
},
callback));
std::move(callback)));
}
} // namespace ads::client
@@ -5,6 +5,7 @@
#include "bat/ads/internal/legacy_migration/client/legacy_client_migration_unittest_util.h"
#include "base/bind.h"
#include "base/check.h"
#include "bat/ads/internal/ads_client_helper.h"
#include "bat/ads/internal/legacy_migration/client/legacy_client_migration.h"
@@ -13,9 +14,11 @@
namespace ads::client {
void Migrate(const bool should_migrate) {
Migrate([should_migrate](const bool success) {
CHECK_EQ(success, should_migrate);
});
Migrate(base::BindOnce(
[](const bool should_migrate, const bool success) {
CHECK_EQ(success, should_migrate);
},
should_migrate));
}
uint64_t GetHash() {
@@ -6,6 +6,7 @@
#include "bat/ads/internal/legacy_migration/confirmations/legacy_confirmation_migration.h"
#include <string>
#include <utility>
#include "base/bind.h"
#include "bat/ads/internal/ads_client_helper.h"
@@ -19,21 +20,21 @@ namespace ads::confirmations {
namespace {
void FailedToMigrate(const InitializeCallback& callback) {
callback(/*success*/ false);
void FailedToMigrate(InitializeCallback callback) {
std::move(callback).Run(/*success*/ false);
}
void SuccessfullyMigrated(const InitializeCallback& callback) {
void SuccessfullyMigrated(InitializeCallback callback) {
AdsClientHelper::GetInstance()->SetBooleanPref(
prefs::kHasMigratedConfirmationState, true);
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
}
} // namespace
void Migrate(InitializeCallback callback) {
if (HasMigrated()) {
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
return;
}
@@ -46,13 +47,13 @@ void Migrate(InitializeCallback callback) {
const std::string& json) {
if (!success) {
// Confirmation state does not exist
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
return;
}
if (!ConfirmationStateManager::GetInstance()->FromJson(json)) {
BLOG(0, "Failed to load confirmation state");
FailedToMigrate(callback);
FailedToMigrate(std::move(callback));
return;
}
@@ -67,19 +68,19 @@ void Migrate(InitializeCallback callback) {
AdsClientHelper::GetInstance()->Save(
kConfirmationStateFilename, migrated_json,
base::BindOnce(
[](const InitializeCallback& callback, const bool success) {
[](InitializeCallback callback, const bool success) {
if (!success) {
BLOG(0, "Failed to save confirmation state");
FailedToMigrate(callback);
FailedToMigrate(std::move(callback));
return;
}
BLOG(3, "Successfully migrated confirmation state");
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
},
callback));
std::move(callback)));
},
callback));
std::move(callback)));
}
} // namespace ads::confirmations
@@ -5,6 +5,7 @@
#include "bat/ads/internal/legacy_migration/confirmations/legacy_confirmation_migration_unittest_util.h"
#include "base/bind.h"
#include "base/check_op.h"
#include "bat/ads/internal/ads_client_helper.h"
#include "bat/ads/internal/legacy_migration/confirmations/legacy_confirmation_migration.h"
@@ -13,9 +14,11 @@
namespace ads::confirmations {
void Migrate(const bool should_migrate) {
Migrate([should_migrate](const bool success) {
CHECK_EQ(success, should_migrate);
});
Migrate(base::BindOnce(
[](const bool should_migrate, const bool success) {
CHECK_EQ(success, should_migrate);
},
should_migrate));
}
uint64_t GetHash() {
@@ -6,6 +6,7 @@
#include "bat/ads/internal/legacy_migration/conversions/legacy_conversions_migration.h"
#include <string>
#include <utility>
#include "absl/types/optional.h"
#include "base/bind.h"
@@ -34,14 +35,14 @@ bool HasMigrated() {
prefs::kHasMigratedConversionState);
}
void FailedToMigrate(const InitializeCallback& callback) {
callback(/*success*/ false);
void FailedToMigrate(InitializeCallback callback) {
std::move(callback).Run(/*success*/ false);
}
void SuccessfullyMigrated(const InitializeCallback& callback) {
void SuccessfullyMigrated(InitializeCallback callback) {
AdsClientHelper::GetInstance()->SetBooleanPref(
prefs::kHasMigratedConversionState, true);
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
}
absl::optional<ConversionQueueItemInfo> GetFromDictionary(
@@ -121,7 +122,7 @@ void OnMigrate(InitializeCallback callback,
const std::string& json) {
if (!success) {
// Conversion state does not exist
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
return;
}
@@ -129,7 +130,7 @@ void OnMigrate(InitializeCallback callback,
FromJson(json);
if (!conversion_queue_items) {
BLOG(0, "Failed to parse conversion state");
FailedToMigrate(callback);
FailedToMigrate(std::move(callback));
return;
}
@@ -141,31 +142,31 @@ void OnMigrate(InitializeCallback callback,
conversion_queue.Save(
*conversion_queue_items,
base::BindOnce(
[](const InitializeCallback& callback, const bool success) {
[](InitializeCallback callback, const bool success) {
if (!success) {
BLOG(0, "Failed to save conversion state");
FailedToMigrate(callback);
FailedToMigrate(std::move(callback));
return;
}
BLOG(3, "Successfully migrated conversion state");
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
},
callback));
std::move(callback)));
}
} // namespace
void Migrate(InitializeCallback callback) {
if (HasMigrated()) {
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
return;
}
BLOG(3, "Loading conversion state");
AdsClientHelper::GetInstance()->Load(kFilename,
base::BindOnce(&OnMigrate, callback));
AdsClientHelper::GetInstance()->Load(
kFilename, base::BindOnce(&OnMigrate, std::move(callback)));
}
} // namespace ads::conversions
@@ -6,6 +6,7 @@
#include "bat/ads/internal/legacy_migration/notifications/legacy_notification_migration.h"
#include <string>
#include <utility>
#include "absl/types/optional.h"
#include "base/bind.h"
@@ -28,21 +29,21 @@ bool HasMigrated() {
prefs::kHasMigratedNotificationState);
}
void FailedToMigrate(const InitializeCallback& callback) {
callback(/*success*/ false);
void FailedToMigrate(InitializeCallback callback) {
std::move(callback).Run(/*success*/ false);
}
void SuccessfullyMigrated(const InitializeCallback& callback) {
void SuccessfullyMigrated(InitializeCallback callback) {
AdsClientHelper::GetInstance()->SetBooleanPref(
prefs::kHasMigratedNotificationState, true);
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
}
} // namespace
void Migrate(InitializeCallback callback) {
if (HasMigrated()) {
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
return;
}
@@ -51,11 +52,11 @@ void Migrate(InitializeCallback callback) {
AdsClientHelper::GetInstance()->Load(
kNotificationStateFilename,
base::BindOnce(
[](const InitializeCallback& callback, const bool success,
[](InitializeCallback callback, const bool success,
const std::string& json) {
if (!success) {
// Notification state does not exist
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
return;
}
@@ -63,7 +64,7 @@ void Migrate(InitializeCallback callback) {
json::reader::ReadNotificationAds(json);
if (!ads) {
BLOG(0, "Failed to load notification state");
FailedToMigrate(callback);
FailedToMigrate(std::move(callback));
return;
}
@@ -75,9 +76,9 @@ void Migrate(InitializeCallback callback) {
prefs::kNotificationAds, NotificationAdsToValue(*ads));
BLOG(3, "Successfully migrated notification state");
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
},
callback));
std::move(callback)));
}
} // namespace ads::notifications
@@ -6,6 +6,7 @@
#include "bat/ads/internal/legacy_migration/rewards/legacy_rewards_migration.h"
#include <string>
#include <utility>
#include "absl/types/optional.h"
#include "base/bind.h"
@@ -26,14 +27,14 @@ bool HasMigrated() {
prefs::kHasMigratedRewardsState);
}
void FailedToMigrate(const InitializeCallback& callback) {
callback(/*success*/ false);
void FailedToMigrate(InitializeCallback callback) {
std::move(callback).Run(/*success*/ false);
}
void SuccessfullyMigrated(const InitializeCallback& callback) {
void SuccessfullyMigrated(InitializeCallback callback) {
AdsClientHelper::GetInstance()->SetBooleanPref(
prefs::kHasMigratedRewardsState, true);
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
}
void OnMigrate(InitializeCallback callback,
@@ -41,7 +42,7 @@ void OnMigrate(InitializeCallback callback,
const std::string& json) {
if (!success) {
// Confirmations state does not exist
SuccessfullyMigrated(callback);
SuccessfullyMigrated(std::move(callback));
return;
}
@@ -53,39 +54,39 @@ void OnMigrate(InitializeCallback callback,
BuildTransactionsFromJson(json);
if (!transactions) {
BLOG(0, "Failed to parse rewards state");
FailedToMigrate(callback);
FailedToMigrate(std::move(callback));
return;
}
database::table::Transactions database_table;
database_table.Save(
*transactions,
base::BindOnce(
[](const InitializeCallback& callback, const bool success) {
if (!success) {
BLOG(0, "Failed to save rewards state");
FailedToMigrate(callback);
return;
}
database_table.Save(*transactions,
base::BindOnce(
[](InitializeCallback callback, const bool success) {
if (!success) {
BLOG(0, "Failed to save rewards state");
FailedToMigrate(std::move(callback));
return;
}
BLOG(3, "Successfully migrated rewards state");
SuccessfullyMigrated(callback);
},
callback));
BLOG(3, "Successfully migrated rewards state");
SuccessfullyMigrated(std::move(callback));
},
std::move(callback)));
}
} // namespace
void Migrate(InitializeCallback callback) {
if (HasMigrated()) {
callback(/*success*/ true);
std::move(callback).Run(/*success*/ true);
return;
}
BLOG(3, "Loading confirmations state");
AdsClientHelper::GetInstance()->Load(kConfirmationStateFilename,
base::BindOnce(&OnMigrate, callback));
AdsClientHelper::GetInstance()->Load(
kConfirmationStateFilename,
base::BindOnce(&OnMigrate, std::move(callback)));
}
} // namespace ads::rewards
@@ -5,6 +5,7 @@
#include "bat/ads/internal/legacy_migration/rewards/legacy_rewards_migration.h"
#include "base/bind.h"
#include "bat/ads/internal/base/unittest/unittest_base.h"
#include "bat/ads/internal/deprecated/confirmations/confirmation_state_manager_constants.h"
#include "brave/components/brave_ads/common/pref_names.h"
@@ -35,7 +36,8 @@ TEST_F(BatAdsLegacyRewardsMigrationIssue25384Test, Migrate) {
EXPECT_CALL(*ads_client_mock_, Load(kConfirmationStateFilename, _));
// Act
rewards::Migrate([=](const bool success) { ASSERT_TRUE(success); });
rewards::Migrate(
base::BindOnce([](const bool success) { ASSERT_TRUE(success); }));
// Assert
EXPECT_TRUE(