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;
import org.chromium.base.metrics.RecordHistogram;
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.Pref;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
......@@ -45,7 +46,7 @@ final class EnhancedProtectionPromoUtils {
// Suffix for PROMO_IS_DISMISSED and PROMO_TIMES_SEEN Chrome preference keys.
public static final String ENHANCED_PROTECTION_PROMO_CARD_FEATURE =
"EnhancedProtectionPromoCard";
private static final int MAX_IMPRESSION_SEEN = 10;
private static final int DEFAULT_MAX_IMPRESSION_SEEN = 22;
// Do not instantiate.
private EnhancedProtectionPromoUtils() {}
......@@ -58,10 +59,13 @@ final class EnhancedProtectionPromoUtils {
static boolean shouldCreatePromo(@Nullable Profile profile) {
String timesSeenKey = getTimesSeenKey();
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,
// should we still show the promo.
return (profile != null) && !UserPrefs.get(profile).getBoolean(Pref.SAFE_BROWSING_ENHANCED)
&& !isPromoDismissedInSharedPreference() && (timesSeen <= MAX_IMPRESSION_SEEN)
&& !isPromoDismissedInSharedPreference() && (timesSeen <= maxImpressions)
&& !SafeBrowsingBridge.isSafeBrowsingManaged();
}
......@@ -88,7 +92,9 @@ final class EnhancedProtectionPromoUtils {
action, EnhancedProtectionPromoAction.TOTAL);
if (action == EnhancedProtectionPromoAction.CREATED) return;
int maxImpressions = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
ChromeFeatureList.ENHANCED_PROTECTION_PROMO_CARD,
"MaxEnhancedProtectionPromoImpressions", DEFAULT_MAX_IMPRESSION_SEEN);
String timesSeenKey = getTimesSeenKey();
int timesSeen = SharedPreferencesManager.getInstance().readInt(timesSeenKey, 0);
if (action == EnhancedProtectionPromoAction.SEEN) {
......@@ -97,12 +103,12 @@ final class EnhancedProtectionPromoUtils {
RecordUserAction.record("NewTabPage.Promo.EnhancedProtectionPromo.Accepted");
RecordHistogram.recordLinearCountHistogram(
"NewTabPage.Promo.EnhancedProtectionPromo.ImpressionUntilAction", timesSeen, 1,
MAX_IMPRESSION_SEEN, MAX_IMPRESSION_SEEN + 1);
maxImpressions, maxImpressions + 1);
} else if (action == EnhancedProtectionPromoAction.DISMISSED) {
RecordUserAction.record("NewTabPage.Promo.EnhancedProtectionPromo.Dismissed");
RecordHistogram.recordLinearCountHistogram(
"NewTabPage.Promo.EnhancedProtectionPromo.ImpressionUntilDismissal", timesSeen,
1, MAX_IMPRESSION_SEEN, MAX_IMPRESSION_SEEN + 1);
1, maxImpressions, maxImpressions + 1);
}
}
}
......@@ -76,8 +76,8 @@ public class SigninPromoController {
return getSigninPromoImpressionsCountBookmarks() < MAX_IMPRESSIONS_BOOKMARKS;
case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS:
int maxImpressions = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
ChromeFeatureList.SIGNIN_PROMO_MAX_IMPRESSIONS_ANDROID, "MaxImpressions",
Integer.MAX_VALUE);
ChromeFeatureList.ENHANCED_PROTECTION_PROMO_CARD,
"MaxSigninPromoImpressions", Integer.MAX_VALUE);
return SharedPreferencesManager.getInstance().readInt(
ChromePreferenceKeys.SIGNIN_PROMO_IMPRESSIONS_COUNT_NTP)
< maxImpressions;
......
......@@ -190,7 +190,6 @@ const base::Feature* kFeaturesExposedToJava[] = {
&kSharedClipboardUI,
&kSharingQrCodeAndroid,
&kShoppingAssist,
&kSigninPromoMaxImpressionsAndroid,
&kSpannableInlineAutocomplete,
&kSpecialLocaleWrapper,
&kSpecialUserDecision,
......@@ -559,9 +558,6 @@ const base::Feature kShareByDefaultInCCT{"ShareByDefaultInCCT",
const base::Feature kShoppingAssist{"ShoppingAssist",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSigninPromoMaxImpressionsAndroid{
"SigninPromoMaxImpressionsAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSpannableInlineAutocomplete{
"SpannableInlineAutocomplete", base::FEATURE_ENABLED_BY_DEFAULT};
......
......@@ -104,7 +104,6 @@ extern const base::Feature kServiceManagerForDownload;
extern const base::Feature kShareButtonInTopToolbar;
extern const base::Feature kShareByDefaultInCCT;
extern const base::Feature kShoppingAssist;
extern const base::Feature kSigninPromoMaxImpressionsAndroid;
extern const base::Feature kSpannableInlineAutocomplete;
extern const base::Feature kSpecialLocaleWrapper;
extern const base::Feature kSpecialUserDecision;
......
......@@ -398,8 +398,6 @@ public abstract class ChromeFeatureList {
public static final String SHARED_CLIPBOARD_UI = "SharedClipboardUI";
public static final String SHARING_QR_CODE_ANDROID = "SharingQrCodeAndroid";
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 =
"SmartSuggestionForLargeDownloads";
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