Merge "Show select user dialog if setting tile supports multi-user"

This commit is contained in:
TreeHugger Robot
2016-11-01 01:39:14 +00:00
committed by Android (Google) Code Review
2 changed files with 36 additions and 0 deletions

View File

@@ -27,6 +27,7 @@ import android.text.TextUtils;
import com.android.settings.SettingsActivity;
import com.android.settingslib.drawer.CategoryManager;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.ProfileSelectDialog;
import com.android.settingslib.drawer.Tile;
import java.util.List;
@@ -97,6 +98,12 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
}
if (!TextUtils.isEmpty(clsName)) {
pref.setFragment(clsName);
} else if (tile.userHandle != null && tile.userHandle.size() > 1) {
pref.setOnPreferenceClickListener(preference -> {
ProfileSelectDialog.updateUserHandlesIfNeeded(activity, tile);
ProfileSelectDialog.show(activity.getFragmentManager(), tile);
return true;
});
} else if (tile.intent != null) {
final Intent intent = new Intent(tile.intent);
pref.setOnPreferenceClickListener(preference -> {

View File

@@ -18,10 +18,13 @@ package com.android.settings.dashboard;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.support.v7.preference.Preference;
import com.android.settings.SettingsActivity;
@@ -38,7 +41,12 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import java.util.ArrayList;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -47,6 +55,9 @@ public class DashboardFeatureProviderImplTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Activity mActivity;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private UserManager mUserManager;
private DashboardFeatureProviderImpl mImpl;
@Before
@@ -91,6 +102,24 @@ public class DashboardFeatureProviderImplTest {
assertThat(preference.getOrder()).isEqualTo(-tile.priority);
}
@Test
public void bindPreference_noFragmentMetadata_shouldBindToProfileSelector() {
final Preference preference = new Preference(
ShadowApplication.getInstance().getApplicationContext());
final Tile tile = new Tile();
tile.metaData = new Bundle();
tile.userHandle = new ArrayList<>();
tile.userHandle.add(mock(UserHandle.class));
tile.userHandle.add(mock(UserHandle.class));
tile.intent = new Intent();
when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
mImpl.bindPreferenceToTile(mActivity, preference, tile, "123");
preference.getOnPreferenceClickListener().onPreferenceClick(null);
verify(mActivity).getFragmentManager();
}
@Test
public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() {
final Preference preference = new Preference(