Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c561603a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents bbae3e89 601fbec8
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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 -> {
+29 −0
Original line number Diff line number Diff line
@@ -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(