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

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

Merge "Use FooterPreference in xml explicitly"

parents 2e010612 b47cccf6
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