diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9d106f4b0a5..5e7f9800de1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -10715,6 +10715,8 @@
Account
+
+ %d accounts
Device name
diff --git a/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java b/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java
index 9daa43d0a70..13aac5c73d6 100644
--- a/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BrandedAccountPreferenceController.java
@@ -19,14 +19,13 @@ package com.android.settings.deviceinfo;
import android.accounts.Account;
import android.app.settings.SettingsEnums;
import android.content.Context;
-import android.os.Bundle;
import android.text.TextUtils;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
-import com.android.settings.accounts.AccountDetailDashboardFragment;
+import com.android.settings.accounts.AccountDashboardFragment;
import com.android.settings.accounts.AccountFeatureProvider;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher;
@@ -63,7 +62,11 @@ public class BrandedAccountPreferenceController extends BasePreferenceController
return;
}
- accountPreference.setSummary(mAccounts[0].name);
+ if (mAccounts.length == 1) {
+ accountPreference.setSummary(mAccounts[0].name);
+ } else {
+ accountPreference.setSummary(getAccountSummary(mAccounts.length));
+ }
}
@Override
@@ -72,18 +75,9 @@ public class BrandedAccountPreferenceController extends BasePreferenceController
return false;
}
- final Bundle args = new Bundle();
- args.putParcelable(AccountDetailDashboardFragment.KEY_ACCOUNT,
- mAccounts[0]);
- args.putParcelable(AccountDetailDashboardFragment.KEY_USER_HANDLE,
- android.os.Process.myUserHandle());
- args.putString(AccountDetailDashboardFragment.KEY_ACCOUNT_TYPE,
- mAccountFeatureProvider.getAccountType());
-
new SubSettingLauncher(mContext)
- .setDestination(AccountDetailDashboardFragment.class.getName())
- .setTitleRes(R.string.account_sync_title)
- .setArguments(args)
+ .setDestination(AccountDashboardFragment.class.getName())
+ .setTitleRes(R.string.account_dashboard_title)
.setSourceMetricsCategory(SettingsEnums.DEVICEINFO)
.launch();
return true;
@@ -97,4 +91,9 @@ public class BrandedAccountPreferenceController extends BasePreferenceController
preference.setVisible(false);
}
}
+
+ private String getAccountSummary(int accountNo) {
+ return mContext.getResources()
+ .getString(R.string.my_device_info_account_preference_summary, accountNo);
+ }
}
diff --git a/tests/unit/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java
index 6e78d05a5a2..0c57400e411 100644
--- a/tests/unit/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/BrandedAccountPreferenceControllerTest.java
@@ -17,7 +17,6 @@
package com.android.settings.deviceinfo;
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -26,6 +25,9 @@ import android.accounts.Account;
import android.content.Context;
import android.content.res.Resources;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -46,17 +48,21 @@ public class BrandedAccountPreferenceControllerTest {
private Context mContext;
private FakeFeatureFactory mFakeFeatureFactory;
+ private PreferenceScreen mScreen;
+ private Preference mPreference;
+
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext());
- when(mContext.getResources()).thenReturn(mResources);
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
-
+ mScreen = new PreferenceManager(mContext).createPreferenceScreen(mContext);
+ mPreference = new Preference(mContext);
}
@Test
public void isAvailable_configOn_noAccount_off() {
+ when(mContext.getResources()).thenReturn(mResources);
final int boolId = ResourcesUtils.getResourcesId(
ApplicationProvider.getApplicationContext(), "bool",
"config_show_branded_account_in_device_info");
@@ -69,6 +75,7 @@ public class BrandedAccountPreferenceControllerTest {
@Test
public void isAvailable_accountIsAvailable_on() {
+ when(mContext.getResources()).thenReturn(mResources);
final int boolId = ResourcesUtils.getResourcesId(
ApplicationProvider.getApplicationContext(), "bool",
"config_show_branded_account_in_device_info");
@@ -84,6 +91,7 @@ public class BrandedAccountPreferenceControllerTest {
@Test
public void isAvailable_configOff_hasAccount_off() {
+ when(mContext.getResources()).thenReturn(mResources);
final int boolId = ResourcesUtils.getResourcesId(
ApplicationProvider.getApplicationContext(), "bool",
"config_show_branded_account_in_device_info");
@@ -96,4 +104,42 @@ public class BrandedAccountPreferenceControllerTest {
assertThat(controller.isAvailable()).isFalse();
}
+
+ /**
+ * Test displayPreference has one account.
+ */
+ @Test
+ public void displayPreference_hasOneAccount_showAccount() {
+ when(mFakeFeatureFactory.mAccountFeatureProvider.getAccounts(any(Context.class)))
+ .thenReturn(new Account[]{new Account("teresaikeda@gmail.com",
+ "com.google")});
+
+ mPreference.setKey("test_key");
+ mScreen.addPreference(mPreference);
+ final BrandedAccountPreferenceController controller =
+ new BrandedAccountPreferenceController(mContext, "test_key");
+
+ controller.displayPreference(mScreen);
+
+ assertThat(mPreference.getSummary()).isEqualTo("teresaikeda@gmail.com");
+ }
+
+ /**
+ * Test displayPreference has two accounts.
+ */
+ @Test
+ public void displayPreference_hasTwoAccounts_showTwoAccountSummary() {
+ when(mFakeFeatureFactory.mAccountFeatureProvider.getAccounts(any(Context.class)))
+ .thenReturn(new Account[]{new Account("teresa@gmail.com", "com.google"),
+ new Account("reno@gmail.com", "com.google") });
+
+ mPreference.setKey("test_key");
+ mScreen.addPreference(mPreference);
+ final BrandedAccountPreferenceController controller =
+ new BrandedAccountPreferenceController(mContext, "test_key");
+
+ controller.displayPreference(mScreen);
+
+ assertThat(mPreference.getSummary()).isEqualTo("2 accounts");
+ }
}