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

Commit b47cccf6 authored by Sunny Shao's avatar Sunny Shao
Browse files

Use FooterPreference in xml explicitly

Removed the FooterPreferenceMixin from the DeviceAdminSettings page.

Fixes: 140015273
Test: manual test
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.applications
Change-Id: I91c10946ae35f9a5cde30399e231dbc8a1481b23
parent 286c3948
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -20,4 +20,11 @@
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:title="@string/manage_device_admin"
    android:key="device_admin_settings"
    settings:controller="com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminListPreferenceController" />
 No newline at end of file
    settings:controller="com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminListPreferenceController">

    <com.android.settingslib.widget.FooterPreference
        android:key="device_admin_footer"
        android:title="@string/no_device_admins"
        android:selectable="false"
        settings:searchable="false"/>
</PreferenceScreen>
 No newline at end of file
+5 −13
Original line number Diff line number Diff line
@@ -45,13 +45,11 @@ import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.FooterPreferenceMixinCompat;

import org.xmlpull.v1.XmlPullParserException;

@@ -67,6 +65,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle

    private static final IntentFilter FILTER = new IntentFilter();
    private static final String TAG = "DeviceAdminListPrefCtrl";
    private static final String KEY_DEVICE_ADMIN_FOOTER = "device_admin_footer";

    private final DevicePolicyManager mDPM;
    private final UserManager mUm;
@@ -91,7 +90,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
    };

    private PreferenceGroup mPreferenceGroup;
    private FooterPreferenceMixinCompat mFooterPreferenceMixin;
    private FooterPreference mFooterPreference;

    static {
        FILTER.addAction(ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
@@ -105,12 +104,6 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
        mIPackageManager = AppGlobals.getPackageManager();
    }

    public DeviceAdminListPreferenceController setFooterPreferenceMixin(
            FooterPreferenceMixinCompat mixin) {
        mFooterPreferenceMixin = mixin;
        return this;
    }

    @Override
    public int getAvailabilityStatus() {
        return AVAILABLE;
@@ -120,6 +113,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPreferenceGroup = screen.findPreference(getPreferenceKey());
        mFooterPreference = mPreferenceGroup.findPreference(KEY_DEVICE_ADMIN_FOOTER);
    }

    @Override
@@ -167,10 +161,8 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
        if (mPreferenceGroup == null) {
            return;
        }
        if (mFooterPreferenceMixin != null) {
            final FooterPreference footer = mFooterPreferenceMixin.createFooterPreference();
            footer.setTitle(R.string.no_device_admins);
            footer.setVisible(mAdmins.isEmpty());
        if (mFooterPreference != null) {
            mFooterPreference.setVisible(mAdmins.isEmpty());
        }
        final Map<String, SwitchPreference> preferenceCache = new ArrayMap<>();
        final Context prefContext = mPreferenceGroup.getContext();
+0 −7
Original line number Diff line number Diff line
@@ -37,13 +37,6 @@ public class DeviceAdminSettings extends DashboardFragment {
        return SettingsEnums.DEVICE_ADMIN_SETTINGS;
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        use(DeviceAdminListPreferenceController.class).setFooterPreferenceMixin(
                mFooterPreferenceMixin);
    }

    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.device_admin_settings;
+3 −14
Original line number Diff line number Diff line
@@ -33,37 +33,26 @@ import android.os.UserHandle;
import androidx.lifecycle.LifecycleOwner;

import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.FooterPreferenceMixinCompat;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;

@RunWith(RobolectricTestRunner.class)
public class DeviceAdminListPreferenceControllerTest {

    @Mock
    private FooterPreferenceMixinCompat mFooterPreferenceMixin;
    private Context mContext;
    private DeviceAdminListPreferenceController mController;
    private LifecycleOwner mLifecycleOwner;
    private Lifecycle mLifecycle;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);

        mLifecycleOwner = () -> mLifecycle;
        mLifecycle = new Lifecycle(mLifecycleOwner);
        final LifecycleOwner lifecycleOwner = () -> mLifecycle;
        mLifecycle = new Lifecycle(lifecycleOwner);

        mController = spy(new DeviceAdminListPreferenceController(mContext, "test_key")
                .setFooterPreferenceMixin(mFooterPreferenceMixin));
        mLifecycle.addObserver(mController);
        mLifecycle.addObserver(new DeviceAdminListPreferenceController(mContext, "test_key"));
    }

    @Test