diff --git a/components/brave_ads/browser/ads_service_impl.cc b/components/brave_ads/browser/ads_service_impl.cc index 431483d555b1..65b4c8003da1 100644 --- a/components/brave_ads/browser/ads_service_impl.cc +++ b/components/brave_ads/browser/ads_service_impl.cc @@ -1745,14 +1745,24 @@ const std::vector AdsServiceImpl::GetUserModelLanguages() const { return languages; } +std::string AdsServiceImpl::LoadDataResourceAndDecompressIfNeeded( + const int id) const { + std::string data_resource; + + if (ui::ResourceBundle::GetSharedInstance().IsGzipped(id)) { + data_resource = ui::ResourceBundle::GetSharedInstance().DecompressDataResource(id); + } else { + data_resource = ui::ResourceBundle::GetSharedInstance().GetRawDataResource(id).as_string(); + } + + return data_resource; +} + void AdsServiceImpl::LoadUserModelForLanguage( const std::string& language, ads::OnLoadCallback callback) const { - auto raw_data = ui::ResourceBundle::GetSharedInstance().GetRawDataResource( - GetUserModelResourceId(language)); - - std::string user_model; - raw_data.CopyToString(&user_model); + const auto resource_id = GetUserModelResourceId(language); + const auto user_model = LoadDataResourceAndDecompressIfNeeded(resource_id); callback(ads::Result::SUCCESS, user_model); } @@ -1899,23 +1909,18 @@ void AdsServiceImpl::Reset( const std::string AdsServiceImpl::LoadJsonSchema( const std::string& name) { - base::StringPiece schema_raw = - ui::ResourceBundle::GetSharedInstance().GetRawDataResource( - GetSchemaResourceId(name)); - - std::string schema; - schema_raw.CopyToString(&schema); - return schema; + const auto resource_id = GetSchemaResourceId(name); + return LoadDataResourceAndDecompressIfNeeded(resource_id); } void AdsServiceImpl::LoadSampleBundle( ads::OnLoadSampleBundleCallback callback) { - base::StringPiece sample_bundle_raw = - ui::ResourceBundle::GetSharedInstance().GetRawDataResource( - IDR_ADS_SAMPLE_BUNDLE); + const auto resource_id = + GetSchemaResourceId(ads::_bundle_schema_resource_name); + + const auto sample_bundle = + LoadDataResourceAndDecompressIfNeeded(resource_id); - std::string sample_bundle; - sample_bundle_raw.CopyToString(&sample_bundle); callback(ads::Result::SUCCESS, sample_bundle); } diff --git a/components/brave_ads/browser/ads_service_impl.h b/components/brave_ads/browser/ads_service_impl.h index 3bb32884672f..890ffb1522cf 100644 --- a/components/brave_ads/browser/ads_service_impl.h +++ b/components/brave_ads/browser/ads_service_impl.h @@ -328,6 +328,9 @@ class AdsServiceImpl : public AdsService, uint32_t next_timer_id(); + std::string LoadDataResourceAndDecompressIfNeeded( + const int id) const; + bool connected(); // AdsClient implementation diff --git a/vendor/bat-native-ads/resources/bat_ads_resources.grd b/vendor/bat-native-ads/resources/bat_ads_resources.grd index 404d8a4ea318..208727131fad 100644 --- a/vendor/bat-native-ads/resources/bat_ads_resources.grd +++ b/vendor/bat-native-ads/resources/bat_ads_resources.grd @@ -8,9 +8,9 @@ - - - + + +