Show Reachability only once per user on device lifetime

The Reachability education dialog will appear automatically
only the first time an app eligible to be moved with
double-tap action is displayed on the screen.

Fixes: 274991247
Test: Manual

Change-Id: Ifec12a4386e69d7fd2ba895a298a46059203a59d
This commit is contained in:
Massimo Carli
2023-03-24 09:29:40 +00:00
parent 8cc83cc48e
commit 5901d8f710
2 changed files with 18 additions and 6 deletions

View File

@@ -156,15 +156,13 @@ public class CompatUIConfiguration implements DeviceConfig.OnPropertiesChangedLi
void setDontShowReachabilityEducationAgain(TaskInfo taskInfo) {
mCompatUISharedPreferences.edit().putBoolean(
getDontShowAgainReachabilityEduKey(taskInfo.userId,
taskInfo.topActivity.getPackageName()), true).apply();
getDontShowAgainReachabilityEduKey(taskInfo.userId), true).apply();
}
boolean shouldShowReachabilityEducation(@NonNull TaskInfo taskInfo) {
return getHasSeenLetterboxEducation(taskInfo.userId)
&& !mCompatUISharedPreferences.getBoolean(
getDontShowAgainReachabilityEduKey(taskInfo.userId,
taskInfo.topActivity.getPackageName()), /* default= */false);
getDontShowAgainReachabilityEduKey(taskInfo.userId), /* default= */false);
}
boolean getHasSeenLetterboxEducation(int userId) {
@@ -206,8 +204,8 @@ public class CompatUIConfiguration implements DeviceConfig.OnPropertiesChangedLi
}
}
private static String getDontShowAgainReachabilityEduKey(int userId, String packageName) {
return HAS_SEEN_REACHABILITY_EDUCATION_KEY_PREFIX + "_" + packageName + "@" + userId;
private static String getDontShowAgainReachabilityEduKey(int userId) {
return HAS_SEEN_REACHABILITY_EDUCATION_KEY_PREFIX + "@" + userId;
}
private static String getDontShowLetterboxEduKey(int userId) {

View File

@@ -66,6 +66,8 @@ import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Consumer;
/**
@@ -118,6 +120,18 @@ public class LetterboxEduWindowManagerTest extends ShellTestCase {
mExecutor = new TestShellExecutor();
mCompatUIConfiguration = new CompatUIConfiguration(mContext, mExecutor) {
final Set<Integer> mHasSeenSet = new HashSet<>();
@Override
boolean getHasSeenLetterboxEducation(int userId) {
return mHasSeenSet.contains(userId);
}
@Override
void setSeenLetterboxEducation(int userId) {
mHasSeenSet.add(userId);
}
@Override
protected String getCompatUISharedPreferenceName() {
return TEST_COMPAT_UI_SHARED_PREFERENCES;