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

Commit 77954812 authored by Fan Zhang's avatar Fan Zhang Committed by android-build-merger
Browse files

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

am: 4f5b13f9

Change-Id: I7166624e96ed82f523545f390457661dfb7c3d42
parents 6b06aa10 4f5b13f9
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);