diff --git a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java index 51225aa3fb1..249947839b7 100644 --- a/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java +++ b/src/com/android/settings/applications/AppAndNotificationDashboardFragment.java @@ -23,6 +23,7 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.PreferenceController; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.notification.EmergencyBroadcastPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; import java.util.ArrayList; @@ -61,6 +62,8 @@ public class AppAndNotificationDashboardFragment extends DashboardFragment { private static List buildPreferenceControllers(Context context) { final List controllers = new ArrayList<>(); + controllers.add(new EmergencyBroadcastPreferenceController(context, + "app_and_notif_cell_broadcast_settings")); controllers.add(new SpecialAppAccessPreferenceController(context)); return controllers; } diff --git a/src/com/android/settings/notification/EmergencyBroadcastPreferenceController.java b/src/com/android/settings/notification/EmergencyBroadcastPreferenceController.java index 8f26ed82470..39250c68475 100644 --- a/src/com/android/settings/notification/EmergencyBroadcastPreferenceController.java +++ b/src/com/android/settings/notification/EmergencyBroadcastPreferenceController.java @@ -20,9 +20,9 @@ import android.content.Context; import android.content.pm.PackageManager; import android.os.UserHandle; import android.os.UserManager; +import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; -import com.android.internal.annotations.VisibleForTesting; import com.android.settings.accounts.AccountRestrictionHelper; import com.android.settings.core.PreferenceController; import com.android.settingslib.RestrictedPreference; @@ -33,20 +33,22 @@ import com.android.settingslib.RestrictedPreference; */ public class EmergencyBroadcastPreferenceController extends PreferenceController { - private static final String KEY_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings"; + private final String mPrefKey; private AccountRestrictionHelper mHelper; private UserManager mUserManager; private PackageManager mPm; private boolean mCellBroadcastAppLinkEnabled; - public EmergencyBroadcastPreferenceController(Context context) { - this(context, new AccountRestrictionHelper(context)); + public EmergencyBroadcastPreferenceController(Context context, String prefKey) { + this(context, new AccountRestrictionHelper(context), prefKey); } - @VisibleForTesting - EmergencyBroadcastPreferenceController(Context context, AccountRestrictionHelper helper) { + @VisibleForTesting(otherwise = VisibleForTesting.NONE) + EmergencyBroadcastPreferenceController(Context context, AccountRestrictionHelper helper, + String prefKey) { super(context); + mPrefKey = prefKey; mHelper = helper; mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mPm = mContext.getPackageManager(); @@ -60,7 +62,7 @@ public class EmergencyBroadcastPreferenceController extends PreferenceController return; } ((RestrictedPreference) preference).checkRestrictionAndSetDisabled( - UserManager.DISALLOW_CONFIG_CELL_BROADCASTS); + UserManager.DISALLOW_CONFIG_CELL_BROADCASTS); } @Override @@ -70,23 +72,23 @@ public class EmergencyBroadcastPreferenceController extends PreferenceController @Override public String getPreferenceKey() { - return KEY_CELL_BROADCAST_SETTINGS; + return mPrefKey; } @Override public boolean isAvailable() { return mUserManager.isAdminUser() && mCellBroadcastAppLinkEnabled - && !mHelper.hasBaseUserRestriction( + && !mHelper.hasBaseUserRestriction( UserManager.DISALLOW_CONFIG_CELL_BROADCASTS, UserHandle.myUserId()); } private boolean isCellBroadcastAppLinkEnabled() { boolean enabled = mContext.getResources().getBoolean( - com.android.internal.R.bool.config_cellBroadcastAppLinks); + com.android.internal.R.bool.config_cellBroadcastAppLinks); if (enabled) { try { if (mPm.getApplicationEnabledSetting("com.android.cellbroadcastreceiver") - == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { enabled = false; // CMAS app disabled } } catch (IllegalArgumentException ignored) { diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java index 0e309406104..a92c5dd7d65 100644 --- a/src/com/android/settings/notification/SoundSettings.java +++ b/src/com/android/settings/notification/SoundSettings.java @@ -186,7 +186,8 @@ public class SoundSettings extends DashboardFragment { Lifecycle lifecycle) { final List controllers = new ArrayList<>(); controllers.add(new ZenModePreferenceController(context)); - controllers.add(new EmergencyBroadcastPreferenceController(context)); + controllers.add(new EmergencyBroadcastPreferenceController( + context, "cell_broadcast_settings")); controllers.add(new VibrateWhenRingPreferenceController(context)); // === Volumes === diff --git a/tests/robotests/src/com/android/settings/notification/EmergencyBroadcastPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/EmergencyBroadcastPreferenceControllerTest.java index 98951d1f5eb..392bd2c4e5d 100644 --- a/tests/robotests/src/com/android/settings/notification/EmergencyBroadcastPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/EmergencyBroadcastPreferenceControllerTest.java @@ -44,6 +44,8 @@ import static org.mockito.Mockito.when; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class EmergencyBroadcastPreferenceControllerTest { + private static final String PREF_TEST_KEY = "test_key"; + @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @Mock @@ -62,7 +64,8 @@ public class EmergencyBroadcastPreferenceControllerTest { MockitoAnnotations.initMocks(this); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); when(mContext.getPackageManager()).thenReturn(mPackageManager); - mController = new EmergencyBroadcastPreferenceController(mContext, mAccountHelper); + mController = new EmergencyBroadcastPreferenceController(mContext, mAccountHelper, + PREF_TEST_KEY); } @Test @@ -72,13 +75,18 @@ public class EmergencyBroadcastPreferenceControllerTest { verify(mPreference).checkRestrictionAndSetDisabled(anyString()); } + @Test + public void getPreferenceKey_shouldReturnKeyDefinedInConstructor() { + assertThat(mController.getPreferenceKey()).isEqualTo(PREF_TEST_KEY); + } + @Test public void isAvailable_notAdminUser_shouldReturnFalse() { when(mUserManager.isAdminUser()).thenReturn(false); when(mContext.getResources().getBoolean( - com.android.internal.R.bool.config_cellBroadcastAppLinks)).thenReturn(true); + com.android.internal.R.bool.config_cellBroadcastAppLinks)).thenReturn(true); when(mPackageManager.getApplicationEnabledSetting(anyString())) - .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); + .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); when(mAccountHelper.hasBaseUserRestriction(anyString(), anyInt())).thenReturn(false); assertThat(mController.isAvailable()).isFalse(); @@ -88,11 +96,11 @@ public class EmergencyBroadcastPreferenceControllerTest { public void isAvailable_hasConfigCellBroadcastRestriction_shouldReturnFalse() { when(mUserManager.isAdminUser()).thenReturn(true); when(mContext.getResources().getBoolean( - com.android.internal.R.bool.config_cellBroadcastAppLinks)).thenReturn(true); + com.android.internal.R.bool.config_cellBroadcastAppLinks)).thenReturn(true); when(mPackageManager.getApplicationEnabledSetting(anyString())) - .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); + .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); when(mAccountHelper.hasBaseUserRestriction( - eq(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS), anyInt())).thenReturn(true); + eq(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS), anyInt())).thenReturn(true); assertThat(mController.isAvailable()).isFalse(); } @@ -101,9 +109,9 @@ public class EmergencyBroadcastPreferenceControllerTest { public void isAvailable_cellBroadcastAppLinkDisabled_shouldReturnFalse() { when(mUserManager.isAdminUser()).thenReturn(true); when(mContext.getResources().getBoolean( - com.android.internal.R.bool.config_cellBroadcastAppLinks)).thenReturn(false); + com.android.internal.R.bool.config_cellBroadcastAppLinks)).thenReturn(false); when(mPackageManager.getApplicationEnabledSetting(anyString())) - .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); + .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); when(mAccountHelper.hasBaseUserRestriction(anyString(), anyInt())).thenReturn(false); assertThat(mController.isAvailable()).isFalse(); @@ -113,9 +121,9 @@ public class EmergencyBroadcastPreferenceControllerTest { public void isAvailable_cellBroadcastReceiverDisabled_shouldReturnFalse() { when(mUserManager.isAdminUser()).thenReturn(true); when(mContext.getResources().getBoolean( - com.android.internal.R.bool.config_cellBroadcastAppLinks)).thenReturn(true); + com.android.internal.R.bool.config_cellBroadcastAppLinks)).thenReturn(true); when(mPackageManager.getApplicationEnabledSetting(anyString())) - .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED); + .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_DISABLED); when(mAccountHelper.hasBaseUserRestriction(anyString(), anyInt())).thenReturn(false); assertThat(mController.isAvailable()).isFalse();