Use base::OnceCallback for Brave Ads Initialize/Shutdown.
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
+9
-8
@@ -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) {
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
Vendored
+9
-14
@@ -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() {
|
||||
|
||||
Vendored
+3
-3
@@ -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_;
|
||||
|
||||
|
||||
Vendored
+13
-12
@@ -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
|
||||
|
||||
+6
-3
@@ -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() {
|
||||
|
||||
+13
-12
@@ -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
|
||||
|
||||
+6
-3
@@ -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() {
|
||||
|
||||
+14
-13
@@ -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
|
||||
|
||||
+11
-10
@@ -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
|
||||
|
||||
Vendored
+23
-22
@@ -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
|
||||
|
||||
+3
-1
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user