Merge "The new About > Account behavior" into main

This commit is contained in:
Treehugger Robot
2023-09-08 00:42:33 +00:00
committed by Android (Google) Code Review
3 changed files with 64 additions and 17 deletions

View File

@@ -10715,6 +10715,8 @@
<!-- Title for preference showing the primary account on the device [CHAR LIMIT=60]-->
<string name="my_device_info_account_preference_title">Account</string>
<!-- Summary for preference showing the number of the accounts. [CHAR LIMIT=NONE]-->
<string name="my_device_info_account_preference_summary">%d accounts</string>
<!-- Title for preference showing the name of the device. [CHAR LIMIT=60]-->
<string name="my_device_info_device_name_preference_title">Device name</string>

View File

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

View File

@@ -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");
}
}