Merge "Display a list of account types as account setting summary"
This commit is contained in:
committed by
Android (Google) Code Review
commit
9024b4eb15
@@ -8318,9 +8318,6 @@
|
|||||||
<!-- Summary of memory screen [CHAR LIMIT=NONE] -->
|
<!-- Summary of memory screen [CHAR LIMIT=NONE] -->
|
||||||
<string name="memory_summary">Avg <xliff:g id="used_memory" example="1.7GB">%1$s</xliff:g> of <xliff:g id="total_memory" example="2GB">%2$s</xliff:g> memory used</string>
|
<string name="memory_summary">Avg <xliff:g id="used_memory" example="1.7GB">%1$s</xliff:g> of <xliff:g id="total_memory" example="2GB">%2$s</xliff:g> memory used</string>
|
||||||
|
|
||||||
<!-- Summary of Users & accounts setting screen [CHAR LIMIT=NONE] -->
|
|
||||||
<string name="users_and_accounts_summary">Current user: <xliff:g id="user_name" example="Jason">%1$s</xliff:g></string>
|
|
||||||
|
|
||||||
<!-- Summary of User settings [CHAR LIMIT=NONE] -->
|
<!-- Summary of User settings [CHAR LIMIT=NONE] -->
|
||||||
<string name="users_summary">Signed in as <xliff:g id="user_name" example="Jason">%1$s</xliff:g></string>
|
<string name="users_summary">Signed in as <xliff:g id="user_name" example="Jason">%1$s</xliff:g></string>
|
||||||
|
|
||||||
|
@@ -19,16 +19,16 @@ import static android.provider.Settings.EXTRA_AUTHORITIES;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.UserInfo;
|
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
|
import android.text.BidiFormatter;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
|
import com.android.settingslib.accounts.AuthenticatorHelper;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -84,10 +84,27 @@ public class AccountDashboardFragment extends DashboardFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void setListening(boolean listening) {
|
public void setListening(boolean listening) {
|
||||||
if (listening) {
|
if (listening) {
|
||||||
UserInfo info = mContext.getSystemService(UserManager.class).getUserInfo(
|
final AuthenticatorHelper authHelper = new AuthenticatorHelper(mContext,
|
||||||
UserHandle.myUserId());
|
UserHandle.of(UserHandle.myUserId()), null /* OnAccountsUpdateListener */);
|
||||||
mSummaryLoader.setSummary(this,
|
final String[] types = authHelper.getEnabledAccountTypes();
|
||||||
mContext.getString(R.string.users_and_accounts_summary, info.name));
|
|
||||||
|
final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
|
||||||
|
|
||||||
|
CharSequence summary = null;
|
||||||
|
|
||||||
|
// Show up to 3 account types
|
||||||
|
final int size = Math.min(3, types.length);
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
final CharSequence label = authHelper.getLabelForType(mContext, types[i]);
|
||||||
|
if (summary == null) {
|
||||||
|
summary = bidiFormatter.unicodeWrap(label);
|
||||||
|
} else {
|
||||||
|
summary = mContext.getString(R.string.join_many_items_middle, summary,
|
||||||
|
bidiFormatter.unicodeWrap(label));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mSummaryLoader.setSummary(this, summary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -15,42 +15,40 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.accounts;
|
package com.android.settings.accounts;
|
||||||
|
|
||||||
import android.app.Activity;
|
import static com.android.settings.accounts.AccountDashboardFragmentTest
|
||||||
import android.content.pm.UserInfo;
|
.ShadowAuthenticationHelper.LABELS;
|
||||||
import android.os.UserManager;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import android.provider.SearchIndexableResource;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.UserHandle;
|
||||||
|
import android.provider.SearchIndexableResource;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
|
import com.android.settingslib.accounts.AuthenticatorHelper;
|
||||||
import com.android.settingslib.drawer.CategoryKey;
|
import com.android.settingslib.drawer.CategoryKey;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.Robolectric;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.annotation.Implementation;
|
||||||
|
import org.robolectric.annotation.Implements;
|
||||||
import org.robolectric.shadows.ShadowApplication;
|
import org.robolectric.shadows.ShadowApplication;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
|
||||||
import static org.mockito.Matchers.anyInt;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class AccountDashboardFragmentTest {
|
public class AccountDashboardFragmentTest {
|
||||||
|
|
||||||
private static final String METADATA_CATEGORY = "com.android.settings.category";
|
|
||||||
private static final String METADATA_ACCOUNT_TYPE = "com.android.settings.ia.account";
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private UserManager mUserManager;
|
|
||||||
private AccountDashboardFragment mFragment;
|
private AccountDashboardFragment mFragment;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -65,21 +63,18 @@ public class AccountDashboardFragmentTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateSummary_shouldDisplaySignedInUser() {
|
@Config(shadows = {
|
||||||
final Activity activity = mock(Activity.class);
|
ShadowAuthenticationHelper.class
|
||||||
|
})
|
||||||
|
public void updateSummary_shouldDisplayUpTo3AccountTypes() {
|
||||||
final SummaryLoader loader = mock(SummaryLoader.class);
|
final SummaryLoader loader = mock(SummaryLoader.class);
|
||||||
final UserInfo userInfo = new UserInfo();
|
final Activity activity = Robolectric.buildActivity(Activity.class).setup().get();
|
||||||
userInfo.name = "test_name";
|
|
||||||
|
|
||||||
when(activity.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
|
||||||
when(mUserManager.getUserInfo(anyInt())).thenReturn(userInfo);
|
|
||||||
|
|
||||||
final SummaryLoader.SummaryProvider provider = mFragment.SUMMARY_PROVIDER_FACTORY
|
final SummaryLoader.SummaryProvider provider = mFragment.SUMMARY_PROVIDER_FACTORY
|
||||||
.createSummaryProvider(activity, loader);
|
.createSummaryProvider(activity, loader);
|
||||||
provider.setListening(true);
|
provider.setListening(true);
|
||||||
|
|
||||||
verify(activity).getString(R.string.users_and_accounts_summary,
|
verify(loader).setSummary(provider, LABELS[0] + ", " + LABELS[1] + ", " + LABELS[2]);
|
||||||
userInfo.name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -92,4 +87,36 @@ public class AccountDashboardFragmentTest {
|
|||||||
assertThat(indexRes).isNotNull();
|
assertThat(indexRes).isNotNull();
|
||||||
assertThat(indexRes.get(0).xmlResId).isEqualTo(mFragment.getPreferenceScreenResId());
|
assertThat(indexRes.get(0).xmlResId).isEqualTo(mFragment.getPreferenceScreenResId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Implements(AuthenticatorHelper.class)
|
||||||
|
public static class ShadowAuthenticationHelper {
|
||||||
|
|
||||||
|
static final String[] TYPES = new String[] {"type1", "type2", "type3", "type4"};
|
||||||
|
static final String[] LABELS = new String[] {"LABEL1", "LABEL2",
|
||||||
|
"LABEL3", "LABEL4"};
|
||||||
|
|
||||||
|
public void __constructor__(Context context, UserHandle userHandle,
|
||||||
|
AuthenticatorHelper.OnAccountsUpdateListener listener) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Implementation
|
||||||
|
public String[] getEnabledAccountTypes() {
|
||||||
|
return TYPES;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Implementation
|
||||||
|
public CharSequence getLabelForType(Context context, final String accountType) {
|
||||||
|
if (TextUtils.equals(accountType, TYPES[0])) {
|
||||||
|
return LABELS[0];
|
||||||
|
} else if (TextUtils.equals(accountType, TYPES[1])) {
|
||||||
|
return LABELS[1];
|
||||||
|
} else if (TextUtils.equals(accountType, TYPES[2])) {
|
||||||
|
return LABELS[2];
|
||||||
|
} else if (TextUtils.equals(accountType, TYPES[3])) {
|
||||||
|
return LABELS[3];
|
||||||
|
}
|
||||||
|
return "no_label";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user