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
This commit is contained in:
Sunny Shao
2019-08-26 20:07:08 +08:00
parent 286c3948dd
commit b47cccf6a0
4 changed files with 16 additions and 35 deletions

View File

@@ -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" />
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>

View File

@@ -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();

View File

@@ -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;

View File

@@ -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