Skip to content

Commit 439c608

Browse files
authored
Implement additional ad event confirmationa
fixes brave/brave-browser#3587
1 parent cb8f220 commit 439c608

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+427
-101
lines changed

components/brave_ads/browser/ads_service_impl.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -606,8 +606,8 @@ void AdsServiceImpl::SetCatalogIssuers(std::unique_ptr<ads::IssuersInfo> info) {
606606
rewards_service_->SetCatalogIssuers(info->ToJson());
607607
}
608608

609-
void AdsServiceImpl::AdSustained(std::unique_ptr<ads::NotificationInfo> info) {
610-
rewards_service_->AdSustained(info->ToJson());
609+
void AdsServiceImpl::ConfirmAd(std::unique_ptr<ads::NotificationInfo> info) {
610+
rewards_service_->ConfirmAd(info->ToJson());
611611
}
612612

613613
void AdsServiceImpl::NotificationTimedOut(uint32_t timer_id,

components/brave_ads/browser/ads_service_impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class AdsServiceImpl : public AdsService,
110110
const std::string GenerateUUID() const override;
111111
void ShowNotification(std::unique_ptr<ads::NotificationInfo> info) override;
112112
void SetCatalogIssuers(std::unique_ptr<ads::IssuersInfo> info) override;
113-
void AdSustained(std::unique_ptr<ads::NotificationInfo> info) override;
113+
void ConfirmAd(std::unique_ptr<ads::NotificationInfo> info) override;
114114
uint32_t SetTimer(const uint64_t time_offset) override;
115115
void KillTimer(uint32_t timer_id) override;
116116
void URLRequest(const std::string& url,

components/brave_rewards/browser/rewards_service.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ class RewardsService : public KeyedService {
172172
// TODO(Terry Mancey): remove this hack when ads is moved to the same process
173173
// as ledger
174174
virtual void SetCatalogIssuers(const std::string& json) = 0;
175-
virtual void AdSustained(const std::string& json) = 0;
175+
virtual void ConfirmAd(const std::string& json) = 0;
176176
virtual void GetRewardsInternalsInfo(
177177
GetRewardsInternalsInfoCallback callback) = 0;
178178

components/brave_rewards/browser/rewards_service_impl.cc

+11-6
Original file line numberDiff line numberDiff line change
@@ -1477,12 +1477,12 @@ std::pair<uint64_t, uint64_t> RewardsServiceImpl::GetEarningsRange() {
14771477
return std::make_pair(from_timestamp, to_timestamp);
14781478
}
14791479

1480-
void RewardsServiceImpl::AdSustained(const std::string& json) {
1480+
void RewardsServiceImpl::ConfirmAd(const std::string& json) {
14811481
if (!Connected()) {
14821482
return;
14831483
}
14841484

1485-
bat_ledger_->AdSustained(json);
1485+
bat_ledger_->ConfirmAd(json);
14861486
}
14871487

14881488
void RewardsServiceImpl::SetConfirmationsIsReady(const bool is_ready) {
@@ -1525,12 +1525,17 @@ void RewardsServiceImpl::OnGetConfirmationsHistory(
15251525
callback.Run(0, 0.0);
15261526
}
15271527

1528-
int total_viewed = info->transactions.size();
15291528
double estimated_earnings = 0.0;
1530-
if (total_viewed > 0) {
1531-
for (const auto& transaction : info->transactions) {
1532-
estimated_earnings += transaction.estimated_redemption_value;
1529+
int total_viewed = 0;
1530+
1531+
for (const auto& transaction : info->transactions) {
1532+
// "view" is defined in confirmations::kConfirmationTypeView
1533+
if (transaction.confirmation_type != "view") {
1534+
continue;
15331535
}
1536+
1537+
estimated_earnings += transaction.estimated_redemption_value;
1538+
total_viewed++;
15341539
}
15351540

15361541
callback.Run(total_viewed, estimated_earnings);

components/brave_rewards/browser/rewards_service_impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ class RewardsServiceImpl : public RewardsService,
338338
void SetUserChangedContribution() const override;
339339
void SetAutoContribute(bool enabled) const override;
340340
void SetCatalogIssuers(const std::string& json) override;
341-
void AdSustained(const std::string& json) override;
341+
void ConfirmAd(const std::string& json) override;
342342
void SetConfirmationsIsReady(const bool is_ready) override;
343343
void GetConfirmationsHistory(
344344
brave_rewards::ConfirmationsHistoryCallback callback) override;

components/services/bat_ads/bat_ads_client_mojo_bridge.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,12 @@ void BatAdsClientMojoBridge::SetCatalogIssuers(
163163
bat_ads_client_->SetCatalogIssuers(info->ToJson());
164164
}
165165

166-
void BatAdsClientMojoBridge::AdSustained(
166+
void BatAdsClientMojoBridge::ConfirmAd(
167167
std::unique_ptr<ads::NotificationInfo> info) {
168168
if (!connected())
169169
return;
170170

171-
bat_ads_client_->AdSustained(info->ToJson());
171+
bat_ads_client_->ConfirmAd(info->ToJson());
172172
}
173173

174174
uint32_t BatAdsClientMojoBridge::SetTimer(const uint64_t time_offset) {

components/services/bat_ads/bat_ads_client_mojo_bridge.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class BatAdsClientMojoBridge : public ads::AdsClient {
3232
const std::string GenerateUUID() const override;
3333
void ShowNotification(std::unique_ptr<ads::NotificationInfo> info) override;
3434
void SetCatalogIssuers(std::unique_ptr<ads::IssuersInfo> info) override;
35-
void AdSustained(std::unique_ptr<ads::NotificationInfo> info) override;
35+
void ConfirmAd(std::unique_ptr<ads::NotificationInfo> info) override;
3636
uint32_t SetTimer(const uint64_t time_offset) override;
3737
void KillTimer(uint32_t timer_id) override;
3838
void URLRequest(const std::string& url,

components/services/bat_ads/public/cpp/ads_client_mojo_bridge.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,10 @@ void AdsClientMojoBridge::SetCatalogIssuers(
314314
}
315315
}
316316

317-
void AdsClientMojoBridge::AdSustained(const std::string& notification_info) {
317+
void AdsClientMojoBridge::ConfirmAd(const std::string& notification_info) {
318318
auto info = std::make_unique<ads::NotificationInfo>();
319319
if (info->FromJson(notification_info) == ads::Result::SUCCESS)
320-
ads_client_->AdSustained(std::move(info));
320+
ads_client_->ConfirmAd(std::move(info));
321321
}
322322

323323
// static

components/services/bat_ads/public/cpp/ads_client_mojo_bridge.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class AdsClientMojoBridge : public mojom::BatAdsClient,
7474
void LoadSampleBundle(LoadSampleBundleCallback callback) override;
7575
void ShowNotification(const std::string& notification_info) override;
7676
void SetCatalogIssuers(const std::string& issuers_info) override;
77-
void AdSustained(const std::string& notification_info) override;
77+
void ConfirmAd(const std::string& notification_info) override;
7878
void SaveBundleState(const std::string& bundle_state,
7979
SaveBundleStateCallback callback) override;
8080
void GetAds(const std::string& region,

components/services/bat_ads/public/interfaces/bat_ads.mojom

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ interface BatAdsClient {
5353
(int32 status_code, string content, map<string, string> headers);
5454
ShowNotification(string notification_info);
5555
SetCatalogIssuers(string issuers_info);
56-
AdSustained(string notification_info);
56+
ConfirmAd(string notification_info);
5757
SaveBundleState(string bundle_state) => (int32 result);
5858
GetAds(string region, string category) =>
5959
(int32 result, string region, string category, array<string> ad_info);

components/services/bat_ledger/bat_ledger_impl.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -372,8 +372,8 @@ void BatLedgerImpl::SetCatalogIssuers(const std::string& info) {
372372
ledger_->SetCatalogIssuers(info);
373373
}
374374

375-
void BatLedgerImpl::AdSustained(const std::string& info) {
376-
ledger_->AdSustained(info);
375+
void BatLedgerImpl::ConfirmAd(const std::string& info) {
376+
ledger_->ConfirmAd(info);
377377
}
378378

379379
// static

components/services/bat_ledger/bat_ledger_impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class BatLedgerImpl : public mojom::BatLedger,
135135

136136
private:
137137
void SetCatalogIssuers(const std::string& info) override;
138-
void AdSustained(const std::string& info) override;
138+
void ConfirmAd(const std::string& info) override;
139139

140140
// workaround to pass base::OnceCallback into std::bind
141141
template <typename Callback>

components/services/bat_ledger/public/interfaces/bat_ledger.mojom

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ interface BatLedger {
9797
GetAddressesForPaymentId() => (map<string, string> addresses);
9898

9999
SetCatalogIssuers(string info);
100-
AdSustained(string info);
100+
ConfirmAd(string info);
101101
GetConfirmationsHistory(uint64 from_timestamp_seconds,
102102
uint64 to_timestamp_seconds) => (string transactions);
103103
GetRewardsInternalsInfo() => (string info);

vendor/bat-native-ads/BUILD.gn

+2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ source_set("ads") {
5959
# add this only when ledger and confirmations are in the same process
6060
# rebase_path("bat-native-ledger", dep_base),
6161
# rebase_path("bat-native-ads", dep_base),
62+
"//brave/test:*",
6263
]
6364

6465
output_name = "bat_native_ads"
@@ -70,6 +71,7 @@ source_set("ads") {
7071
"include/bat/ads/bundle_state.h",
7172
"include/bat/ads/client_info_platform_type.h",
7273
"include/bat/ads/client_info.h",
74+
"include/bat/ads/confirmation_type.h",
7375
"include/bat/ads/export.h",
7476
"include/bat/ads/issuer_info.h",
7577
"include/bat/ads/issuers_info.h",

vendor/bat-native-ads/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,9 @@ void ShowNotification(std::unique_ptr<NotificationInfo> info)
206206
void SetCatalogIssuers(std::unique_ptr<IssuersInfo> info)
207207
```
208208

209-
`AdSustained` should be called to inform Confirmations that an ad was sustained
209+
`ConfirmAd` should be called to inform Confirmations that an Ad was clicked, viewed, dismissed or landed
210210
```
211-
void AdSustained(std::unique_ptr<NotificationInfo> info)
211+
void ConfirmAd(std::unique_ptr<NotificationInfo> info)
212212
```
213213

214214
`SetTimer` should create a timer to trigger after the time offset specified in seconds. If the timer was created successfully a unique identifier should be returned, otherwise returns `0`

vendor/bat-native-ads/include/bat/ads/ads_client.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class ADS_EXPORT AdsClient {
111111
virtual void SetCatalogIssuers(std::unique_ptr<IssuersInfo> info) = 0;
112112

113113
// Should be called to inform Confirmations that an ad was sustained
114-
virtual void AdSustained(std::unique_ptr<NotificationInfo> info) = 0;
114+
virtual void ConfirmAd(std::unique_ptr<NotificationInfo> info) = 0;
115115

116116
// Should create a timer to trigger after the time offset specified in
117117
// seconds. If the timer was created successfully a unique identifier should
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/* Copyright (c) 2019 The Brave Authors. All rights reserved.
2+
* This Source Code Form is subject to the terms of the Mozilla Public
3+
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
4+
* You can obtain one at http://mozilla.org/MPL/2.0/. */
5+
6+
#ifndef BAT_ADS_CONFIRMATION_TYPE_H_
7+
#define BAT_ADS_CONFIRMATION_TYPE_H_
8+
9+
#include <string>
10+
11+
#include "bat/ads/export.h"
12+
13+
namespace ads {
14+
15+
static char kConfirmationTypeClick[] = "click";
16+
static char kConfirmationTypeDismiss[] = "dismiss";
17+
static char kConfirmationTypeView[] = "view";
18+
static char kConfirmationTypeLanded[] = "landed";
19+
20+
enum class ADS_EXPORT ConfirmationType {
21+
UNKNOWN,
22+
CLICK,
23+
DISMISS,
24+
VIEW,
25+
LANDED
26+
};
27+
28+
} // namespace ads
29+
30+
#endif // BAT_ADS_CONFIRMATION_TYPE_H_

vendor/bat-native-ads/include/bat/ads/notification_info.h

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <string>
1010

1111
#include "bat/ads/export.h"
12+
#include "bat/ads/confirmation_type.h"
1213
#include "bat/ads/result.h"
1314

1415
namespace ads {
@@ -29,6 +30,7 @@ struct ADS_EXPORT NotificationInfo {
2930
std::string text;
3031
std::string url;
3132
std::string uuid;
33+
ConfirmationType type;
3234
};
3335

3436
} // namespace ads

vendor/bat-native-ads/include/bat/ads/notification_result_type.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
namespace ads {
1212

13-
enum ADS_EXPORT NotificationResultInfoResultType {
13+
enum class ADS_EXPORT NotificationResultInfoResultType {
1414
CLICKED,
1515
DISMISSED,
1616
TIMEOUT

vendor/bat-native-ads/src/bat/ads/internal/ads_client_mock.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class MockAdsClient : public AdsClient {
7474
MOCK_METHOD1(SetCatalogIssuers, void(
7575
std::unique_ptr<IssuersInfo> info));
7676

77-
MOCK_METHOD1(AdSustained, void(
77+
MOCK_METHOD1(ConfirmAd, void(
7878
std::unique_ptr<NotificationInfo> info));
7979

8080
MOCK_METHOD1(SetTimer, uint32_t(

0 commit comments

Comments
 (0)