From b47cccf6a04827b9138529faa47cb78d2bc66b66 Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Mon, 26 Aug 2019 20:07:08 +0800 Subject: [PATCH] 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 --- res/xml/device_admin_settings.xml | 9 ++++++++- .../DeviceAdminListPreferenceController.java | 18 +++++------------- .../deviceadmin/DeviceAdminSettings.java | 7 ------- ...eviceAdminListPreferenceControllerTest.java | 17 +++-------------- 4 files changed, 16 insertions(+), 35 deletions(-) diff --git a/res/xml/device_admin_settings.xml b/res/xml/device_admin_settings.xml index 09e072485d6..1837251455d 100644 --- a/res/xml/device_admin_settings.xml +++ b/res/xml/device_admin_settings.xml @@ -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"> + + + \ No newline at end of file diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java index 7b139d9770a..73acc12f5aa 100644 --- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java +++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java @@ -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 preferenceCache = new ArrayMap<>(); final Context prefContext = mPreferenceGroup.getContext(); diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java index 7cbd8c72aaa..66e3996247a 100644 --- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java +++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java @@ -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; diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceControllerTest.java index 18b4f18d002..3b20dd4b527 100644 --- a/tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceControllerTest.java @@ -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