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" xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/manage_device_admin" android:title="@string/manage_device_admin"
android:key="device_admin_settings" 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.PreferenceScreen;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.FooterPreferenceMixinCompat;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
@@ -67,6 +65,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
private static final IntentFilter FILTER = new IntentFilter(); private static final IntentFilter FILTER = new IntentFilter();
private static final String TAG = "DeviceAdminListPrefCtrl"; private static final String TAG = "DeviceAdminListPrefCtrl";
private static final String KEY_DEVICE_ADMIN_FOOTER = "device_admin_footer";
private final DevicePolicyManager mDPM; private final DevicePolicyManager mDPM;
private final UserManager mUm; private final UserManager mUm;
@@ -91,7 +90,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
}; };
private PreferenceGroup mPreferenceGroup; private PreferenceGroup mPreferenceGroup;
private FooterPreferenceMixinCompat mFooterPreferenceMixin; private FooterPreference mFooterPreference;
static { static {
FILTER.addAction(ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED); FILTER.addAction(ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
@@ -105,12 +104,6 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
mIPackageManager = AppGlobals.getPackageManager(); mIPackageManager = AppGlobals.getPackageManager();
} }
public DeviceAdminListPreferenceController setFooterPreferenceMixin(
FooterPreferenceMixinCompat mixin) {
mFooterPreferenceMixin = mixin;
return this;
}
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
@@ -120,6 +113,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
mPreferenceGroup = screen.findPreference(getPreferenceKey()); mPreferenceGroup = screen.findPreference(getPreferenceKey());
mFooterPreference = mPreferenceGroup.findPreference(KEY_DEVICE_ADMIN_FOOTER);
} }
@Override @Override
@@ -167,10 +161,8 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
if (mPreferenceGroup == null) { if (mPreferenceGroup == null) {
return; return;
} }
if (mFooterPreferenceMixin != null) { if (mFooterPreference != null) {
final FooterPreference footer = mFooterPreferenceMixin.createFooterPreference(); mFooterPreference.setVisible(mAdmins.isEmpty());
footer.setTitle(R.string.no_device_admins);
footer.setVisible(mAdmins.isEmpty());
} }
final Map<String, SwitchPreference> preferenceCache = new ArrayMap<>(); final Map<String, SwitchPreference> preferenceCache = new ArrayMap<>();
final Context prefContext = mPreferenceGroup.getContext(); final Context prefContext = mPreferenceGroup.getContext();

View File

@@ -37,13 +37,6 @@ public class DeviceAdminSettings extends DashboardFragment {
return SettingsEnums.DEVICE_ADMIN_SETTINGS; return SettingsEnums.DEVICE_ADMIN_SETTINGS;
} }
@Override
public void onAttach(Context context) {
super.onAttach(context);
use(DeviceAdminListPreferenceController.class).setFooterPreferenceMixin(
mFooterPreferenceMixin);
}
@Override @Override
protected int getPreferenceScreenResId() { protected int getPreferenceScreenResId() {
return R.xml.device_admin_settings; return R.xml.device_admin_settings;

View File

@@ -33,37 +33,26 @@ import android.os.UserHandle;
import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleOwner;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.FooterPreferenceMixinCompat;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class DeviceAdminListPreferenceControllerTest { public class DeviceAdminListPreferenceControllerTest {
@Mock
private FooterPreferenceMixinCompat mFooterPreferenceMixin;
private Context mContext; private Context mContext;
private DeviceAdminListPreferenceController mController;
private LifecycleOwner mLifecycleOwner;
private Lifecycle mLifecycle; private Lifecycle mLifecycle;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
mLifecycleOwner = () -> mLifecycle; final LifecycleOwner lifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner); mLifecycle = new Lifecycle(lifecycleOwner);
mController = spy(new DeviceAdminListPreferenceController(mContext, "test_key") mLifecycle.addObserver(new DeviceAdminListPreferenceController(mContext, "test_key"));
.setFooterPreferenceMixin(mFooterPreferenceMixin));
mLifecycle.addObserver(mController);
} }
@Test @Test