Commit 7c2d94ef authored by Bettina Dea's avatar Bettina Dea Committed by Commit Bot

Get max EP promo impressions from server-side.

Max EP promo impressions should be defined
in the server-side experiment and not hard-coded.
SigninPromo max impressions will also be defined
in the same experiment as it is introduced only
when the Enhanced Protection promo has started
its experiment.

Bug: 1136612
Change-Id: I5ecf4f60ed01af7dcf493a9c2ab24674df05553c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2461994
Commit-Queue: Bettina Dea <bdea@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816447}
parent 1a2e0265
...@@ -9,6 +9,7 @@ import androidx.annotation.Nullable; ...@@ -9,6 +9,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
...@@ -45,7 +46,7 @@ final class EnhancedProtectionPromoUtils { ...@@ -45,7 +46,7 @@ final class EnhancedProtectionPromoUtils {
// Suffix for PROMO_IS_DISMISSED and PROMO_TIMES_SEEN Chrome preference keys. // Suffix for PROMO_IS_DISMISSED and PROMO_TIMES_SEEN Chrome preference keys.
public static final String ENHANCED_PROTECTION_PROMO_CARD_FEATURE = public static final String ENHANCED_PROTECTION_PROMO_CARD_FEATURE =
"EnhancedProtectionPromoCard"; "EnhancedProtectionPromoCard";
private static final int MAX_IMPRESSION_SEEN = 10; private static final int DEFAULT_MAX_IMPRESSION_SEEN = 22;
// Do not instantiate. // Do not instantiate.
private EnhancedProtectionPromoUtils() {} private EnhancedProtectionPromoUtils() {}
...@@ -58,10 +59,13 @@ final class EnhancedProtectionPromoUtils { ...@@ -58,10 +59,13 @@ final class EnhancedProtectionPromoUtils {
static boolean shouldCreatePromo(@Nullable Profile profile) { static boolean shouldCreatePromo(@Nullable Profile profile) {
String timesSeenKey = getTimesSeenKey(); String timesSeenKey = getTimesSeenKey();
int timesSeen = SharedPreferencesManager.getInstance().readInt(timesSeenKey, 0); int timesSeen = SharedPreferencesManager.getInstance().readInt(timesSeenKey, 0);
int maxImpressions = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
ChromeFeatureList.ENHANCED_PROTECTION_PROMO_CARD,
"MaxEnhancedProtectionPromoImpressions", DEFAULT_MAX_IMPRESSION_SEEN);
// TODO(bdea): If the user has pressed "Continue" and not selected Enhanced Protection, // TODO(bdea): If the user has pressed "Continue" and not selected Enhanced Protection,
// should we still show the promo. // should we still show the promo.
return (profile != null) && !UserPrefs.get(profile).getBoolean(Pref.SAFE_BROWSING_ENHANCED) return (profile != null) && !UserPrefs.get(profile).getBoolean(Pref.SAFE_BROWSING_ENHANCED)
&& !isPromoDismissedInSharedPreference() && (timesSeen <= MAX_IMPRESSION_SEEN) && !isPromoDismissedInSharedPreference() && (timesSeen <= maxImpressions)
&& !SafeBrowsingBridge.isSafeBrowsingManaged(); && !SafeBrowsingBridge.isSafeBrowsingManaged();
} }
...@@ -88,7 +92,9 @@ final class EnhancedProtectionPromoUtils { ...@@ -88,7 +92,9 @@ final class EnhancedProtectionPromoUtils {
action, EnhancedProtectionPromoAction.TOTAL); action, EnhancedProtectionPromoAction.TOTAL);
if (action == EnhancedProtectionPromoAction.CREATED) return; if (action == EnhancedProtectionPromoAction.CREATED) return;
int maxImpressions = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
ChromeFeatureList.ENHANCED_PROTECTION_PROMO_CARD,
"MaxEnhancedProtectionPromoImpressions", DEFAULT_MAX_IMPRESSION_SEEN);
String timesSeenKey = getTimesSeenKey(); String timesSeenKey = getTimesSeenKey();
int timesSeen = SharedPreferencesManager.getInstance().readInt(timesSeenKey, 0); int timesSeen = SharedPreferencesManager.getInstance().readInt(timesSeenKey, 0);
if (action == EnhancedProtectionPromoAction.SEEN) { if (action == EnhancedProtectionPromoAction.SEEN) {
...@@ -97,12 +103,12 @@ final class EnhancedProtectionPromoUtils { ...@@ -97,12 +103,12 @@ final class EnhancedProtectionPromoUtils {
RecordUserAction.record("NewTabPage.Promo.EnhancedProtectionPromo.Accepted"); RecordUserAction.record("NewTabPage.Promo.EnhancedProtectionPromo.Accepted");
RecordHistogram.recordLinearCountHistogram( RecordHistogram.recordLinearCountHistogram(
"NewTabPage.Promo.EnhancedProtectionPromo.ImpressionUntilAction", timesSeen, 1, "NewTabPage.Promo.EnhancedProtectionPromo.ImpressionUntilAction", timesSeen, 1,
MAX_IMPRESSION_SEEN, MAX_IMPRESSION_SEEN + 1); maxImpressions, maxImpressions + 1);
} else if (action == EnhancedProtectionPromoAction.DISMISSED) { } else if (action == EnhancedProtectionPromoAction.DISMISSED) {
RecordUserAction.record("NewTabPage.Promo.EnhancedProtectionPromo.Dismissed"); RecordUserAction.record("NewTabPage.Promo.EnhancedProtectionPromo.Dismissed");
RecordHistogram.recordLinearCountHistogram( RecordHistogram.recordLinearCountHistogram(
"NewTabPage.Promo.EnhancedProtectionPromo.ImpressionUntilDismissal", timesSeen, "NewTabPage.Promo.EnhancedProtectionPromo.ImpressionUntilDismissal", timesSeen,
1, MAX_IMPRESSION_SEEN, MAX_IMPRESSION_SEEN + 1); 1, maxImpressions, maxImpressions + 1);
} }
} }
} }
...@@ -76,8 +76,8 @@ public class SigninPromoController { ...@@ -76,8 +76,8 @@ public class SigninPromoController {
return getSigninPromoImpressionsCountBookmarks() < MAX_IMPRESSIONS_BOOKMARKS; return getSigninPromoImpressionsCountBookmarks() < MAX_IMPRESSIONS_BOOKMARKS;
case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS: case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS:
int maxImpressions = ChromeFeatureList.getFieldTrialParamByFeatureAsInt( int maxImpressions = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
ChromeFeatureList.SIGNIN_PROMO_MAX_IMPRESSIONS_ANDROID, "MaxImpressions", ChromeFeatureList.ENHANCED_PROTECTION_PROMO_CARD,
Integer.MAX_VALUE); "MaxSigninPromoImpressions", Integer.MAX_VALUE);
return SharedPreferencesManager.getInstance().readInt( return SharedPreferencesManager.getInstance().readInt(
ChromePreferenceKeys.SIGNIN_PROMO_IMPRESSIONS_COUNT_NTP) ChromePreferenceKeys.SIGNIN_PROMO_IMPRESSIONS_COUNT_NTP)
< maxImpressions; < maxImpressions;
......
...@@ -190,7 +190,6 @@ const base::Feature* kFeaturesExposedToJava[] = { ...@@ -190,7 +190,6 @@ const base::Feature* kFeaturesExposedToJava[] = {
&kSharedClipboardUI, &kSharedClipboardUI,
&kSharingQrCodeAndroid, &kSharingQrCodeAndroid,
&kShoppingAssist, &kShoppingAssist,
&kSigninPromoMaxImpressionsAndroid,
&kSpannableInlineAutocomplete, &kSpannableInlineAutocomplete,
&kSpecialLocaleWrapper, &kSpecialLocaleWrapper,
&kSpecialUserDecision, &kSpecialUserDecision,
...@@ -559,9 +558,6 @@ const base::Feature kShareByDefaultInCCT{"ShareByDefaultInCCT", ...@@ -559,9 +558,6 @@ const base::Feature kShareByDefaultInCCT{"ShareByDefaultInCCT",
const base::Feature kShoppingAssist{"ShoppingAssist", const base::Feature kShoppingAssist{"ShoppingAssist",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSigninPromoMaxImpressionsAndroid{
"SigninPromoMaxImpressionsAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSpannableInlineAutocomplete{ const base::Feature kSpannableInlineAutocomplete{
"SpannableInlineAutocomplete", base::FEATURE_ENABLED_BY_DEFAULT}; "SpannableInlineAutocomplete", base::FEATURE_ENABLED_BY_DEFAULT};
......
...@@ -104,7 +104,6 @@ extern const base::Feature kServiceManagerForDownload; ...@@ -104,7 +104,6 @@ extern const base::Feature kServiceManagerForDownload;
extern const base::Feature kShareButtonInTopToolbar; extern const base::Feature kShareButtonInTopToolbar;
extern const base::Feature kShareByDefaultInCCT; extern const base::Feature kShareByDefaultInCCT;
extern const base::Feature kShoppingAssist; extern const base::Feature kShoppingAssist;
extern const base::Feature kSigninPromoMaxImpressionsAndroid;
extern const base::Feature kSpannableInlineAutocomplete; extern const base::Feature kSpannableInlineAutocomplete;
extern const base::Feature kSpecialLocaleWrapper; extern const base::Feature kSpecialLocaleWrapper;
extern const base::Feature kSpecialUserDecision; extern const base::Feature kSpecialUserDecision;
......
...@@ -398,8 +398,6 @@ public abstract class ChromeFeatureList { ...@@ -398,8 +398,6 @@ public abstract class ChromeFeatureList {
public static final String SHARED_CLIPBOARD_UI = "SharedClipboardUI"; public static final String SHARED_CLIPBOARD_UI = "SharedClipboardUI";
public static final String SHARING_QR_CODE_ANDROID = "SharingQrCodeAndroid"; public static final String SHARING_QR_CODE_ANDROID = "SharingQrCodeAndroid";
public static final String SHOW_TRUSTED_PUBLISHER_URL = "ShowTrustedPublisherURL"; public static final String SHOW_TRUSTED_PUBLISHER_URL = "ShowTrustedPublisherURL";
public static final String SIGNIN_PROMO_MAX_IMPRESSIONS_ANDROID =
"SigninPromoMaxImpressionsAndroid";
public static final String SMART_SUGGESTION_FOR_LARGE_DOWNLOADS = public static final String SMART_SUGGESTION_FOR_LARGE_DOWNLOADS =
"SmartSuggestionForLargeDownloads"; "SmartSuggestionForLargeDownloads";
public static final String SPANNABLE_INLINE_AUTOCOMPLETE = "SpannableInlineAutocomplete"; public static final String SPANNABLE_INLINE_AUTOCOMPLETE = "SpannableInlineAutocomplete";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment