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