Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f5b13f9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix crash when there is no emergencybroadcast app on device" into oc-dev

parents 869d2460 0335cd1e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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<PreferenceController> buildPreferenceControllers(Context context) {
        final List<PreferenceController> controllers = new ArrayList<>();
        controllers.add(new EmergencyBroadcastPreferenceController(context,
                "app_and_notif_cell_broadcast_settings"));
        controllers.add(new SpecialAppAccessPreferenceController(context));
        return controllers;
    }
+13 −11
Original line number Diff line number Diff line
@@ -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();
@@ -70,7 +72,7 @@ public class EmergencyBroadcastPreferenceController extends PreferenceController

    @Override
    public String getPreferenceKey() {
        return KEY_CELL_BROADCAST_SETTINGS;
        return mPrefKey;
    }

    @Override
+2 −1
Original line number Diff line number Diff line
@@ -186,7 +186,8 @@ public class SoundSettings extends DashboardFragment {
            Lifecycle lifecycle) {
        final List<PreferenceController> 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 ===
+18 −10
Original line number Diff line number Diff line
@@ -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,6 +75,11 @@ 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);