From f94033dafca06261862561f5b07fb59aa7af3edc Mon Sep 17 00:00:00 2001 From: Chandan Nath Date: Wed, 24 Apr 2019 18:58:50 +0100 Subject: [PATCH] Always show backup settings (even if backup is deactivated). Previously, 1) we showed backup settings for main users (including secondary non-profile users) only when backup was activated 2) for profile users, we always showed backup settings. However, this results in a nullpointer when opening Settings when backup is deactivated for both main and profile user. This CL fixes that nullpointer(and also changes existing functionality since keeping existing functionality and fixing the nullpointer would be too large a code change) For more details, see https://b.corp.google.com/issues/129843872#comment9 and https://b.corp.google.com/issues/129843872#comment12 Bug: 129843872 Test: 1. atest -v UserBackupSettingsActivityTest 2. atest -v BackupInactivePreferenceControllerTest 3a) backup not active for main and profile user. shows "isn't active" for both 3b) backup active for main only. shows backup settings for main user and "isn't active" for profile. 3c) backup active for both. shows backup settings for both. 3d) backup active for profile only is not possible (as profile backup is only active when main user backup is active). if we try to force set it, we get "isn't active" for both 3e) backup not active for secondary user. shows "isn't active" 3f) backup active for secondary user. shows backup settings. Change-Id: Icb87a047068d29eda560c45dfa4ae02bc991b1af --- src/com/android/settings/SettingsActivity.java | 3 +-- .../BackupInactivePreferenceController.java | 2 +- .../settings/backup/BackupSettingsHelper.java | 8 -------- .../backup/UserBackupSettingsActivity.java | 2 +- .../BackupInactivePreferenceControllerTest.java | 10 +++++----- .../backup/UserBackupSettingsActivityTest.java | 16 ++++++++-------- 6 files changed, 16 insertions(+), 25 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 8077ee321e1..5f2e1a9f071 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -639,9 +639,8 @@ public class SettingsActivity extends SettingsBaseActivity showDev, isAdmin) || somethingChanged; - boolean enableBackupTile = new BackupSettingsHelper(this).showBackupSettingsForUser(); somethingChanged = setTileEnabled(changedList, new ComponentName(packageName, - UserBackupSettingsActivity.class.getName()), enableBackupTile, isAdmin) + UserBackupSettingsActivity.class.getName()), true, isAdmin) || somethingChanged; somethingChanged = setTileEnabled(changedList, new ComponentName(packageName, diff --git a/src/com/android/settings/backup/BackupInactivePreferenceController.java b/src/com/android/settings/backup/BackupInactivePreferenceController.java index 92a9487490b..86e1220442e 100644 --- a/src/com/android/settings/backup/BackupInactivePreferenceController.java +++ b/src/com/android/settings/backup/BackupInactivePreferenceController.java @@ -28,7 +28,7 @@ public class BackupInactivePreferenceController extends BasePreferenceController @Override public int getAvailabilityStatus() { - if (!new BackupSettingsHelper(mContext).showBackupSettingsForUser()) { + if (!new BackupSettingsHelper(mContext).isBackupServiceActive()) { return AVAILABLE_UNSEARCHABLE; } if (PrivacySettingsUtils.isInvisibleKey(mContext, PrivacySettingsUtils.BACKUP_INACTIVE)) { diff --git a/src/com/android/settings/backup/BackupSettingsHelper.java b/src/com/android/settings/backup/BackupSettingsHelper.java index ff4b0b5d506..1d3455b1495 100644 --- a/src/com/android/settings/backup/BackupSettingsHelper.java +++ b/src/com/android/settings/backup/BackupSettingsHelper.java @@ -50,14 +50,6 @@ public class BackupSettingsHelper { mContext = context; } - public boolean showBackupSettingsForUser() { - // For profiles, we want them to be included in the profile select dialog even if - // backup is not activated. - // For other users, enable/disable backup settings depending on whether backup is activated - // for the user. - return UserManager.get(mContext).isManagedProfile() || isBackupServiceActive(); - } - /** * If there is only one profile, show whether the backup is on or off. * Otherwise, show nothing. diff --git a/src/com/android/settings/backup/UserBackupSettingsActivity.java b/src/com/android/settings/backup/UserBackupSettingsActivity.java index dbbb1358e1c..c2bcd07c8f9 100644 --- a/src/com/android/settings/backup/UserBackupSettingsActivity.java +++ b/src/com/android/settings/backup/UserBackupSettingsActivity.java @@ -123,7 +123,7 @@ public class UserBackupSettingsActivity extends FragmentActivity implements Inde @Override public List getNonIndexableKeys(Context context) { final List keys = super.getNonIndexableKeys(context); - if (!new BackupSettingsHelper(context).showBackupSettingsForUser()) { + if (!new BackupSettingsHelper(context).isBackupServiceActive()) { keys.add(BACKUP_SEARCH_INDEX_KEY); } return keys; diff --git a/tests/robotests/src/com/android/settings/backup/BackupInactivePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/backup/BackupInactivePreferenceControllerTest.java index 669aabb0db4..e9c0469647c 100644 --- a/tests/robotests/src/com/android/settings/backup/BackupInactivePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/backup/BackupInactivePreferenceControllerTest.java @@ -54,18 +54,18 @@ public class BackupInactivePreferenceControllerTest { } @Test - public void getAvailabilityStatus_isnotInvisibleKey_showBackup_shouldBeAvailable() { + public void getAvailabilityStatus_isnotInvisibleKey_backupActive_shouldBeAvailable() { ShadowPrivacySettingsUtils.setIsInvisibleKey(false); - ShadowBackupSettingsHelper.showBackupSettingsForUser = true; + ShadowBackupSettingsHelper.isBackupServiceActive = true; assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.AVAILABLE); } @Test - public void getAvailabilityStatus_isnotInvisibleKey_dontShowBackup_shouldBeUnsearchable() { + public void getAvailabilityStatus_isnotInvisibleKey_backupNotActive_shouldBeUnsearchable() { ShadowPrivacySettingsUtils.setIsInvisibleKey(false); - ShadowBackupSettingsHelper.showBackupSettingsForUser = false; + ShadowBackupSettingsHelper.isBackupServiceActive = false; assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE); @@ -74,7 +74,7 @@ public class BackupInactivePreferenceControllerTest { @Test public void getAvailabilityStatus_isInvisibleKey_shouldBeDisabledUnsupported() { ShadowPrivacySettingsUtils.setIsInvisibleKey(true); - ShadowBackupSettingsHelper.showBackupSettingsForUser = true; + ShadowBackupSettingsHelper.isBackupServiceActive = true; assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE); diff --git a/tests/robotests/src/com/android/settings/backup/UserBackupSettingsActivityTest.java b/tests/robotests/src/com/android/settings/backup/UserBackupSettingsActivityTest.java index 9c5a11a22ff..7e703a62613 100644 --- a/tests/robotests/src/com/android/settings/backup/UserBackupSettingsActivityTest.java +++ b/tests/robotests/src/com/android/settings/backup/UserBackupSettingsActivityTest.java @@ -123,8 +123,8 @@ public class UserBackupSettingsActivityTest { } @Test - public void getNonIndexableKeys_whenShowBackupSettings() { - ShadowBackupSettingsHelper.showBackupSettingsForUser = true; + public void getNonIndexableKeys_whenBackupServiceActive() { + ShadowBackupSettingsHelper.isBackupServiceActive = true; assertThat(UserBackupSettingsActivity.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex( mApplication, true)).isNotEmpty(); @@ -133,8 +133,8 @@ public class UserBackupSettingsActivityTest { } @Test - public void getNonIndexableKeys_whenDontShowBackupSettings() { - ShadowBackupSettingsHelper.showBackupSettingsForUser = false; + public void getNonIndexableKeys_whenBackupServiceNotActive() { + ShadowBackupSettingsHelper.isBackupServiceActive = false; assertThat(UserBackupSettingsActivity.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex( mApplication, true)).isNotEmpty(); @@ -144,11 +144,11 @@ public class UserBackupSettingsActivityTest { @Implements(BackupSettingsHelper.class) public static class ShadowBackupSettingsHelper { - static boolean showBackupSettingsForUser = true; + static boolean isBackupServiceActive = true; @Implementation - public boolean showBackupSettingsForUser() { - return showBackupSettingsForUser; + public boolean isBackupServiceActive() { + return isBackupServiceActive; } @Implementation @@ -163,7 +163,7 @@ public class UserBackupSettingsActivityTest { @Resetter public static void reset() { - showBackupSettingsForUser = true; + isBackupServiceActive = true; } } }