diff --git a/res/values/strings.xml b/res/values/strings.xml
index f29ed2f0b4d..69152ddc90a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7239,7 +7239,7 @@
dont don\u2019t disturb, interrupt, interruption, break
RAM
nearby, location, history, reporting, GPS
- account, add an account, work profile
+ account, add an account, work profile, add account
restriction, restrict, restricted
text correction, correct, sound, vibrate, auto, language, gesture, suggest, suggestion, theme, offensive, word, type, emoji, international
reset, preferences, default
diff --git a/src/com/android/settings/accounts/AccountDashboardFragment.java b/src/com/android/settings/accounts/AccountDashboardFragment.java
index 46c08ab3d2c..bee90714f70 100644
--- a/src/com/android/settings/accounts/AccountDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountDashboardFragment.java
@@ -30,6 +30,7 @@ import com.android.settings.users.AutoSyncPersonalDataPreferenceController;
import com.android.settings.users.AutoSyncWorkDataPreferenceController;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.search.SearchIndexableRaw;
import java.util.ArrayList;
import java.util.List;
@@ -92,5 +93,11 @@ public class AccountDashboardFragment extends DashboardFragment {
return buildPreferenceControllers(
context, null /* parent */, null /* authorities*/);
}
+
+ @Override
+ public List getDynamicRawDataToIndex(Context context,
+ boolean enabled) {
+ return null;
+ }
};
-}
\ No newline at end of file
+}
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index 6e1727b004d..36a7012cad0 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -80,6 +80,9 @@ public class AccountPreferenceController extends AbstractPreferenceController
private static final int ORDER_NEXT_TO_LAST = 1001;
private static final int ORDER_NEXT_TO_NEXT_TO_LAST = 1000;
+ private static final String PREF_KEY_REMOVE_PROFILE = "remove_profile";
+ private static final String PREF_KEY_WORK_PROFILE_SETTING = "work_profile_setting";
+
private UserManager mUm;
private SparseArray mProfiles = new SparseArray();
private ManagedProfileBroadcastReceiver mManagedProfileBroadcastReceiver =
@@ -170,7 +173,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
}
@Override
- public void updateRawDataToIndex(List rawData) {
+ public void updateDynamicRawDataToIndex(List rawData) {
if (!isAvailable()) {
return;
}
@@ -178,29 +181,21 @@ public class AccountPreferenceController extends AbstractPreferenceController
final String screenTitle = res.getString(R.string.account_settings_title);
List profiles = mUm.getProfiles(UserHandle.myUserId());
- final int profilesCount = profiles.size();
- for (int i = 0; i < profilesCount; i++) {
- UserInfo userInfo = profiles.get(i);
- if (userInfo.isEnabled()) {
- if (!mHelper.hasBaseUserRestriction(DISALLOW_MODIFY_ACCOUNTS, userInfo.id)) {
- SearchIndexableRaw data = new SearchIndexableRaw(mContext);
- data.title = res.getString(R.string.add_account_label);
- data.screenTitle = screenTitle;
- rawData.add(data);
- }
- if (userInfo.isManagedProfile()) {
- if (!mHelper.hasBaseUserRestriction(DISALLOW_REMOVE_MANAGED_PROFILE,
- UserHandle.myUserId())) {
- SearchIndexableRaw data = new SearchIndexableRaw(mContext);
- data.title = res.getString(R.string.remove_managed_profile_label);
- data.screenTitle = screenTitle;
- rawData.add(data);
- }
- SearchIndexableRaw data = new SearchIndexableRaw(mContext);
- data.title = res.getString(R.string.managed_profile_settings_title);
+ for (final UserInfo userInfo : profiles) {
+ if (userInfo.isEnabled() && userInfo.isManagedProfile()) {
+ if (!mHelper.hasBaseUserRestriction(DISALLOW_REMOVE_MANAGED_PROFILE,
+ UserHandle.myUserId())) {
+ final SearchIndexableRaw data = new SearchIndexableRaw(mContext);
+ data.key = PREF_KEY_REMOVE_PROFILE;
+ data.title = res.getString(R.string.remove_managed_profile_label);
data.screenTitle = screenTitle;
rawData.add(data);
}
+ final SearchIndexableRaw data = new SearchIndexableRaw(mContext);
+ data.key = PREF_KEY_WORK_PROFILE_SETTING;
+ data.title = res.getString(R.string.managed_profile_settings_title);
+ data.screenTitle = screenTitle;
+ rawData.add(data);
}
}
}
@@ -375,6 +370,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
private RestrictedPreference newRemoveWorkProfilePreference() {
RestrictedPreference preference = new RestrictedPreference(
mParent.getPreferenceManager().getContext());
+ preference.setKey(PREF_KEY_REMOVE_PROFILE);
preference.setTitle(R.string.remove_managed_profile_label);
preference.setIcon(R.drawable.ic_delete);
preference.setOnPreferenceClickListener(this);
@@ -385,6 +381,7 @@ public class AccountPreferenceController extends AbstractPreferenceController
private Preference newManagedProfileSettings() {
Preference preference = new Preference(mParent.getPreferenceManager().getContext());
+ preference.setKey(PREF_KEY_WORK_PROFILE_SETTING);
preference.setTitle(R.string.managed_profile_settings_title);
preference.setIcon(R.drawable.ic_settings_24dp);
preference.setOnPreferenceClickListener(this);
diff --git a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
index bf64190e036..d4a855fd445 100644
--- a/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accounts/AccountPreferenceControllerTest.java
@@ -274,33 +274,33 @@ public class AccountPreferenceControllerTest {
}
@Test
- public void updateRawDataToIndex_EnabledUser_shouldAddOne() {
+ public void updateDynamicRawDataToIndex_enabledUser_notManagedUser_shouldNotUpdate() {
final List data = new ArrayList<>();
final List infos = new ArrayList<>();
infos.add(new UserInfo(1, "user 1", 0));
when(mUserManager.isManagedProfile()).thenReturn(false);
when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
- mController.updateRawDataToIndex(data);
+ mController.updateDynamicRawDataToIndex(data);
- assertThat(data.size()).isEqualTo(1);
+ assertThat(data.size()).isEqualTo(0);
}
@Test
- public void updateRawDataToIndex_ManagedUser_shouldAddThree() {
+ public void updateDynamicRawDataToIndex_managedUser_shouldAddTwo() {
final List data = new ArrayList<>();
final List infos = new ArrayList<>();
infos.add(new UserInfo(1, "user 1", UserInfo.FLAG_MANAGED_PROFILE));
when(mUserManager.isManagedProfile()).thenReturn(false);
when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
- mController.updateRawDataToIndex(data);
+ mController.updateDynamicRawDataToIndex(data);
- assertThat(data.size()).isEqualTo(3);
+ assertThat(data.size()).isEqualTo(2);
}
@Test
- public void updateRawDataToIndex_DisallowRemove_shouldAddTwo() {
+ public void updateDynamicRawDataToIndex_disallowRemove_shouldAddOne() {
final List data = new ArrayList<>();
final List infos = new ArrayList<>();
infos.add(new UserInfo(1, "user 1", UserInfo.FLAG_MANAGED_PROFILE));
@@ -310,13 +310,13 @@ public class AccountPreferenceControllerTest {
eq(UserManager.DISALLOW_REMOVE_MANAGED_PROFILE), anyInt()))
.thenReturn(true);
- mController.updateRawDataToIndex(data);
+ mController.updateDynamicRawDataToIndex(data);
- assertThat(data.size()).isEqualTo(2);
+ assertThat(data.size()).isEqualTo(1);
}
@Test
- public void updateRawDataToIndex_DisallowModify_shouldAddTwo() {
+ public void updateDynamicRawDataToIndex_disallowModify_shouldAddTwo() {
final List data = new ArrayList<>();
final List infos = new ArrayList<>();
infos.add(new UserInfo(1, "user 1", UserInfo.FLAG_MANAGED_PROFILE));
@@ -325,7 +325,7 @@ public class AccountPreferenceControllerTest {
when(mAccountHelper.hasBaseUserRestriction(
eq(UserManager.DISALLOW_MODIFY_ACCOUNTS), anyInt())).thenReturn(true);
- mController.updateRawDataToIndex(data);
+ mController.updateDynamicRawDataToIndex(data);
assertThat(data.size()).isEqualTo(2);
}