Fix NPE during unit test
As of ag/3932176 the slice indexer now queries getSummary() for each
controller. So we need to create all necessary objects before
getSummary(). In this case, the PSCD object.
Change-Id: I0162996be37d740f1e450880bf4698acd94ca0ad
Fixes: 78897071
Test: atest
diff --git a/src/com/android/settings/backup/AutoRestorePreferenceController.java b/src/com/android/settings/backup/AutoRestorePreferenceController.java
index 062863a..0333451 100644
--- a/src/com/android/settings/backup/AutoRestorePreferenceController.java
+++ b/src/com/android/settings/backup/AutoRestorePreferenceController.java
@@ -22,12 +22,13 @@
import android.os.RemoteException;
import android.os.ServiceManager;
import android.provider.Settings;
-import androidx.preference.SwitchPreference;
-import androidx.preference.Preference;
import android.util.Log;
import com.android.settings.core.TogglePreferenceController;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+
public class AutoRestorePreferenceController extends TogglePreferenceController {
private static final String TAG = "AutoRestorePrefCtrler";
@@ -36,10 +37,7 @@
public AutoRestorePreferenceController(Context context, String key) {
super(context, key);
- }
-
- public void setPrivacySettingsConfigData(final PrivacySettingsConfigData pData) {
- mPSCD = pData;
+ mPSCD = PrivacySettingsConfigData.getInstance();
}
@Override
diff --git a/src/com/android/settings/backup/BackupDataPreferenceController.java b/src/com/android/settings/backup/BackupDataPreferenceController.java
index d7c8206..e464fc2 100644
--- a/src/com/android/settings/backup/BackupDataPreferenceController.java
+++ b/src/com/android/settings/backup/BackupDataPreferenceController.java
@@ -17,20 +17,18 @@
package com.android.settings.backup;
import android.content.Context;
-import androidx.preference.Preference;
-import com.android.settings.core.BasePreferenceController;
import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+import androidx.preference.Preference;
public class BackupDataPreferenceController extends BasePreferenceController {
private PrivacySettingsConfigData mPSCD;
public BackupDataPreferenceController(Context context, String key) {
super(context, key);
- }
-
- public void setPrivacySettingsConfigData(final PrivacySettingsConfigData pData) {
- mPSCD = pData;
+ mPSCD = PrivacySettingsConfigData.getInstance();
}
@Override
diff --git a/src/com/android/settings/backup/BackupSettingsHelper.java b/src/com/android/settings/backup/BackupSettingsHelper.java
index 15f1dab..53406fe 100644
--- a/src/com/android/settings/backup/BackupSettingsHelper.java
+++ b/src/com/android/settings/backup/BackupSettingsHelper.java
@@ -24,7 +24,6 @@
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
-import androidx.annotation.VisibleForTesting;
import android.util.Log;
import com.android.settings.R;
@@ -32,6 +31,8 @@
import java.net.URISyntaxException;
+import androidx.annotation.VisibleForTesting;
+
/**
* Helper class for {@link BackupSettingsActivity} that interacts with {@link IBackupManager}.
*/
diff --git a/src/com/android/settings/backup/ConfigureAccountPreferenceController.java b/src/com/android/settings/backup/ConfigureAccountPreferenceController.java
index 8be5b5e..f6b0eb7 100644
--- a/src/com/android/settings/backup/ConfigureAccountPreferenceController.java
+++ b/src/com/android/settings/backup/ConfigureAccountPreferenceController.java
@@ -18,20 +18,18 @@
import android.content.Context;
import android.content.Intent;
-import androidx.preference.Preference;
-import com.android.settings.core.BasePreferenceController;
import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+import androidx.preference.Preference;
public class ConfigureAccountPreferenceController extends BasePreferenceController {
private PrivacySettingsConfigData mPSCD;
public ConfigureAccountPreferenceController(Context context, String key) {
super(context, key);
- }
-
- public void setPrivacySettingsConfigData(final PrivacySettingsConfigData pData) {
- mPSCD = pData;
+ mPSCD = PrivacySettingsConfigData.getInstance();
}
@Override
diff --git a/src/com/android/settings/backup/DataManagementPreferenceController.java b/src/com/android/settings/backup/DataManagementPreferenceController.java
index 0a78f96..120c827 100644
--- a/src/com/android/settings/backup/DataManagementPreferenceController.java
+++ b/src/com/android/settings/backup/DataManagementPreferenceController.java
@@ -17,21 +17,17 @@
package com.android.settings.backup;
import android.content.Context;
-import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController;
+import androidx.preference.Preference;
+
public class DataManagementPreferenceController extends BasePreferenceController {
private PrivacySettingsConfigData mPSCD;
- private boolean mManageEnabled;
public DataManagementPreferenceController(Context context, String key) {
super(context, key);
- }
-
- public void setPrivacySettingsConfigData(final PrivacySettingsConfigData pData) {
- mPSCD = pData;
- mManageEnabled = (mPSCD.getManageIntent() != null) && mPSCD.isBackupEnabled();
+ mPSCD = PrivacySettingsConfigData.getInstance();
}
@Override
@@ -39,7 +35,8 @@
if (!PrivacySettingsUtils.isAdminUser(mContext)) {
return DISABLED_FOR_USER;
}
- if (!mManageEnabled) {
+ boolean manageEnabled = (mPSCD.getManageIntent() != null) && mPSCD.isBackupEnabled();
+ if (!manageEnabled) {
return DISABLED_UNSUPPORTED;
}
return AVAILABLE;
@@ -47,12 +44,13 @@
@Override
public void updateState(Preference preference) {
- if (mManageEnabled) {
- preference.setIntent(mPSCD.getManageIntent());
- final String manageLabel = mPSCD.getManageLabel();
- if (manageLabel != null) {
- preference.setTitle(manageLabel);
- }
+ if (!isAvailable()) {
+ return;
+ }
+ preference.setIntent(mPSCD.getManageIntent());
+ final String manageLabel = mPSCD.getManageLabel();
+ if (manageLabel != null) {
+ preference.setTitle(manageLabel);
}
}
}
\ No newline at end of file
diff --git a/src/com/android/settings/backup/PrivacySettings.java b/src/com/android/settings/backup/PrivacySettings.java
index 9b342e7..684956e 100644
--- a/src/com/android/settings/backup/PrivacySettings.java
+++ b/src/com/android/settings/backup/PrivacySettings.java
@@ -65,15 +65,10 @@
}
private void updatePrivacySettingsConfigData(final Context context) {
- final PrivacySettingsConfigData pData = new PrivacySettingsConfigData();
if (PrivacySettingsUtils.isAdminUser(context)) {
- PrivacySettingsUtils.updatePrivacyBuffer(context, pData);
+ PrivacySettingsUtils.updatePrivacyBuffer(context,
+ PrivacySettingsConfigData.getInstance());
}
-
- use(BackupDataPreferenceController.class).setPrivacySettingsConfigData(pData);
- use(ConfigureAccountPreferenceController.class).setPrivacySettingsConfigData(pData);
- use(DataManagementPreferenceController.class).setPrivacySettingsConfigData(pData);
- use(AutoRestorePreferenceController.class).setPrivacySettingsConfigData(pData);
}
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
diff --git a/src/com/android/settings/backup/PrivacySettingsConfigData.java b/src/com/android/settings/backup/PrivacySettingsConfigData.java
index 9b72a82..ffe05b8 100644
--- a/src/com/android/settings/backup/PrivacySettingsConfigData.java
+++ b/src/com/android/settings/backup/PrivacySettingsConfigData.java
@@ -19,6 +19,9 @@
import android.content.Intent;
public class PrivacySettingsConfigData {
+
+ private static PrivacySettingsConfigData sInstance;
+
private boolean mBackupEnabled;
private boolean mBackupGray;
private Intent mConfigIntent;
@@ -26,7 +29,7 @@
private Intent mManageIntent;
private String mManageLabel;
- public PrivacySettingsConfigData() {
+ private PrivacySettingsConfigData() {
mBackupEnabled = false;
mBackupGray = false;
mConfigIntent = null;
@@ -35,6 +38,13 @@
mManageLabel = null;
}
+ public static PrivacySettingsConfigData getInstance() {
+ if (sInstance == null) {
+ sInstance = new PrivacySettingsConfigData();
+ }
+ return sInstance;
+ }
+
public boolean isBackupEnabled() {
return mBackupEnabled;
}
diff --git a/tests/robotests/src/com/android/settings/backup/AutoRestorePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/backup/AutoRestorePreferenceControllerTest.java
index 6a3288c..9a4e167 100644
--- a/tests/robotests/src/com/android/settings/backup/AutoRestorePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/backup/AutoRestorePreferenceControllerTest.java
@@ -19,7 +19,6 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
-import androidx.preference.SwitchPreference;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -32,6 +31,8 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import androidx.preference.SwitchPreference;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowPrivacySettingsUtils.class})
public class AutoRestorePreferenceControllerTest {
@@ -44,7 +45,7 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mPSCD = new PrivacySettingsConfigData();
+ mPSCD = PrivacySettingsConfigData.getInstance();
mController = new AutoRestorePreferenceController(mContext,
PrivacySettingsUtils.AUTO_RESTORE);
mPreference = new SwitchPreference(mContext);
@@ -59,7 +60,7 @@
public void updateState_backupEnabled_prefShouldBeEnabled() {
mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false);
- mController.setPrivacySettingsConfigData(mPSCD);
+
mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isTrue();
}
diff --git a/tests/robotests/src/com/android/settings/backup/BackupDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/backup/BackupDataPreferenceControllerTest.java
index 73a9bc5..7cfe9c7 100644
--- a/tests/robotests/src/com/android/settings/backup/BackupDataPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/backup/BackupDataPreferenceControllerTest.java
@@ -19,8 +19,6 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
-import android.os.UserManager;
-import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
@@ -34,6 +32,8 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import androidx.preference.Preference;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowPrivacySettingsUtils.class})
public class BackupDataPreferenceControllerTest {
@@ -46,7 +46,7 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mPSCD = new PrivacySettingsConfigData();
+ mPSCD = PrivacySettingsConfigData.getInstance();
mController = new BackupDataPreferenceController(mContext,
PrivacySettingsUtils.BACKUP_DATA);
mPreference = new Preference(mContext);
@@ -61,7 +61,7 @@
public void updateState_backupEnabled_prefShouldBeEnabled() {
mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false);
- mController.setPrivacySettingsConfigData(mPSCD);
+
mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isTrue();
}
@@ -70,7 +70,7 @@
public void updateState_backupEnabled_prefShouldDisplayOnSummary() {
mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false);
- mController.setPrivacySettingsConfigData(mPSCD);
+
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
.isEqualTo(mContext.getString(R.string.accessibility_feature_state_on));
@@ -80,7 +80,7 @@
public void updateState_backupDisabled_prefShouldDisplayOffSummary() {
mPSCD.setBackupEnabled(false);
mPSCD.setBackupGray(false);
- mController.setPrivacySettingsConfigData(mPSCD);
+
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
.isEqualTo(mContext.getString(R.string.accessibility_feature_state_off));
diff --git a/tests/robotests/src/com/android/settings/backup/ConfigureAccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/backup/ConfigureAccountPreferenceControllerTest.java
index 7ddd95a..3060883 100644
--- a/tests/robotests/src/com/android/settings/backup/ConfigureAccountPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/backup/ConfigureAccountPreferenceControllerTest.java
@@ -20,7 +20,6 @@
import android.content.Context;
import android.content.Intent;
-import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
@@ -35,6 +34,8 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import androidx.preference.Preference;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowPrivacySettingsUtils.class})
public class ConfigureAccountPreferenceControllerTest {
@@ -51,7 +52,7 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mPSCD = new PrivacySettingsConfigData();
+ mPSCD = PrivacySettingsConfigData.getInstance();
mController = new ConfigureAccountPreferenceController(mContext,
PrivacySettingsUtils.CONFIGURE_ACCOUNT);
mPreference = new Preference(mContext);
@@ -68,7 +69,7 @@
mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false);
mPSCD.setConfigIntent(mIntent);
- mController.setPrivacySettingsConfigData(mPSCD);
+
mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isTrue();
}
@@ -80,7 +81,7 @@
mPSCD.setBackupGray(false);
mPSCD.setConfigIntent(mIntent);
mPSCD.setConfigSummary(null);
- mController.setPrivacySettingsConfigData(mPSCD);
+
mController.updateState(mPreference);
assertThat(mPreference.getSummary())
.isEqualTo(mContext.getString(R.string.backup_configure_account_default_summary));
@@ -93,7 +94,7 @@
mPSCD.setBackupGray(false);
mPSCD.setConfigIntent(mIntent);
mPSCD.setConfigSummary(mTestSummary);
- mController.setPrivacySettingsConfigData(mPSCD);
+
mController.updateState(mPreference);
assertThat(mPreference.getSummary()).isEqualTo(mTestSummary);
}
diff --git a/tests/robotests/src/com/android/settings/backup/DataManagementPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/backup/DataManagementPreferenceControllerTest.java
index 36e2045..f192a8b 100644
--- a/tests/robotests/src/com/android/settings/backup/DataManagementPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/backup/DataManagementPreferenceControllerTest.java
@@ -20,7 +20,6 @@
import android.content.Context;
import android.content.Intent;
-import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -34,6 +33,8 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import androidx.preference.Preference;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowPrivacySettingsUtils.class})
public class DataManagementPreferenceControllerTest {
@@ -56,7 +57,7 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mPSCD = new PrivacySettingsConfigData();
+ mPSCD = PrivacySettingsConfigData.getInstance();
mController = new DataManagementPreferenceController(mContext, KEY);
mPreference = new Preference(mContext);
mTitle = "Title";
@@ -68,26 +69,25 @@
mPSCD.setBackupGray(false);
mPSCD.setManageIntent(mIntent);
mPSCD.setManageLabel(mTitle);
- mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference);
assertThat(mPreference.getTitle())
.isEqualTo(mTitle);
}
@Test
- public void getAvailabilityStatus_isAdmiUser_backupEnabled_hadManageIntent_shouldBeAvailable() {
+ public void getAvailabilityStatus_isAdmin_backupEnabled_hadManageIntent_shouldBeAvailable() {
ShadowPrivacySettingsUtils.setIsAdminUser(true);
mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false);
mPSCD.setManageIntent(mIntent);
mPSCD.setManageLabel(mTitle);
- mController.setPrivacySettingsConfigData(mPSCD);
+
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.AVAILABLE);
}
@Test
- public void getAvailabilityStatus_isnotAdmiUser_shouldBeDisabledForUser() {
+ public void getAvailabilityStatus_isNotAdminUser_shouldBeDisabledForUser() {
ShadowPrivacySettingsUtils.setIsAdminUser(false);
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.DISABLED_FOR_USER);
@@ -95,13 +95,13 @@
@Test
public void
- getAvailabilityStatus_isAdmiUser_backupEnabled_nullManageIntent_shouldBeDisabledUnsupported() {
+ getAvailabilityStatus_isAdminUser_backupEnabled_nullManageIntent_shouldBeDisabledUnsupported() {
ShadowPrivacySettingsUtils.setIsAdminUser(true);
mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false);
mPSCD.setManageIntent(null);
mPSCD.setManageLabel(mTitle);
- mController.setPrivacySettingsConfigData(mPSCD);
+
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.DISABLED_UNSUPPORTED);
}