@@ -692,13 +692,23 @@ void AdsServiceImpl::OnInitialize(const bool success) {
692
692
693
693
StartCheckIdleStateTimer ();
694
694
695
- if (!deprecated_data_files_removed_) {
696
- deprecated_data_files_removed_ = true ;
697
- file_task_runner_->PostTask (
698
- FROM_HERE, base::BindOnce (&RemoveDeprecatedAdsDataFiles, base_path_));
695
+ if (!is_setup_on_first_initialize_done_) {
696
+ SetupOnFirstInitialize ();
697
+ is_setup_on_first_initialize_done_ = true ;
699
698
}
700
699
}
701
700
701
+ void AdsServiceImpl::SetupOnFirstInitialize () {
702
+ DCHECK (!is_setup_on_first_initialize_done_);
703
+
704
+ PurgeOrphanedAdEventsForType (
705
+ ads::mojom::AdType::kNewTabPageAd ,
706
+ base::BindOnce (&AdsServiceImpl::PrefetchNewTabPageAd, AsWeakPtr ()));
707
+
708
+ file_task_runner_->PostTask (
709
+ FROM_HERE, base::BindOnce (&RemoveDeprecatedAdsDataFiles, base_path_));
710
+ }
711
+
702
712
void AdsServiceImpl::ShutdownBatAds () {
703
713
if (!connected ()) {
704
714
return ;
@@ -1116,6 +1126,23 @@ void AdsServiceImpl::OnOpenNewTabWithAd(const std::string& json) {
1116
1126
OpenNewTabWithUrl (notification.target_url );
1117
1127
}
1118
1128
1129
+ absl::optional<ads::NewTabPageAdInfo>
1130
+ AdsServiceImpl::GetPrefetchedNewTabPageAd () {
1131
+ if (!connected ()) {
1132
+ return absl::nullopt;
1133
+ }
1134
+
1135
+ absl::optional<ads::NewTabPageAdInfo> ad_info;
1136
+ if (prefetched_new_tab_page_ad_info_) {
1137
+ ad_info = prefetched_new_tab_page_ad_info_;
1138
+ prefetched_new_tab_page_ad_info_.reset ();
1139
+ }
1140
+
1141
+ PrefetchNewTabPageAd ();
1142
+
1143
+ return ad_info;
1144
+ }
1145
+
1119
1146
void AdsServiceImpl::OnNewTabPageAdEvent (
1120
1147
const std::string& uuid,
1121
1148
const std::string& creative_instance_id,
@@ -1162,12 +1189,13 @@ void AdsServiceImpl::OnInlineContentAdEvent(
1162
1189
}
1163
1190
1164
1191
void AdsServiceImpl::PurgeOrphanedAdEventsForType (
1165
- const ads::mojom::AdType ad_type) {
1192
+ const ads::mojom::AdType ad_type,
1193
+ base::OnceClosure callback) {
1166
1194
if (!connected ()) {
1167
1195
return ;
1168
1196
}
1169
1197
1170
- bat_ads_->PurgeOrphanedAdEventsForType (ad_type);
1198
+ bat_ads_->PurgeOrphanedAdEventsForType (ad_type, std::move (callback) );
1171
1199
}
1172
1200
1173
1201
void AdsServiceImpl::RetryOpeningNewTabWithAd (const std::string& uuid) {
@@ -1221,6 +1249,28 @@ void AdsServiceImpl::RegisterResourceComponentsForLocale(
1221
1249
locale);
1222
1250
}
1223
1251
1252
+ void AdsServiceImpl::PrefetchNewTabPageAd () {
1253
+ if (!connected ()) {
1254
+ prefetched_new_tab_page_ad_info_.reset ();
1255
+ return ;
1256
+ }
1257
+
1258
+ bat_ads_->GetNewTabPageAd (
1259
+ base::BindOnce (&AdsServiceImpl::OnPrefetchNewTabPageAd, AsWeakPtr ()));
1260
+ }
1261
+
1262
+ void AdsServiceImpl::OnPrefetchNewTabPageAd (bool success,
1263
+ const std::string& json) {
1264
+ if (!success) {
1265
+ prefetched_new_tab_page_ad_info_.reset ();
1266
+ return ;
1267
+ }
1268
+
1269
+ ads::NewTabPageAdInfo ad_info;
1270
+ ad_info.FromJson (json);
1271
+ prefetched_new_tab_page_ad_info_ = ad_info;
1272
+ }
1273
+
1224
1274
void AdsServiceImpl::OnURLRequestStarted (
1225
1275
const GURL& final_url,
1226
1276
const network::mojom::URLResponseHead& response_head) {
0 commit comments