The new About > Account behavior
- Change the display content of the summary while multiple accounts. - Goto the Passwords & accounts page when users click Account item. Fixes: 290593956 Test: atest BrandedAccountPreferenceControllerTest Change-Id: Iae32803076d86455f52f2ffd278e06995161adfe
This commit is contained in:
@@ -10704,6 +10704,8 @@
|
|||||||
|
|
||||||
<!-- Title for preference showing the primary account on the device [CHAR LIMIT=60]-->
|
<!-- Title for preference showing the primary account on the device [CHAR LIMIT=60]-->
|
||||||
<string name="my_device_info_account_preference_title">Account</string>
|
<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]-->
|
<!-- Title for preference showing the name of the device. [CHAR LIMIT=60]-->
|
||||||
<string name="my_device_info_device_name_preference_title">Device name</string>
|
<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.accounts.Account;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
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.accounts.AccountFeatureProvider;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
@@ -63,7 +62,11 @@ public class BrandedAccountPreferenceController extends BasePreferenceController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mAccounts.length == 1) {
|
||||||
accountPreference.setSummary(mAccounts[0].name);
|
accountPreference.setSummary(mAccounts[0].name);
|
||||||
|
} else {
|
||||||
|
accountPreference.setSummary(getAccountSummary(mAccounts.length));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -72,18 +75,9 @@ public class BrandedAccountPreferenceController extends BasePreferenceController
|
|||||||
return false;
|
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)
|
new SubSettingLauncher(mContext)
|
||||||
.setDestination(AccountDetailDashboardFragment.class.getName())
|
.setDestination(AccountDashboardFragment.class.getName())
|
||||||
.setTitleRes(R.string.account_sync_title)
|
.setTitleRes(R.string.account_dashboard_title)
|
||||||
.setArguments(args)
|
|
||||||
.setSourceMetricsCategory(SettingsEnums.DEVICEINFO)
|
.setSourceMetricsCategory(SettingsEnums.DEVICEINFO)
|
||||||
.launch();
|
.launch();
|
||||||
return true;
|
return true;
|
||||||
@@ -97,4 +91,9 @@ public class BrandedAccountPreferenceController extends BasePreferenceController
|
|||||||
preference.setVisible(false);
|
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;
|
package com.android.settings.deviceinfo;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -26,6 +25,9 @@ import android.accounts.Account;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
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.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
@@ -46,17 +48,21 @@ public class BrandedAccountPreferenceControllerTest {
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
private FakeFeatureFactory mFakeFeatureFactory;
|
private FakeFeatureFactory mFakeFeatureFactory;
|
||||||
|
|
||||||
|
private PreferenceScreen mScreen;
|
||||||
|
private Preference mPreference;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||||
when(mContext.getResources()).thenReturn(mResources);
|
|
||||||
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
mScreen = new PreferenceManager(mContext).createPreferenceScreen(mContext);
|
||||||
|
mPreference = new Preference(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAvailable_configOn_noAccount_off() {
|
public void isAvailable_configOn_noAccount_off() {
|
||||||
|
when(mContext.getResources()).thenReturn(mResources);
|
||||||
final int boolId = ResourcesUtils.getResourcesId(
|
final int boolId = ResourcesUtils.getResourcesId(
|
||||||
ApplicationProvider.getApplicationContext(), "bool",
|
ApplicationProvider.getApplicationContext(), "bool",
|
||||||
"config_show_branded_account_in_device_info");
|
"config_show_branded_account_in_device_info");
|
||||||
@@ -69,6 +75,7 @@ public class BrandedAccountPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAvailable_accountIsAvailable_on() {
|
public void isAvailable_accountIsAvailable_on() {
|
||||||
|
when(mContext.getResources()).thenReturn(mResources);
|
||||||
final int boolId = ResourcesUtils.getResourcesId(
|
final int boolId = ResourcesUtils.getResourcesId(
|
||||||
ApplicationProvider.getApplicationContext(), "bool",
|
ApplicationProvider.getApplicationContext(), "bool",
|
||||||
"config_show_branded_account_in_device_info");
|
"config_show_branded_account_in_device_info");
|
||||||
@@ -84,6 +91,7 @@ public class BrandedAccountPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAvailable_configOff_hasAccount_off() {
|
public void isAvailable_configOff_hasAccount_off() {
|
||||||
|
when(mContext.getResources()).thenReturn(mResources);
|
||||||
final int boolId = ResourcesUtils.getResourcesId(
|
final int boolId = ResourcesUtils.getResourcesId(
|
||||||
ApplicationProvider.getApplicationContext(), "bool",
|
ApplicationProvider.getApplicationContext(), "bool",
|
||||||
"config_show_branded_account_in_device_info");
|
"config_show_branded_account_in_device_info");
|
||||||
@@ -96,4 +104,42 @@ public class BrandedAccountPreferenceControllerTest {
|
|||||||
|
|
||||||
assertThat(controller.isAvailable()).isFalse();
|
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