diff --git a/res/xml/add_account_settings.xml b/res/xml/add_account_settings.xml index 2ea3326002a..1bc9149996e 100644 --- a/res/xml/add_account_settings.xml +++ b/res/xml/add_account_settings.xml @@ -19,4 +19,11 @@ xmlns:settings="http://schemas.android.com/apk/res-auto" android:key="add_account_screen" android:title="@string/header_add_an_account" - settings:controller="com.android.settings.accounts.ChooseAccountPreferenceController"/> + settings:controller="com.android.settings.accounts.ChooseAccountPreferenceController"> + + + diff --git a/src/com/android/settings/accounts/ChooseAccountFragment.java b/src/com/android/settings/accounts/ChooseAccountFragment.java index 448da6b67d2..8f3318e3868 100644 --- a/src/com/android/settings/accounts/ChooseAccountFragment.java +++ b/src/com/android/settings/accounts/ChooseAccountFragment.java @@ -24,10 +24,6 @@ import android.os.UserManager; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; -import com.android.settingslib.core.AbstractPreferenceController; - -import java.util.ArrayList; -import java.util.List; /** * Activity asking a user to select an account to be set up. @@ -55,8 +51,6 @@ public class ChooseAccountFragment extends DashboardFragment { use(ChooseAccountPreferenceController.class).initialize(authorities, accountTypesFilter, userHandle, getActivity()); - use(EnterpriseDisclosurePreferenceController.class).setFooterPreferenceMixin( - mFooterPreferenceMixin); } @Override @@ -68,15 +62,4 @@ public class ChooseAccountFragment extends DashboardFragment { protected String getLogTag() { return TAG; } - - @Override - protected List createPreferenceControllers(Context context) { - return buildControllers(context); - } - - private static List buildControllers(Context context) { - final List controllers = new ArrayList<>(); - controllers.add(new EnterpriseDisclosurePreferenceController(context)); - return controllers; - } } diff --git a/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceController.java b/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceController.java index 7a6e5fa2532..b4dbf3d2c8a 100644 --- a/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceController.java +++ b/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceController.java @@ -19,32 +19,23 @@ package com.android.settings.accounts; import android.content.Context; import androidx.annotation.VisibleForTesting; -import androidx.preference.PreferenceScreen; +import androidx.preference.Preference; import com.android.settings.core.BasePreferenceController; import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.widget.FooterPreference; -import com.android.settingslib.widget.FooterPreferenceMixinCompat; public class EnterpriseDisclosurePreferenceController extends BasePreferenceController { private final EnterprisePrivacyFeatureProvider mFeatureProvider; - private FooterPreferenceMixinCompat mFooterPreferenceMixin; - private PreferenceScreen mScreen; - public EnterpriseDisclosurePreferenceController(Context context) { + public EnterpriseDisclosurePreferenceController(Context context, String key) { // Preference key doesn't matter as we are creating the preference in code. - super(context, "add_account_enterprise_disclosure_footer"); - + super(context, key); mFeatureProvider = FeatureFactory.getFactory(mContext) .getEnterprisePrivacyFeatureProvider(mContext); } - public void setFooterPreferenceMixin(FooterPreferenceMixinCompat footerPreferenceMixin) { - mFooterPreferenceMixin = footerPreferenceMixin; - } - @Override public int getAvailabilityStatus() { if (getDisclosure() == null) { @@ -53,27 +44,17 @@ public class EnterpriseDisclosurePreferenceController extends BasePreferenceCont return AVAILABLE; } - @Override - public void displayPreference(PreferenceScreen screen) { - super.displayPreference(screen); - mScreen = screen; - addEnterpriseDisclosure(); - } - @VisibleForTesting CharSequence getDisclosure() { return mFeatureProvider.getDeviceOwnerDisclosure(); } - private void addEnterpriseDisclosure() { + @Override + public void updateState(Preference preference) { final CharSequence disclosure = getDisclosure(); if (disclosure == null) { return; } - final FooterPreference enterpriseDisclosurePreference = - mFooterPreferenceMixin.createFooterPreference(); - enterpriseDisclosurePreference.setSelectable(false); - enterpriseDisclosurePreference.setTitle(disclosure); - mScreen.addPreference(enterpriseDisclosurePreference); + preference.setTitle(disclosure); } } diff --git a/tests/robotests/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceControllerTest.java index b9c62c2ed7b..b10a7292b5f 100644 --- a/tests/robotests/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceControllerTest.java @@ -18,46 +18,37 @@ package com.android.settings.accounts; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import android.content.Context; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceScreen; +import androidx.preference.Preference; import com.android.settings.core.BasePreferenceController; -import com.android.settingslib.widget.FooterPreferenceMixinCompat; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class EnterpriseDisclosurePreferenceControllerTest { - private static final String TEST_DISCLOSURE = "This is a test disclosure."; - private ChooseAccountFragment mFragment; private Context mContext; private EnterpriseDisclosurePreferenceController mController; - private FooterPreferenceMixinCompat mFooterPreferenceMixin; - private PreferenceManager mPreferenceManager; - private PreferenceScreen mPreferenceScreen; + private Preference mPreference; @Before public void setUp() { - MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; - mController = spy(new EnterpriseDisclosurePreferenceController(mContext)); - mFragment = spy(new ChooseAccountFragment()); - mFooterPreferenceMixin = new FooterPreferenceMixinCompat(mFragment, - mFragment.getSettingsLifecycle()); - mPreferenceManager = new PreferenceManager(mContext); - mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext); + mController = spy(new EnterpriseDisclosurePreferenceController(mContext, "my_key")); + mPreference = spy(new Preference(mContext)); } @Test @@ -77,24 +68,20 @@ public class EnterpriseDisclosurePreferenceControllerTest { } @Test - public void displayPreference_hasDisclosure_shouldSetTitle() { + public void updateState_hasDisclosure_shouldSetTitle() { doReturn(TEST_DISCLOSURE).when(mController).getDisclosure(); - doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen(); - doReturn(mPreferenceManager).when(mFragment).getPreferenceManager(); - mController.setFooterPreferenceMixin(mFooterPreferenceMixin); - mController.displayPreference(mPreferenceScreen); + mController.updateState(mPreference); - assertThat(mPreferenceScreen.getPreferenceCount()).isEqualTo(1); - assertThat(mPreferenceScreen.getPreference(0).getTitle()).isEqualTo(TEST_DISCLOSURE); + assertThat(mPreference.getTitle()).isEqualTo(TEST_DISCLOSURE); } @Test - public void displayPreference_noDisclosure_shouldBeInvisible() { + public void updateState_noDisclosure_shouldBeInvisible() { doReturn(null).when(mController).getDisclosure(); - mController.displayPreference(mPreferenceScreen); + mController.updateState(mPreference); - assertThat(mPreferenceScreen.getPreferenceCount()).isEqualTo(0); + verify(mPreference, never()).setTitle(any()); } }