Merge "Show swipe-up tip with exponential backoff" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-05-22 03:28:13 +00:00
committed by Android (Google) Code Review
2 changed files with 42 additions and 3 deletions

View File

@@ -94,6 +94,8 @@ public final class Prefs {
String OVERVIEW_OPENED_FROM_HOME_COUNT = "OverviewOpenedFromHomeCount";
String HAS_SEEN_RECENTS_SWIPE_UP_ONBOARDING = "HasSeenRecentsSwipeUpOnboarding";
String HAS_SEEN_RECENTS_QUICK_SCRUB_ONBOARDING = "HasSeenRecentsQuickScrubOnboarding";
String DISMISSED_RECENTS_SWIPE_UP_ONBOARDING_COUNT =
"DismissedRecentsSwipeUpOnboardingCount";
String HAS_DISMISSED_RECENTS_QUICK_SCRUB_ONBOARDING_ONCE =
"HasDismissedRecentsQuickScrubOnboardingOnce";
String SEEN_RINGER_GUIDANCE_COUNT = "RingerGuidanceCount";

View File

@@ -20,6 +20,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static com.android.systemui.Prefs.Key.HAS_DISMISSED_RECENTS_QUICK_SCRUB_ONBOARDING_ONCE;
import static com.android.systemui.Prefs.Key.DISMISSED_RECENTS_SWIPE_UP_ONBOARDING_COUNT;
import static com.android.systemui.Prefs.Key.HAS_SEEN_RECENTS_QUICK_SCRUB_ONBOARDING;
import static com.android.systemui.Prefs.Key.HAS_SEEN_RECENTS_SWIPE_UP_ONBOARDING;
import static com.android.systemui.Prefs.Key.OVERVIEW_OPENED_COUNT;
@@ -87,9 +88,17 @@ public class RecentsOnboarding {
private static final int SWIPE_UP_SHOW_ON_OVERVIEW_OPENED_FROM_HOME_COUNT = 3;
// Show quick scrub tips after opening overview this number of times.
private static final int QUICK_SCRUB_SHOW_ON_OVERVIEW_OPENED_COUNT = 10;
// After explicitly dismissing, show again after launching this number of apps for swipe-up
// tips.
// Maximum number of dismissals while still showing swipe-up tips.
private static final int MAX_DISMISSAL_ON_SWIPE_UP_SHOW = 4;
// Number of dismissals for swipe-up tips when exponential backoff starts.
private static final int BACKOFF_DISMISSAL_COUNT_ON_SWIPE_UP_SHOW = 2;
// After explicitly dismissing for <= BACKOFF_DISMISSAL_COUNT_ON_SWIPE_UP_SHOW times, show again
// after launching this number of apps for swipe-up tips.
private static final int SWIPE_UP_SHOW_ON_APP_LAUNCH_AFTER_DISMISS = 5;
// After explicitly dismissing for > BACKOFF_DISMISSAL_COUNT_ON_SWIPE_UP_SHOW but
// <= MAX_DISMISSAL_ON_SWIPE_UP_SHOW times, show again after launching this number of apps for
// swipe-up tips.
private static final int SWIPE_UP_SHOW_ON_APP_LAUNCH_AFTER_DISMISS_BACK_OFF = 10;
private final Context mContext;
private final WindowManager mWindowManager;
@@ -152,9 +161,20 @@ public class RecentsOnboarding {
if (getOpenedOverviewFromHomeCount()
>= SWIPE_UP_SHOW_ON_OVERVIEW_OPENED_FROM_HOME_COUNT) {
if (mHasDismissedSwipeUpTip) {
int hasDimissedSwipeUpOnboardingCount =
getDismissedSwipeUpOnboardingCount();
if (hasDimissedSwipeUpOnboardingCount > MAX_DISMISSAL_ON_SWIPE_UP_SHOW) {
Log.d(TAG, "Should not be reached");
return;
}
final int swipeUpShowOnAppLauncherAfterDismiss =
hasDimissedSwipeUpOnboardingCount
<= BACKOFF_DISMISSAL_COUNT_ON_SWIPE_UP_SHOW
? SWIPE_UP_SHOW_ON_APP_LAUNCH_AFTER_DISMISS
: SWIPE_UP_SHOW_ON_APP_LAUNCH_AFTER_DISMISS_BACK_OFF;
mNumAppsLaunchedSinceSwipeUpTipDismiss++;
if (mNumAppsLaunchedSinceSwipeUpTipDismiss
== SWIPE_UP_SHOW_ON_APP_LAUNCH_AFTER_DISMISS) {
== swipeUpShowOnAppLauncherAfterDismiss) {
mNumAppsLaunchedSinceSwipeUpTipDismiss = 0;
shouldLog = show(R.string.recents_swipe_up_onboarding);
}
@@ -286,6 +306,10 @@ public class RecentsOnboarding {
if (v.getTag().equals(R.string.recents_swipe_up_onboarding)) {
mHasDismissedSwipeUpTip = true;
mNumAppsLaunchedSinceSwipeUpTipDismiss = 0;
setDismissedSwipeUpOnboardingCount(getDismissedSwipeUpOnboardingCount() + 1);
if (getDismissedSwipeUpOnboardingCount() > MAX_DISMISSAL_ON_SWIPE_UP_SHOW) {
setHasSeenSwipeUpOnboarding(true);
}
notifyOnTip(DISMISS, RECENTS_SWIPE_UP_ONBOARDING_TIP);
} else {
notifyOnTip(DISMISS, RECENTS_QUICK_SCRUB_ONBOARDING_TIP);
@@ -304,6 +328,7 @@ public class RecentsOnboarding {
if (RESET_PREFS_FOR_DEBUG) {
setHasSeenSwipeUpOnboarding(false);
setHasSeenQuickScrubOnboarding(false);
setDismissedSwipeUpOnboardingCount(0);
setHasDismissedQuickScrubOnboardingOnce(false);
setOpenedOverviewCount(0);
setOpenedOverviewFromHomeCount(0);
@@ -440,6 +465,8 @@ public class RecentsOnboarding {
+ mNumAppsLaunchedSinceSwipeUpTipDismiss);
pw.println(" hasSeenSwipeUpOnboarding: " + hasSeenSwipeUpOnboarding());
pw.println(" hasSeenQuickScrubOnboarding: " + hasSeenQuickScrubOnboarding());
pw.println(" getDismissedSwipeUpOnboardingCount: "
+ getDismissedSwipeUpOnboardingCount());
pw.println(" hasDismissedQuickScrubOnboardingOnce: "
+ hasDismissedQuickScrubOnboardingOnce());
pw.println(" getOpenedOverviewCount: " + getOpenedOverviewCount());
@@ -488,6 +515,16 @@ public class RecentsOnboarding {
}
}
private int getDismissedSwipeUpOnboardingCount() {
return Prefs.getInt(mContext, DISMISSED_RECENTS_SWIPE_UP_ONBOARDING_COUNT, 0);
}
private void setDismissedSwipeUpOnboardingCount(int dismissedSwipeUpOnboardingCount) {
Log.d(TAG, "setDismissedSwipeUpOnboardingCount: " + dismissedSwipeUpOnboardingCount);
Prefs.putInt(mContext, DISMISSED_RECENTS_SWIPE_UP_ONBOARDING_COUNT,
dismissedSwipeUpOnboardingCount);
}
private boolean hasDismissedQuickScrubOnboardingOnce() {
return Prefs.getBoolean(mContext, HAS_DISMISSED_RECENTS_QUICK_SCRUB_ONBOARDING_ONCE, false);
}