From 18a8fa453e948bc4addf552a22ea369d2534a8a1 Mon Sep 17 00:00:00 2001 From: Dmitry Donskoy Date: Wed, 26 Sep 2018 13:36:00 +0300 Subject: [PATCH] [android] Added jni call, fixed https://github.com/yoksnod/omim/pull/5#discussion_r220502861, fixed review notes https://github.com/yoksnod/omim/pull/5#discussion_r220474557 --- android/jni/com/mapswithme/maps/Framework.cpp | 7 ++--- .../src/com/mapswithme/maps/Framework.java | 2 +- .../analytics/ExternalLibrariesMediator.java | 7 +++++ map/framework.hpp | 2 +- partners_api/ads_engine.cpp | 26 +++++++++---------- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 973687bc7b..8684eb549a 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -1135,9 +1135,10 @@ Java_com_mapswithme_maps_Framework_nativeGetRouteFollowingInfo(JNIEnv * env, jcl return result; } -JNIEXPORT void JNICALL Java_com_mapswithme_maps_Framework_nativeDisableAdProvider(JNIEnv * env, - jclass, jint type, - jint place) +JNIEXPORT void JNICALL +Java_com_mapswithme_maps_Framework_nativeDisableAdProvider(JNIEnv *env, + jclass, jint type, + jint place) { auto const & bannerType = static_cast(type); auto const & bannerPlace = static_cast(place); diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java index 355ef6b80b..a13201fab4 100644 --- a/android/src/com/mapswithme/maps/Framework.java +++ b/android/src/com/mapswithme/maps/Framework.java @@ -224,7 +224,7 @@ public class Framework return FilterUtils.RATING_ANY; } - public static void setAdProviderDisabled(@NonNull Banner.Type type) + public static void disableAdProvider(@NonNull Banner.Type type) { nativeDisableAdProvider(type.ordinal(), Banner.Place.DEFAULT.ordinal()); } diff --git a/android/src/com/mapswithme/maps/analytics/ExternalLibrariesMediator.java b/android/src/com/mapswithme/maps/analytics/ExternalLibrariesMediator.java index 8e65deacbf..a23ced270d 100644 --- a/android/src/com/mapswithme/maps/analytics/ExternalLibrariesMediator.java +++ b/android/src/com/mapswithme/maps/analytics/ExternalLibrariesMediator.java @@ -182,6 +182,13 @@ public class ExternalLibrariesMediator super.onPostExecute(status); if (status != null && status) onEnabled(); + else + onDisabled(); + } + + private void onDisabled() + { + Framework.disableAdProvider(Banner.Type.TYPE_RB); } private void onEnabled() diff --git a/map/framework.hpp b/map/framework.hpp index d6c27944bb..0fb5c7f1f4 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -57,6 +57,7 @@ #include "partners_api/locals_api.hpp" #include "partners_api/taxi_engine.hpp" #include "partners_api/viator_api.hpp" +#include "partners_api/banner.hpp" #include "metrics/eye_info.hpp" @@ -86,7 +87,6 @@ #include "std/vector.hpp" #include -#include "partners_api/banner.hpp" namespace osm { diff --git a/partners_api/ads_engine.cpp b/partners_api/ads_engine.cpp index 73bc25f2f3..eca7aac959 100644 --- a/partners_api/ads_engine.cpp +++ b/partners_api/ads_engine.cpp @@ -44,17 +44,17 @@ std::vector Engine::GetBanners(feature::TypesHolder const & types, for (auto const & item : m_banners) { - if (item.m_enabled) + if (!item.m_enabled) + continue; + + for (auto const & countryId : countryIds) { - for (auto const & countryId : countryIds) + auto const bannerId = item.m_container->GetBannerId(types, countryId, userLanguage); + // We need to add banner for every banner system just once. + if (!bannerId.empty()) { - auto const bannerId = item.m_container->GetBannerId(types, countryId, userLanguage); - // We need to add banner for every banner system just once. - if (!bannerId.empty()) - { - result.emplace_back(item.m_type, bannerId); - break; - } + result.emplace_back(item.m_type, bannerId); + break; } } } @@ -93,18 +93,16 @@ void Engine::DisableAdProvider(Banner::Type const type, Banner::Place const plac SetAdProviderEnabled(place == Banner::Place::Search ? m_searchBanners : m_banners, type, false); } -void Engine::EnableAdProvider(Banner::Type const type, Banner::Place place) -{ - SetAdProviderEnabled(place == Banner::Place::Search ? m_searchBanners : m_banners, type, true); -} - void Engine::SetAdProviderEnabled(std::vector & banners, Banner::Type const type, bool const isEnabled) { for (auto & item : banners) { if (item.m_type == type) + { item.m_enabled = isEnabled; + return; + } } } } // namespace ads