Fix test failures under com.android.settings.dashboard

Bug: 313569889

Test: atest
Change-Id: I44fc992be9a79681d97e573437761e379ecd1a0f
This commit is contained in:
Fan Wu
2024-01-24 14:32:41 +08:00
parent 81513bfb87
commit 4dd6e7e982
3 changed files with 73 additions and 65 deletions

View File

@@ -43,6 +43,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.app.Application;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -62,6 +63,7 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import androidx.test.core.app.ApplicationProvider;
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;
@@ -83,16 +85,16 @@ import com.android.settingslib.drawer.Tile;
import com.android.settingslib.drawer.TileUtils; import com.android.settingslib.drawer.TileUtils;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers; import org.mockito.Answers;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows; import org.robolectric.Shadows;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowActivity;
@@ -104,10 +106,14 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowUserManager.class) @Config(shadows = ShadowUserManager.class)
public class DashboardFeatureProviderImplTest { public class DashboardFeatureProviderImplTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String KEY = "key"; private static final String KEY = "key";
private static final String SWITCH_URI = "content://com.android.settings/tile_switch"; private static final String SWITCH_URI = "content://com.android.settings/tile_switch";
private final Application mApplication = ApplicationProvider.getApplicationContext();
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private FragmentActivity mActivity; private FragmentActivity mActivity;
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -126,9 +132,8 @@ public class DashboardFeatureProviderImplTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mContext = spy(mApplication);
mContext = spy(RuntimeEnvironment.application); doReturn(mApplication).when(mActivity).getApplicationContext();
doReturn(RuntimeEnvironment.application).when(mActivity).getApplicationContext();
mForceRoundedIcon = false; mForceRoundedIcon = false;
mActivityInfo = new ActivityInfo(); mActivityInfo = new ActivityInfo();
mActivityInfo.packageName = mContext.getPackageName(); mActivityInfo.packageName = mContext.getPackageName();
@@ -163,7 +168,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_shouldBindAllData() { public void bindPreference_shouldBindAllData() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = spy(new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE)); final Tile tile = spy(new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10); mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565))) doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)))
@@ -183,7 +188,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_shouldBindAllSwitchData() { public void bindPreference_shouldBindAllSwitchData() {
final Preference preference = new SwitchPreference(RuntimeEnvironment.application); final Preference preference = new SwitchPreference(mApplication);
final Tile tile = spy(new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, final Tile tile = spy(new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE,
mSwitchMetaData)); mSwitchMetaData));
mSwitchMetaData.putInt(META_DATA_KEY_ORDER, 10); mSwitchMetaData.putInt(META_DATA_KEY_ORDER, 10);
@@ -204,7 +209,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_providerTileWithPendingIntent_shouldBindIntent() { public void bindPreference_providerTileWithPendingIntent_shouldBindIntent() {
final Preference preference = new SwitchPreference(RuntimeEnvironment.application); final Preference preference = new SwitchPreference(mApplication);
Bundle metaData = new Bundle(); Bundle metaData = new Bundle();
metaData.putInt(META_DATA_PREFERENCE_TITLE, R.string.settings_label); metaData.putInt(META_DATA_PREFERENCE_TITLE, R.string.settings_label);
metaData.putInt(META_DATA_PREFERENCE_SUMMARY, R.string.about_settings_summary); metaData.putInt(META_DATA_PREFERENCE_SUMMARY, R.string.about_settings_summary);
@@ -212,7 +217,7 @@ public class DashboardFeatureProviderImplTest {
metaData.putString(META_DATA_PREFERENCE_KEYHINT, KEY); metaData.putString(META_DATA_PREFERENCE_KEYHINT, KEY);
final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, metaData); final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, metaData);
PendingIntent pendingIntent = PendingIntent pendingIntent =
PendingIntent.getActivity(RuntimeEnvironment.application, 0, new Intent("test"), 0); PendingIntent.getActivity(mApplication, 0, new Intent("test"), 0);
tile.pendingIntentMap.put(UserHandle.CURRENT, pendingIntent); tile.pendingIntentMap.put(UserHandle.CURRENT, pendingIntent);
mImpl.bindPreferenceToTileAndGetObservers(mActivity, mFragment, mForceRoundedIcon, mImpl.bindPreferenceToTileAndGetObservers(mActivity, mFragment, mForceRoundedIcon,
@@ -225,7 +230,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_noFragmentMetadata_shouldBindIntent() { public void bindPreference_noFragmentMetadata_shouldBindIntent() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10); mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
@@ -237,10 +242,9 @@ public class DashboardFeatureProviderImplTest {
assertThat(preference.getOrder()).isEqualTo(tile.getOrder()); assertThat(preference.getOrder()).isEqualTo(tile.getOrder());
} }
@Ignore("b/313569889")
@Test @Test
public void bindPreference_noFragmentMetadata_shouldBindToProfileSelector() { public void bindPreference_noFragmentMetadata_shouldBindToProfileSelector() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
tile.userHandle = new ArrayList<>(); tile.userHandle = new ArrayList<>();
tile.userHandle.add(mock(UserHandle.class)); tile.userHandle.add(mock(UserHandle.class));
@@ -255,7 +259,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_noFragmentMetadataSingleUser_shouldBindToDirectLaunchIntent() { public void bindPreference_noFragmentMetadataSingleUser_shouldBindToDirectLaunchIntent() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
tile.userHandle = new ArrayList<>(); tile.userHandle = new ArrayList<>();
tile.userHandle.add(mock(UserHandle.class)); tile.userHandle.add(mock(UserHandle.class));
@@ -276,8 +280,8 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_toInternalSettingActivity_shouldBindToDirectLaunchIntentAndNotLog() { public void bindPreference_toInternalSettingActivity_shouldBindToDirectLaunchIntentAndNotLog() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName(); mActivityInfo.packageName = mApplication.getPackageName();
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
tile.userHandle = new ArrayList<>(); tile.userHandle = new ArrayList<>();
tile.userHandle.add(mock(UserHandle.class)); tile.userHandle.add(mock(UserHandle.class));
@@ -303,7 +307,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() { public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mImpl.bindPreferenceToTileAndGetObservers(mActivity, mFragment, mForceRoundedIcon, mImpl.bindPreferenceToTileAndGetObservers(mActivity, mFragment, mForceRoundedIcon,
preference, tile, null /* key */, preference, tile, null /* key */,
@@ -315,7 +319,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_noSummary_shouldSetNullSummary() { public void bindPreference_noSummary_shouldSetNullSummary() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.metaData.remove(META_DATA_PREFERENCE_SUMMARY); mActivityInfo.metaData.remove(META_DATA_PREFERENCE_SUMMARY);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
@@ -329,7 +333,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowTileUtils.class}) @Config(shadows = {ShadowTileUtils.class})
public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProviderAndHaveObserver() { public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProviderAndHaveObserver() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
final String uriString = "content://com.android.settings/tile_summary"; final String uriString = "content://com.android.settings/tile_summary";
mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, uriString); mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_SUMMARY_URI, uriString);
@@ -349,7 +353,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowTileUtils.class}) @Config(shadows = {ShadowTileUtils.class})
public void bindPreference_hasTitleUri_shouldLoadFromContentProviderAndHaveObserver() { public void bindPreference_hasTitleUri_shouldLoadFromContentProviderAndHaveObserver() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
final String uriString = "content://com.android.settings/tile_title"; final String uriString = "content://com.android.settings/tile_title";
mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_TITLE_URI, uriString); mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_TITLE_URI, uriString);
@@ -369,7 +373,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowTileUtils.class}) @Config(shadows = {ShadowTileUtils.class})
public void bindPreference_onCheckedChanged_shouldPutStateToContentProvider() { public void bindPreference_onCheckedChanged_shouldPutStateToContentProvider() {
final SwitchPreference preference = new SwitchPreference(RuntimeEnvironment.application); final SwitchPreference preference = new SwitchPreference(mApplication);
final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE,
mSwitchMetaData); mSwitchMetaData);
final Bundle bundle = new Bundle(); final Bundle bundle = new Bundle();
@@ -390,7 +394,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowTileUtils.class}) @Config(shadows = {ShadowTileUtils.class})
public void bindPreference_onCheckedChangedError_shouldRevertCheckedState() { public void bindPreference_onCheckedChangedError_shouldRevertCheckedState() {
final SwitchPreference preference = new SwitchPreference(RuntimeEnvironment.application); final SwitchPreference preference = new SwitchPreference(mApplication);
final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE,
mSwitchMetaData); mSwitchMetaData);
final Bundle bundle = new Bundle(); final Bundle bundle = new Bundle();
@@ -411,7 +415,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowTileUtils.class}) @Config(shadows = {ShadowTileUtils.class})
public void bindPreference_callbackOnChanged_shouldLoadFromContentProvider() { public void bindPreference_callbackOnChanged_shouldLoadFromContentProvider() {
final SwitchPreference preference = new SwitchPreference(RuntimeEnvironment.application); final SwitchPreference preference = new SwitchPreference(mApplication);
final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE,
mSwitchMetaData); mSwitchMetaData);
final List<DynamicDataObserver> observers = mImpl.bindPreferenceToTileAndGetObservers( final List<DynamicDataObserver> observers = mImpl.bindPreferenceToTileAndGetObservers(
@@ -432,7 +436,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_withNullKeyTileKey_shouldUseTileKey() { public void bindPreference_withNullKeyTileKey_shouldUseTileKey() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mImpl.bindPreferenceToTileAndGetObservers(mActivity, mFragment, mForceRoundedIcon, mImpl.bindPreferenceToTileAndGetObservers(mActivity, mFragment, mForceRoundedIcon,
@@ -443,8 +447,8 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindIcon_withStaticIcon_shouldLoadStaticIcon() { public void bindIcon_withStaticIcon_shouldLoadStaticIcon() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName(); mActivityInfo.packageName = mApplication.getPackageName();
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, R.drawable.ic_add_40dp); mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, R.drawable.ic_add_40dp);
@@ -461,8 +465,8 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowTileUtils.class}) @Config(shadows = {ShadowTileUtils.class})
public void bindIcon_withIconUri_shouldLoadIconFromContentProvider() { public void bindIcon_withIconUri_shouldLoadIconFromContentProvider() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName(); mActivityInfo.packageName = mApplication.getPackageName();
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_URI, mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_URI,
@@ -476,8 +480,8 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowTileUtils.class}) @Config(shadows = {ShadowTileUtils.class})
public void bindIcon_withStaticIconAndIconUri_shouldLoadIconFromContentProvider() { public void bindIcon_withStaticIconAndIconUri_shouldLoadIconFromContentProvider() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName(); mActivityInfo.packageName = mApplication.getPackageName();
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, R.drawable.ic_add_40dp); mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, R.drawable.ic_add_40dp);
@@ -503,8 +507,8 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowTileUtils.class}) @Config(shadows = {ShadowTileUtils.class})
public void bindIcon_noIcon_shouldNotLoadIcon() { public void bindIcon_noIcon_shouldNotLoadIcon() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName(); mActivityInfo.packageName = mApplication.getPackageName();
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
@@ -516,7 +520,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_withBaseOrder_shouldOffsetOrder() { public void bindPreference_withBaseOrder_shouldOffsetOrder() {
final int baseOrder = 100; final int baseOrder = 100;
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10); mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
@@ -528,7 +532,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_withOrderMetadata_shouldUseOrderInMetadata() { public void bindPreference_withOrderMetadata_shouldUseOrderInMetadata() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final int testOrder = -30; final int testOrder = -30;
mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10); mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
@@ -541,7 +545,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_invalidOrderMetadata_shouldIgnore() { public void bindPreference_invalidOrderMetadata_shouldIgnore() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_KEY_ORDER, "hello"); mActivityInfo.metaData.putString(META_DATA_KEY_ORDER, "hello");
@@ -554,7 +558,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_withIntentActionMetadata_shouldSetLaunchAction() { public void bindPreference_withIntentActionMetadata_shouldSetLaunchAction() {
FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get(); FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get();
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction"); mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction");
@@ -583,7 +587,7 @@ public class DashboardFeatureProviderImplTest {
String clickPrefKey = "highlight_pref_key"; String clickPrefKey = "highlight_pref_key";
String highlightMixinPrefKey = "highlight_pref_key"; String highlightMixinPrefKey = "highlight_pref_key";
FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get(); FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get();
Preference preference = new Preference(RuntimeEnvironment.application); Preference preference = new Preference(mApplication);
Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction"); mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction");
@@ -614,7 +618,7 @@ public class DashboardFeatureProviderImplTest {
String clickPrefKey = "not_highlight_pref_key"; String clickPrefKey = "not_highlight_pref_key";
String highlightMixinPrefKey = "highlight_pref_key"; String highlightMixinPrefKey = "highlight_pref_key";
FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get(); FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get();
Preference preference = new Preference(RuntimeEnvironment.application); Preference preference = new Preference(mApplication);
Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction"); mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction");
@@ -637,9 +641,9 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void clickPreference_withUnresolvableIntent_shouldNotLaunchAnything() { public void clickPreference_withUnresolvableIntent_shouldNotLaunchAnything() {
ReflectionHelpers.setField( ReflectionHelpers.setField(
mImpl, "mPackageManager", RuntimeEnvironment.application.getPackageManager()); mImpl, "mPackageManager", mApplication.getPackageManager());
FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get(); FragmentActivity activity = Robolectric.buildActivity(FragmentActivity.class).get();
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(mApplication);
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction"); mActivityInfo.metaData.putString("com.android.settings.intent.action", "TestAction");
@@ -657,7 +661,7 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void clickPreference_providerTileWithPendingIntent_singleUser_executesPendingIntent() { public void clickPreference_providerTileWithPendingIntent_singleUser_executesPendingIntent() {
final Preference preference = new SwitchPreference(RuntimeEnvironment.application); final Preference preference = new SwitchPreference(mApplication);
Bundle metaData = new Bundle(); Bundle metaData = new Bundle();
metaData.putInt(META_DATA_PREFERENCE_TITLE, R.string.settings_label); metaData.putInt(META_DATA_PREFERENCE_TITLE, R.string.settings_label);
metaData.putInt(META_DATA_PREFERENCE_SUMMARY, R.string.about_settings_summary); metaData.putInt(META_DATA_PREFERENCE_SUMMARY, R.string.about_settings_summary);
@@ -665,7 +669,7 @@ public class DashboardFeatureProviderImplTest {
metaData.putString(META_DATA_PREFERENCE_KEYHINT, KEY); metaData.putString(META_DATA_PREFERENCE_KEYHINT, KEY);
final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, metaData); final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, metaData);
PendingIntent pendingIntent = PendingIntent pendingIntent =
PendingIntent.getActivity(RuntimeEnvironment.application, 0, new Intent("test"), 0); PendingIntent.getActivity(mApplication, 0, new Intent("test"), 0);
tile.pendingIntentMap.put(UserHandle.CURRENT, pendingIntent); tile.pendingIntentMap.put(UserHandle.CURRENT, pendingIntent);
mImpl.bindPreferenceToTileAndGetObservers(mActivity, mFragment, mForceRoundedIcon, mImpl.bindPreferenceToTileAndGetObservers(mActivity, mFragment, mForceRoundedIcon,
@@ -673,14 +677,14 @@ public class DashboardFeatureProviderImplTest {
preference.performClick(); preference.performClick();
Intent nextStartedActivity = Intent nextStartedActivity =
Shadows.shadowOf(RuntimeEnvironment.application).peekNextStartedActivity(); Shadows.shadowOf((Application) mApplication).peekNextStartedActivity();
assertThat(nextStartedActivity).isNotNull(); assertThat(nextStartedActivity).isNotNull();
assertThat(nextStartedActivity.getAction()).isEqualTo("test"); assertThat(nextStartedActivity.getAction()).isEqualTo("test");
} }
@Test @Test
public void clickPreference_providerTileWithPendingIntent_multiUser_showsProfileDialog() { public void clickPreference_providerTileWithPendingIntent_multiUser_showsProfileDialog() {
final Preference preference = new SwitchPreference(RuntimeEnvironment.application); final Preference preference = new SwitchPreference(mApplication);
Bundle metaData = new Bundle(); Bundle metaData = new Bundle();
metaData.putInt(META_DATA_PREFERENCE_TITLE, R.string.settings_label); metaData.putInt(META_DATA_PREFERENCE_TITLE, R.string.settings_label);
metaData.putInt(META_DATA_PREFERENCE_SUMMARY, R.string.about_settings_summary); metaData.putInt(META_DATA_PREFERENCE_SUMMARY, R.string.about_settings_summary);
@@ -688,7 +692,7 @@ public class DashboardFeatureProviderImplTest {
metaData.putString(META_DATA_PREFERENCE_KEYHINT, KEY); metaData.putString(META_DATA_PREFERENCE_KEYHINT, KEY);
final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, metaData); final Tile tile = new ProviderTile(mProviderInfo, CategoryKey.CATEGORY_HOMEPAGE, metaData);
PendingIntent pendingIntent = PendingIntent pendingIntent =
PendingIntent.getActivity(RuntimeEnvironment.application, 0, new Intent("test"), 0); PendingIntent.getActivity(mApplication, 0, new Intent("test"), 0);
tile.pendingIntentMap.put(UserHandle.CURRENT, pendingIntent); tile.pendingIntentMap.put(UserHandle.CURRENT, pendingIntent);
tile.pendingIntentMap.put(new UserHandle(10), pendingIntent); tile.pendingIntentMap.put(new UserHandle(10), pendingIntent);
@@ -700,11 +704,10 @@ public class DashboardFeatureProviderImplTest {
mActivity.getSupportFragmentManager().findFragmentByTag("select_profile"); mActivity.getSupportFragmentManager().findFragmentByTag("select_profile");
assertThat(dialogFragment).isNotNull(); assertThat(dialogFragment).isNotNull();
Intent nextStartedActivity = Intent nextStartedActivity =
Shadows.shadowOf(RuntimeEnvironment.application).peekNextStartedActivity(); Shadows.shadowOf((Application) mApplication).peekNextStartedActivity();
assertThat(nextStartedActivity).isNull(); assertThat(nextStartedActivity).isNull();
} }
@Ignore("b/313569889")
@Test @Test
public void openTileIntent_profileSelectionDialog_shouldShow() { public void openTileIntent_profileSelectionDialog_shouldShow() {
ShadowUserManager.getShadow().addUser(10, "Someone", 0); ShadowUserManager.getShadow().addUser(10, "Someone", 0);
@@ -721,7 +724,6 @@ public class DashboardFeatureProviderImplTest {
verify(mActivity).getSupportFragmentManager(); verify(mActivity).getSupportFragmentManager();
} }
@Ignore("b/313569889")
@Test @Test
public void openTileIntent_profileSelectionDialog_explicitMetadataShouldShow() { public void openTileIntent_profileSelectionDialog_explicitMetadataShouldShow() {
ShadowUserManager.getShadow().addUser(10, "Someone", 0); ShadowUserManager.getShadow().addUser(10, "Someone", 0);
@@ -739,7 +741,6 @@ public class DashboardFeatureProviderImplTest {
verify(mActivity).getSupportFragmentManager(); verify(mActivity).getSupportFragmentManager();
} }
@Ignore("b/313569889")
@Test @Test
public void openTileIntent_profileSelectionDialog_shouldNotShow() { public void openTileIntent_profileSelectionDialog_shouldNotShow() {
ShadowUserManager.getShadow().addUser(10, "Someone", 0); ShadowUserManager.getShadow().addUser(10, "Someone", 0);
@@ -757,7 +758,6 @@ public class DashboardFeatureProviderImplTest {
verify(mActivity, never()).getSupportFragmentManager(); verify(mActivity, never()).getSupportFragmentManager();
} }
@Ignore("b/313569889")
@Test @Test
public void openTileIntent_profileSelectionDialog_validUserHandleShouldNotShow() { public void openTileIntent_profileSelectionDialog_validUserHandleShouldNotShow() {
final int userId = 10; final int userId = 10;
@@ -780,7 +780,6 @@ public class DashboardFeatureProviderImplTest {
verify(mActivity, never()).getSupportFragmentManager(); verify(mActivity, never()).getSupportFragmentManager();
} }
@Ignore("b/313569889")
@Test @Test
public void openTileIntent_profileSelectionDialog_invalidUserHandleShouldShow() { public void openTileIntent_profileSelectionDialog_invalidUserHandleShouldShow() {
ShadowUserManager.getShadow().addUser(10, "Someone", 0); ShadowUserManager.getShadow().addUser(10, "Someone", 0);
@@ -799,7 +798,6 @@ public class DashboardFeatureProviderImplTest {
verify(mActivity).getSupportFragmentManager(); verify(mActivity).getSupportFragmentManager();
} }
@Ignore("b/313569889")
@Test @Test
public void openTileIntent_profileSelectionDialog_unresolvableWorkProfileIntentShouldNotShow() { public void openTileIntent_profileSelectionDialog_unresolvableWorkProfileIntentShouldNotShow() {
final int userId = 10; final int userId = 10;

View File

@@ -49,7 +49,8 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreferenceCompat;
import androidx.test.core.app.ApplicationProvider;
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;
@@ -66,13 +67,13 @@ import com.android.settingslib.drawer.ProviderTile;
import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.Tile;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore; import org.junit.Rule;
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.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements; import org.robolectric.annotation.Implements;
@@ -86,6 +87,10 @@ import java.util.Map;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class DashboardFragmentTest { public class DashboardFragmentTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private final Context mAppContext = ApplicationProvider.getApplicationContext();
@Mock @Mock
private FakeFeatureFactory mFakeFeatureFactory; private FakeFeatureFactory mFakeFeatureFactory;
@@ -98,8 +103,7 @@ public class DashboardFragmentTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mContext = spy(mAppContext);
mContext = spy(RuntimeEnvironment.application);
final ActivityInfo activityInfo = new ActivityInfo(); final ActivityInfo activityInfo = new ActivityInfo();
activityInfo.packageName = "pkg"; activityInfo.packageName = "pkg";
activityInfo.name = "class"; activityInfo.name = "class";
@@ -120,11 +124,11 @@ public class DashboardFragmentTest {
mProviderTile = new ProviderTile(providerInfo, mDashboardCategory.key, metaData); mProviderTile = new ProviderTile(providerInfo, mDashboardCategory.key, metaData);
mDashboardCategory.addTile(mProviderTile); mDashboardCategory.addTile(mProviderTile);
mTestFragment = new TestFragment(RuntimeEnvironment.application); mTestFragment = new TestFragment(mAppContext);
when(mFakeFeatureFactory.dashboardFeatureProvider when(mFakeFeatureFactory.dashboardFeatureProvider
.getTilesForCategory(nullable(String.class))) .getTilesForCategory(nullable(String.class)))
.thenReturn(mDashboardCategory); .thenReturn(mDashboardCategory);
mTestFragment.onAttach(RuntimeEnvironment.application); mTestFragment.onAttach(mAppContext);
when(mContext.getPackageName()).thenReturn("TestPackage"); when(mContext.getPackageName()).thenReturn("TestPackage");
mControllers = new ArrayList<>(); mControllers = new ArrayList<>();
} }
@@ -297,7 +301,7 @@ public class DashboardFragmentTest {
preferenceControllers.add(mockController2); preferenceControllers.add(mockController2);
when(mockController1.isAvailable()).thenReturn(false); when(mockController1.isAvailable()).thenReturn(false);
when(mockController2.isAvailable()).thenReturn(true); when(mockController2.isAvailable()).thenReturn(true);
mTestFragment.onAttach(RuntimeEnvironment.application); mTestFragment.onAttach(mAppContext);
mTestFragment.onResume(); mTestFragment.onResume();
verify(mockController1).getPreferenceKey(); verify(mockController1).getPreferenceKey();
@@ -387,12 +391,11 @@ public class DashboardFragmentTest {
assertThat(mTestFragment.mBlockerController).isNull(); assertThat(mTestFragment.mBlockerController).isNull();
} }
@Ignore("b/313569889")
@Test @Test
public void createPreference_isProviderTile_returnSwitchPreference() { public void createPreference_isProviderTile_returnSwitchPreference() {
final Preference pref = mTestFragment.createPreference(mProviderTile); final Preference pref = mTestFragment.createPreference(mProviderTile);
assertThat(pref).isInstanceOf(SwitchPreference.class); assertThat(pref).isInstanceOf(SwitchPreferenceCompat.class);
} }
@Test @Test
@@ -401,7 +404,7 @@ public class DashboardFragmentTest {
assertThat(pref).isInstanceOf(Preference.class); assertThat(pref).isInstanceOf(Preference.class);
assertThat(pref).isNotInstanceOf(PrimarySwitchPreference.class); assertThat(pref).isNotInstanceOf(PrimarySwitchPreference.class);
assertThat(pref).isNotInstanceOf(SwitchPreference.class); assertThat(pref).isNotInstanceOf(SwitchPreferenceCompat.class);
assertThat(pref.getWidgetLayoutResource()).isEqualTo(0); assertThat(pref.getWidgetLayoutResource()).isEqualTo(0);
} }
@@ -431,7 +434,7 @@ public class DashboardFragmentTest {
assertThat(pref).isInstanceOf(Preference.class); assertThat(pref).isInstanceOf(Preference.class);
assertThat(pref).isNotInstanceOf(PrimarySwitchPreference.class); assertThat(pref).isNotInstanceOf(PrimarySwitchPreference.class);
assertThat(pref).isNotInstanceOf(SwitchPreference.class); assertThat(pref).isNotInstanceOf(SwitchPreferenceCompat.class);
assertThat(pref.getWidgetLayoutResource()) assertThat(pref.getWidgetLayoutResource())
.isEqualTo(R.layout.preference_external_action_icon); .isEqualTo(R.layout.preference_external_action_icon);
} }

View File

@@ -21,6 +21,7 @@ import static android.os.UserManager.USER_TYPE_PROFILE_PRIVATE;
import android.annotation.UserIdInt; import android.annotation.UserIdInt;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.content.pm.UserProperties;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
@@ -156,6 +157,12 @@ public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager
mDefaultGuestUserRestriction = restrictions; mDefaultGuestUserRestriction = restrictions;
} }
@Implementation
protected UserProperties getUserProperties(UserHandle userHandle) {
return new UserProperties.Builder().build();
}
public void addGuestUserRestriction(String restriction) { public void addGuestUserRestriction(String restriction) {
mDefaultGuestUserRestriction.putBoolean(restriction, true); mDefaultGuestUserRestriction.putBoolean(restriction, true);
} }