Migrate all default app shortcut preference to use roles.
Bug: 124452117 Test: build Change-Id: I19375dc21bfcd932a263c49330dc9a040a446beb
This commit is contained in:
@@ -34,8 +34,6 @@ import android.permission.PermissionControllerManager;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.applications.DefaultAppSettings;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -73,7 +71,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
||||
private ShadowUserManager mShadowUserManager;
|
||||
|
||||
private TestRolePreferenceController mController;
|
||||
private TestLegacyPreferenceController mLegacyController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -86,7 +83,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
||||
mShadowUserManager = shadowOf(mActivity.getSystemService(UserManager.class));
|
||||
mController = new TestRolePreferenceController(mActivity);
|
||||
when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
|
||||
mLegacyController = new TestLegacyPreferenceController(mActivity);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -141,8 +137,8 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
||||
when(mRoleManager.getRoleHolders(eq(TEST_ROLE_NAME))).thenReturn(Collections.singletonList(
|
||||
TEST_PACKAGE_NAME));
|
||||
final CharSequence yesText = mActivity.getText(R.string.yes);
|
||||
|
||||
mController.updateState(mPreference);
|
||||
|
||||
verify(mPreference).setSummary(yesText);
|
||||
}
|
||||
|
||||
@@ -150,17 +146,17 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
||||
public void updateState_notRoleHoler_shouldSetSummaryToNo() {
|
||||
when(mRoleManager.getRoleHolders(eq(TEST_ROLE_NAME))).thenReturn(Collections.emptyList());
|
||||
final CharSequence noText = mActivity.getText(R.string.no);
|
||||
|
||||
mController.updateState(mPreference);
|
||||
|
||||
verify(mPreference).setSummary(noText);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_shouldStartManageDefaultAppIntent() {
|
||||
final ShadowActivity shadowActivity = shadowOf(mActivity);
|
||||
|
||||
mController.handlePreferenceTreeClick(mPreference);
|
||||
final Intent intent = shadowActivity.getNextStartedActivity();
|
||||
|
||||
assertThat(intent).isNotNull();
|
||||
assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MANAGE_DEFAULT_APP);
|
||||
assertThat(intent.getStringExtra(Intent.EXTRA_ROLE_NAME)).isEqualTo(TEST_ROLE_NAME);
|
||||
@@ -172,76 +168,4 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
|
||||
super(context, TEST_PREFERENCE_KEY, TEST_ROLE_NAME, TEST_PACKAGE_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: STOPSHIP(b/110557011): Remove following tests once we have all default apps migrated.
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_hasAppCapability_shouldReturnAvailable() {
|
||||
mShadowUserManager.setManagedProfile(false);
|
||||
mLegacyController.mHasAppCapability = true;
|
||||
|
||||
assertThat(mLegacyController.getAvailabilityStatus()).isEqualTo(
|
||||
DefaultAppShortcutPreferenceControllerBase.AVAILABLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_noAppCapability_shouldReturnDisabled() {
|
||||
mShadowUserManager.setManagedProfile(false);
|
||||
mLegacyController.mHasAppCapability = false;
|
||||
|
||||
assertThat(mLegacyController.getAvailabilityStatus()).isEqualTo(
|
||||
DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_isDefaultApp_shouldSetSummaryToYes() {
|
||||
mLegacyController.mIsDefaultApp = true;
|
||||
final CharSequence yesText = mActivity.getText(R.string.yes);
|
||||
|
||||
mLegacyController.updateState(mPreference);
|
||||
verify(mPreference).setSummary(yesText);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_notDefaultApp_shouldSetSummaryToNo() {
|
||||
mLegacyController.mIsDefaultApp = false;
|
||||
final CharSequence noText = mActivity.getText(R.string.no);
|
||||
|
||||
mLegacyController.updateState(mPreference);
|
||||
verify(mPreference).setSummary(noText);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_shouldStartDefaultAppSettings() {
|
||||
final ShadowActivity shadowActivity = shadowOf(mActivity);
|
||||
|
||||
mLegacyController.handlePreferenceTreeClick(mPreference);
|
||||
final Intent intent = shadowActivity.getNextStartedActivity();
|
||||
assertThat(intent).isNotNull();
|
||||
assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
|
||||
DefaultAppSettings.class.getName());
|
||||
assertThat(intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS).getString(
|
||||
SettingsActivity.EXTRA_FRAGMENT_ARG_KEY)).isEqualTo(TEST_PREFERENCE_KEY);
|
||||
}
|
||||
|
||||
private class TestLegacyPreferenceController
|
||||
extends DefaultAppShortcutPreferenceControllerBase {
|
||||
|
||||
private boolean mIsDefaultApp;
|
||||
private boolean mHasAppCapability;
|
||||
|
||||
private TestLegacyPreferenceController(Context context) {
|
||||
super(context, TEST_PREFERENCE_KEY, TEST_PACKAGE_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean hasAppCapability() {
|
||||
return mHasAppCapability;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isDefaultApp() {
|
||||
return mIsDefaultApp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -18,15 +18,8 @@ package com.android.settings.applications.appinfo;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.permission.PermissionControllerManager;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -35,57 +28,27 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class DefaultBrowserShortcutPreferenceControllerTest {
|
||||
|
||||
@Mock
|
||||
private PackageManager mPackageManager;
|
||||
private PermissionControllerManager mPermissionControllerManager;
|
||||
|
||||
private Context mContext;
|
||||
private DefaultBrowserShortcutPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||
mController = new DefaultBrowserShortcutPreferenceController(mContext, "Package1");
|
||||
ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE,
|
||||
mPermissionControllerManager);
|
||||
mController = new DefaultBrowserShortcutPreferenceController(RuntimeEnvironment.application,
|
||||
"Package1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPreferenceKey_shouldReturnDefaultBrowser() {
|
||||
assertThat(mController.getPreferenceKey()).isEqualTo("default_browser");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void hasAppCapability_hasBrowserCapability_shouldReturnTrue() {
|
||||
List<ResolveInfo> resolveInfos = new ArrayList<>();
|
||||
resolveInfos.add(new ResolveInfo());
|
||||
when(mPackageManager.queryIntentActivitiesAsUser(argThat(intent-> intent != null
|
||||
&& intent.getCategories().contains(Intent.CATEGORY_BROWSABLE)), anyInt(), anyInt()))
|
||||
.thenReturn(resolveInfos);
|
||||
|
||||
assertThat(mController.hasAppCapability()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void hasAppCapability_noBrowserCapability_shouldReturnFalse() {
|
||||
assertThat(mController.hasAppCapability()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isDefaultApp_isDefaultBrowser_shouldReturnTrue() {
|
||||
when(mPackageManager.getDefaultBrowserPackageNameAsUser(anyInt())).thenReturn("Package1");
|
||||
|
||||
assertThat(mController.isDefaultApp()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isDefaultApp_notDefaultBrowser_shouldReturnFalse() {
|
||||
assertThat(mController.isDefaultApp()).isFalse();
|
||||
}
|
||||
}
|
||||
|
@@ -18,17 +18,8 @@ package com.android.settings.applications.appinfo;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.argThat;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.role.RoleManager;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.permission.PermissionControllerManager;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -37,62 +28,27 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class DefaultEmergencyShortcutPreferenceControllerTest {
|
||||
|
||||
@Mock
|
||||
private RoleManager mRoleManager;
|
||||
@Mock
|
||||
private PackageManager mPackageManager;
|
||||
private PermissionControllerManager mPermissionControllerManager;
|
||||
|
||||
private Context mContext;
|
||||
private DefaultEmergencyShortcutPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||
when(mContext.getSystemService(RoleManager.class)).thenReturn(mRoleManager);
|
||||
mController = new DefaultEmergencyShortcutPreferenceController(mContext, "Package1");
|
||||
ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE,
|
||||
mPermissionControllerManager);
|
||||
mController = new DefaultEmergencyShortcutPreferenceController(
|
||||
RuntimeEnvironment.application, "Package1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPreferenceKey_shouldReturnDefaultEmergency() {
|
||||
assertThat(mController.getPreferenceKey()).isEqualTo("default_emergency_app");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void hasAppCapability_hasEmergencyCapability_shouldReturnTrue() {
|
||||
List<ResolveInfo> resolveInfos = new ArrayList<>();
|
||||
resolveInfos.add(new ResolveInfo());
|
||||
when(mPackageManager.queryIntentActivities(argThat(intent-> intent != null
|
||||
&& intent.getAction().equals(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE)),
|
||||
anyInt())).thenReturn(resolveInfos);
|
||||
|
||||
assertThat(mController.hasAppCapability()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void hasAppCapability_noEmergencyCapability_shouldReturnFalse() {
|
||||
assertThat(mController.hasAppCapability()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isDefaultApp_isDefaultEmergency_shouldReturnTrue() {
|
||||
when(mRoleManager.getRoleHolders(RoleManager.ROLE_EMERGENCY))
|
||||
.thenReturn(Collections.singletonList("Package1"));
|
||||
|
||||
assertThat(mController.isDefaultApp()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isDefaultApp_notDefaultEmergency_shouldReturnFalse() {
|
||||
assertThat(mController.isDefaultApp()).isFalse();
|
||||
}
|
||||
}
|
||||
|
@@ -18,15 +18,8 @@ package com.android.settings.applications.appinfo;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyList;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
|
||||
import android.permission.PermissionControllerManager;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -35,62 +28,27 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class DefaultHomeShortcutPreferenceControllerTest {
|
||||
|
||||
@Mock
|
||||
private PackageManager mPackageManager;
|
||||
private PermissionControllerManager mPermissionControllerManager;
|
||||
|
||||
private Context mContext;
|
||||
private DefaultHomeShortcutPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||
mController = new DefaultHomeShortcutPreferenceController(mContext, "Package1");
|
||||
ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE,
|
||||
mPermissionControllerManager);
|
||||
mController = new DefaultHomeShortcutPreferenceController(RuntimeEnvironment.application,
|
||||
"Package1");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPreferenceKey_shouldReturnDefaultHome() {
|
||||
assertThat(mController.getPreferenceKey()).isEqualTo("default_home");
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = ShadowDefaultHomePreferenceController.class)
|
||||
public void hasAppCapability_hasHomeCapability_shouldReturnTrue() {
|
||||
assertThat(mController.hasAppCapability()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void hasAppCapability_noHomeCapability_shouldReturnFalse() {
|
||||
assertThat(mController.hasAppCapability()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isDefaultApp_isDefaultHome_shouldReturnTrue() {
|
||||
when(mPackageManager.getHomeActivities(anyList()))
|
||||
.thenReturn(new ComponentName("Package1", "cls1"));
|
||||
assertThat(mController.isDefaultApp()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isDefaultApp_notDefaultHome_shouldReturnFalse() {
|
||||
when(mPackageManager.getHomeActivities(anyList()))
|
||||
.thenReturn(new ComponentName("pkg2", "cls1"));
|
||||
assertThat(mController.isDefaultApp()).isFalse();
|
||||
}
|
||||
|
||||
@Implements(DefaultHomePreferenceController.class)
|
||||
public static class ShadowDefaultHomePreferenceController {
|
||||
@Implementation
|
||||
protected static boolean hasHomePreference(String pkg, Context context) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user