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
This commit is contained in:
Fan Zhang
2018-04-30 13:41:56 -07:00
parent 8efbe6e255
commit 16de45d8ec
11 changed files with 63 additions and 63 deletions

View File

@@ -22,12 +22,13 @@ import android.content.Context;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.provider.Settings; import android.provider.Settings;
import androidx.preference.SwitchPreference;
import androidx.preference.Preference;
import android.util.Log; import android.util.Log;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
public class AutoRestorePreferenceController extends TogglePreferenceController { public class AutoRestorePreferenceController extends TogglePreferenceController {
private static final String TAG = "AutoRestorePrefCtrler"; private static final String TAG = "AutoRestorePrefCtrler";
@@ -36,10 +37,7 @@ public class AutoRestorePreferenceController extends TogglePreferenceController
public AutoRestorePreferenceController(Context context, String key) { public AutoRestorePreferenceController(Context context, String key) {
super(context, key); super(context, key);
} mPSCD = PrivacySettingsConfigData.getInstance();
public void setPrivacySettingsConfigData(final PrivacySettingsConfigData pData) {
mPSCD = pData;
} }
@Override @Override

View File

@@ -17,20 +17,18 @@
package com.android.settings.backup; package com.android.settings.backup;
import android.content.Context; import android.content.Context;
import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import androidx.preference.Preference;
public class BackupDataPreferenceController extends BasePreferenceController { public class BackupDataPreferenceController extends BasePreferenceController {
private PrivacySettingsConfigData mPSCD; private PrivacySettingsConfigData mPSCD;
public BackupDataPreferenceController(Context context, String key) { public BackupDataPreferenceController(Context context, String key) {
super(context, key); super(context, key);
} mPSCD = PrivacySettingsConfigData.getInstance();
public void setPrivacySettingsConfigData(final PrivacySettingsConfigData pData) {
mPSCD = pData;
} }
@Override @Override

View File

@@ -24,7 +24,6 @@ import android.content.Intent;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.os.UserHandle; import android.os.UserHandle;
import androidx.annotation.VisibleForTesting;
import android.util.Log; import android.util.Log;
import com.android.settings.R; import com.android.settings.R;
@@ -32,6 +31,8 @@ import com.android.settings.Settings.PrivacySettingsActivity;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import androidx.annotation.VisibleForTesting;
/** /**
* Helper class for {@link BackupSettingsActivity} that interacts with {@link IBackupManager}. * Helper class for {@link BackupSettingsActivity} that interacts with {@link IBackupManager}.
*/ */

View File

@@ -18,20 +18,18 @@ package com.android.settings.backup;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import androidx.preference.Preference;
public class ConfigureAccountPreferenceController extends BasePreferenceController { public class ConfigureAccountPreferenceController extends BasePreferenceController {
private PrivacySettingsConfigData mPSCD; private PrivacySettingsConfigData mPSCD;
public ConfigureAccountPreferenceController(Context context, String key) { public ConfigureAccountPreferenceController(Context context, String key) {
super(context, key); super(context, key);
} mPSCD = PrivacySettingsConfigData.getInstance();
public void setPrivacySettingsConfigData(final PrivacySettingsConfigData pData) {
mPSCD = pData;
} }
@Override @Override

View File

@@ -17,21 +17,17 @@
package com.android.settings.backup; package com.android.settings.backup;
import android.content.Context; import android.content.Context;
import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import androidx.preference.Preference;
public class DataManagementPreferenceController extends BasePreferenceController { public class DataManagementPreferenceController extends BasePreferenceController {
private PrivacySettingsConfigData mPSCD; private PrivacySettingsConfigData mPSCD;
private boolean mManageEnabled;
public DataManagementPreferenceController(Context context, String key) { public DataManagementPreferenceController(Context context, String key) {
super(context, key); super(context, key);
} mPSCD = PrivacySettingsConfigData.getInstance();
public void setPrivacySettingsConfigData(final PrivacySettingsConfigData pData) {
mPSCD = pData;
mManageEnabled = (mPSCD.getManageIntent() != null) && mPSCD.isBackupEnabled();
} }
@Override @Override
@@ -39,7 +35,8 @@ public class DataManagementPreferenceController extends BasePreferenceController
if (!PrivacySettingsUtils.isAdminUser(mContext)) { if (!PrivacySettingsUtils.isAdminUser(mContext)) {
return DISABLED_FOR_USER; return DISABLED_FOR_USER;
} }
if (!mManageEnabled) { boolean manageEnabled = (mPSCD.getManageIntent() != null) && mPSCD.isBackupEnabled();
if (!manageEnabled) {
return DISABLED_UNSUPPORTED; return DISABLED_UNSUPPORTED;
} }
return AVAILABLE; return AVAILABLE;
@@ -47,12 +44,13 @@ public class DataManagementPreferenceController extends BasePreferenceController
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
if (mManageEnabled) { if (!isAvailable()) {
preference.setIntent(mPSCD.getManageIntent()); return;
final String manageLabel = mPSCD.getManageLabel(); }
if (manageLabel != null) { preference.setIntent(mPSCD.getManageIntent());
preference.setTitle(manageLabel); final String manageLabel = mPSCD.getManageLabel();
} if (manageLabel != null) {
preference.setTitle(manageLabel);
} }
} }
} }

View File

@@ -65,15 +65,10 @@ public class PrivacySettings extends DashboardFragment {
} }
private void updatePrivacySettingsConfigData(final Context context) { private void updatePrivacySettingsConfigData(final Context context) {
final PrivacySettingsConfigData pData = new PrivacySettingsConfigData();
if (PrivacySettingsUtils.isAdminUser(context)) { 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 = public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =

View File

@@ -19,6 +19,9 @@ package com.android.settings.backup;
import android.content.Intent; import android.content.Intent;
public class PrivacySettingsConfigData { public class PrivacySettingsConfigData {
private static PrivacySettingsConfigData sInstance;
private boolean mBackupEnabled; private boolean mBackupEnabled;
private boolean mBackupGray; private boolean mBackupGray;
private Intent mConfigIntent; private Intent mConfigIntent;
@@ -26,7 +29,7 @@ public class PrivacySettingsConfigData {
private Intent mManageIntent; private Intent mManageIntent;
private String mManageLabel; private String mManageLabel;
public PrivacySettingsConfigData() { private PrivacySettingsConfigData() {
mBackupEnabled = false; mBackupEnabled = false;
mBackupGray = false; mBackupGray = false;
mConfigIntent = null; mConfigIntent = null;
@@ -35,6 +38,13 @@ public class PrivacySettingsConfigData {
mManageLabel = null; mManageLabel = null;
} }
public static PrivacySettingsConfigData getInstance() {
if (sInstance == null) {
sInstance = new PrivacySettingsConfigData();
}
return sInstance;
}
public boolean isBackupEnabled() { public boolean isBackupEnabled() {
return mBackupEnabled; return mBackupEnabled;
} }

View File

@@ -19,7 +19,6 @@ package com.android.settings.backup;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import android.content.Context; import android.content.Context;
import androidx.preference.SwitchPreference;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -32,6 +31,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import androidx.preference.SwitchPreference;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowPrivacySettingsUtils.class}) @Config(shadows = {ShadowPrivacySettingsUtils.class})
public class AutoRestorePreferenceControllerTest { public class AutoRestorePreferenceControllerTest {
@@ -44,7 +45,7 @@ public class AutoRestorePreferenceControllerTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mPSCD = new PrivacySettingsConfigData(); mPSCD = PrivacySettingsConfigData.getInstance();
mController = new AutoRestorePreferenceController(mContext, mController = new AutoRestorePreferenceController(mContext,
PrivacySettingsUtils.AUTO_RESTORE); PrivacySettingsUtils.AUTO_RESTORE);
mPreference = new SwitchPreference(mContext); mPreference = new SwitchPreference(mContext);
@@ -59,7 +60,7 @@ public class AutoRestorePreferenceControllerTest {
public void updateState_backupEnabled_prefShouldBeEnabled() { public void updateState_backupEnabled_prefShouldBeEnabled() {
mPSCD.setBackupEnabled(true); mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isTrue(); assertThat(mPreference.isEnabled()).isTrue();
} }

View File

@@ -19,8 +19,6 @@ package com.android.settings.backup;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import android.content.Context; import android.content.Context;
import android.os.UserManager;
import androidx.preference.Preference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
@@ -34,6 +32,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import androidx.preference.Preference;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowPrivacySettingsUtils.class}) @Config(shadows = {ShadowPrivacySettingsUtils.class})
public class BackupDataPreferenceControllerTest { public class BackupDataPreferenceControllerTest {
@@ -46,7 +46,7 @@ public class BackupDataPreferenceControllerTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mPSCD = new PrivacySettingsConfigData(); mPSCD = PrivacySettingsConfigData.getInstance();
mController = new BackupDataPreferenceController(mContext, mController = new BackupDataPreferenceController(mContext,
PrivacySettingsUtils.BACKUP_DATA); PrivacySettingsUtils.BACKUP_DATA);
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
@@ -61,7 +61,7 @@ public class BackupDataPreferenceControllerTest {
public void updateState_backupEnabled_prefShouldBeEnabled() { public void updateState_backupEnabled_prefShouldBeEnabled() {
mPSCD.setBackupEnabled(true); mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isTrue(); assertThat(mPreference.isEnabled()).isTrue();
} }
@@ -70,7 +70,7 @@ public class BackupDataPreferenceControllerTest {
public void updateState_backupEnabled_prefShouldDisplayOnSummary() { public void updateState_backupEnabled_prefShouldDisplayOnSummary() {
mPSCD.setBackupEnabled(true); mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.getSummary()) assertThat(mPreference.getSummary())
.isEqualTo(mContext.getString(R.string.accessibility_feature_state_on)); .isEqualTo(mContext.getString(R.string.accessibility_feature_state_on));
@@ -80,7 +80,7 @@ public class BackupDataPreferenceControllerTest {
public void updateState_backupDisabled_prefShouldDisplayOffSummary() { public void updateState_backupDisabled_prefShouldDisplayOffSummary() {
mPSCD.setBackupEnabled(false); mPSCD.setBackupEnabled(false);
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.getSummary()) assertThat(mPreference.getSummary())
.isEqualTo(mContext.getString(R.string.accessibility_feature_state_off)); .isEqualTo(mContext.getString(R.string.accessibility_feature_state_off));

View File

@@ -20,7 +20,6 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import androidx.preference.Preference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
@@ -35,6 +34,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import androidx.preference.Preference;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowPrivacySettingsUtils.class}) @Config(shadows = {ShadowPrivacySettingsUtils.class})
public class ConfigureAccountPreferenceControllerTest { public class ConfigureAccountPreferenceControllerTest {
@@ -51,7 +52,7 @@ public class ConfigureAccountPreferenceControllerTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mPSCD = new PrivacySettingsConfigData(); mPSCD = PrivacySettingsConfigData.getInstance();
mController = new ConfigureAccountPreferenceController(mContext, mController = new ConfigureAccountPreferenceController(mContext,
PrivacySettingsUtils.CONFIGURE_ACCOUNT); PrivacySettingsUtils.CONFIGURE_ACCOUNT);
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
@@ -68,7 +69,7 @@ public class ConfigureAccountPreferenceControllerTest {
mPSCD.setBackupEnabled(true); mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mPSCD.setConfigIntent(mIntent); mPSCD.setConfigIntent(mIntent);
mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.isEnabled()).isTrue(); assertThat(mPreference.isEnabled()).isTrue();
} }
@@ -80,7 +81,7 @@ public class ConfigureAccountPreferenceControllerTest {
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mPSCD.setConfigIntent(mIntent); mPSCD.setConfigIntent(mIntent);
mPSCD.setConfigSummary(null); mPSCD.setConfigSummary(null);
mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.getSummary()) assertThat(mPreference.getSummary())
.isEqualTo(mContext.getString(R.string.backup_configure_account_default_summary)); .isEqualTo(mContext.getString(R.string.backup_configure_account_default_summary));
@@ -93,7 +94,7 @@ public class ConfigureAccountPreferenceControllerTest {
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mPSCD.setConfigIntent(mIntent); mPSCD.setConfigIntent(mIntent);
mPSCD.setConfigSummary(mTestSummary); mPSCD.setConfigSummary(mTestSummary);
mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.getSummary()).isEqualTo(mTestSummary); assertThat(mPreference.getSummary()).isEqualTo(mTestSummary);
} }

View File

@@ -20,7 +20,6 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -34,6 +33,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import androidx.preference.Preference;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowPrivacySettingsUtils.class}) @Config(shadows = {ShadowPrivacySettingsUtils.class})
public class DataManagementPreferenceControllerTest { public class DataManagementPreferenceControllerTest {
@@ -56,7 +57,7 @@ public class DataManagementPreferenceControllerTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mPSCD = new PrivacySettingsConfigData(); mPSCD = PrivacySettingsConfigData.getInstance();
mController = new DataManagementPreferenceController(mContext, KEY); mController = new DataManagementPreferenceController(mContext, KEY);
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
mTitle = "Title"; mTitle = "Title";
@@ -68,26 +69,25 @@ public class DataManagementPreferenceControllerTest {
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mPSCD.setManageIntent(mIntent); mPSCD.setManageIntent(mIntent);
mPSCD.setManageLabel(mTitle); mPSCD.setManageLabel(mTitle);
mController.setPrivacySettingsConfigData(mPSCD);
mController.updateState(mPreference); mController.updateState(mPreference);
assertThat(mPreference.getTitle()) assertThat(mPreference.getTitle())
.isEqualTo(mTitle); .isEqualTo(mTitle);
} }
@Test @Test
public void getAvailabilityStatus_isAdmiUser_backupEnabled_hadManageIntent_shouldBeAvailable() { public void getAvailabilityStatus_isAdmin_backupEnabled_hadManageIntent_shouldBeAvailable() {
ShadowPrivacySettingsUtils.setIsAdminUser(true); ShadowPrivacySettingsUtils.setIsAdminUser(true);
mPSCD.setBackupEnabled(true); mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mPSCD.setManageIntent(mIntent); mPSCD.setManageIntent(mIntent);
mPSCD.setManageLabel(mTitle); mPSCD.setManageLabel(mTitle);
mController.setPrivacySettingsConfigData(mPSCD);
assertThat(mController.getAvailabilityStatus()) assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.AVAILABLE); .isEqualTo(BasePreferenceController.AVAILABLE);
} }
@Test @Test
public void getAvailabilityStatus_isnotAdmiUser_shouldBeDisabledForUser() { public void getAvailabilityStatus_isNotAdminUser_shouldBeDisabledForUser() {
ShadowPrivacySettingsUtils.setIsAdminUser(false); ShadowPrivacySettingsUtils.setIsAdminUser(false);
assertThat(mController.getAvailabilityStatus()) assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.DISABLED_FOR_USER); .isEqualTo(BasePreferenceController.DISABLED_FOR_USER);
@@ -95,13 +95,13 @@ public class DataManagementPreferenceControllerTest {
@Test @Test
public void public void
getAvailabilityStatus_isAdmiUser_backupEnabled_nullManageIntent_shouldBeDisabledUnsupported() { getAvailabilityStatus_isAdminUser_backupEnabled_nullManageIntent_shouldBeDisabledUnsupported() {
ShadowPrivacySettingsUtils.setIsAdminUser(true); ShadowPrivacySettingsUtils.setIsAdminUser(true);
mPSCD.setBackupEnabled(true); mPSCD.setBackupEnabled(true);
mPSCD.setBackupGray(false); mPSCD.setBackupGray(false);
mPSCD.setManageIntent(null); mPSCD.setManageIntent(null);
mPSCD.setManageLabel(mTitle); mPSCD.setManageLabel(mTitle);
mController.setPrivacySettingsConfigData(mPSCD);
assertThat(mController.getAvailabilityStatus()) assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.DISABLED_UNSUPPORTED); .isEqualTo(BasePreferenceController.DISABLED_UNSUPPORTED);
} }