Merge "The new About > Account behavior" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
f9607c2b43
@@ -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>
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user