Loading src/com/android/settings/applications/managedomainurls/DomainAppPreference.java +14 −23 Original line number Diff line number Diff line Loading @@ -17,27 +17,26 @@ package com.android.settings.applications.managedomainurls; import android.content.Context; import android.content.pm.PackageManager; import android.os.UserHandle; import android.util.ArraySet; import android.content.pm.verify.domain.DomainVerificationManager; import android.content.pm.verify.domain.DomainVerificationUserState; import android.util.IconDrawableFactory; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.applications.intentpicker.IntentPickerUtils; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.widget.AppPreference; public class DomainAppPreference extends AppPreference { private final AppEntry mEntry; private final PackageManager mPm; private final DomainVerificationManager mDomainVerificationManager; private final IconDrawableFactory mIconDrawableFactory; public DomainAppPreference(final Context context, IconDrawableFactory iconFactory, AppEntry entry) { super(context); mIconDrawableFactory = iconFactory; mPm = context.getPackageManager(); mDomainVerificationManager = context.getSystemService(DomainVerificationManager.class); mEntry = entry; mEntry.ensureLabel(getContext()); Loading @@ -60,22 +59,14 @@ public class DomainAppPreference extends AppPreference { } private CharSequence getDomainsSummary(String packageName) { // If the user has explicitly said "no" for this package, that's the // string we should show. int domainStatus = mPm.getIntentVerificationStatusAsUser(packageName, UserHandle.myUserId()); if (domainStatus == PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER) { return getContext().getText(R.string.domain_urls_summary_none); } // Otherwise, ask package manager for the domains for this package, // and show the first one (or none if there aren't any). final ArraySet<String> result = Utils.getHandledDomains(mPm, packageName); if (result.isEmpty()) { return getContext().getText(R.string.domain_urls_summary_none); } else if (result.size() == 1) { return getContext().getString(R.string.domain_urls_summary_one, result.valueAt(0)); } else { return getContext().getString(R.string.domain_urls_summary_some, result.valueAt(0)); return getContext().getText(isLinkHandlingAllowed(packageName) ? R.string.app_link_open_always : R.string.app_link_open_never); } private boolean isLinkHandlingAllowed(String packageName) { final DomainVerificationUserState userState = IntentPickerUtils.getDomainVerificationUserState(mDomainVerificationManager, packageName); return userState == null ? false : userState.isLinkHandlingAllowed(); } } tests/robotests/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java +27 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,17 @@ package com.android.settings.applications.managedomainurls; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.verify.domain.DomainVerificationManager; import android.content.pm.verify.domain.DomainVerificationUserState; import android.util.IconDrawableFactory; import com.android.settings.R; Loading @@ -28,6 +37,8 @@ import com.android.settingslib.applications.ApplicationsState; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; Loading @@ -40,16 +51,30 @@ public class DomainAppPreferenceControllerTest { private Context mContext; private IconDrawableFactory mIconDrawableFactory; @Mock private DomainVerificationManager mDomainVerificationManager; @Mock private DomainVerificationUserState mDomainVerificationUserState; @Before public void setUp() { mContext = RuntimeEnvironment.application; MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mIconDrawableFactory = IconDrawableFactory.newInstance(mContext); mAppEntry = new ApplicationsState.AppEntry( mContext, createApplicationInfo(mContext.getPackageName()), 0); when(mContext.getSystemService(DomainVerificationManager.class)).thenReturn( mDomainVerificationManager); } @Test public void getLayoutResource_shouldUseAppPreferenceLayout() { public void getLayoutResource_shouldUseAppPreferenceLayout() throws PackageManager.NameNotFoundException { final DomainVerificationUserState domainVerificationUserState = mock( DomainVerificationUserState.class); doReturn(domainVerificationUserState).when( mDomainVerificationManager).getDomainVerificationUserState(anyString()); doReturn(true).when(domainVerificationUserState).isLinkHandlingAllowed(); final DomainAppPreference pref = new DomainAppPreference( mContext, mIconDrawableFactory, mAppEntry); Loading Loading
src/com/android/settings/applications/managedomainurls/DomainAppPreference.java +14 −23 Original line number Diff line number Diff line Loading @@ -17,27 +17,26 @@ package com.android.settings.applications.managedomainurls; import android.content.Context; import android.content.pm.PackageManager; import android.os.UserHandle; import android.util.ArraySet; import android.content.pm.verify.domain.DomainVerificationManager; import android.content.pm.verify.domain.DomainVerificationUserState; import android.util.IconDrawableFactory; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.applications.intentpicker.IntentPickerUtils; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.widget.AppPreference; public class DomainAppPreference extends AppPreference { private final AppEntry mEntry; private final PackageManager mPm; private final DomainVerificationManager mDomainVerificationManager; private final IconDrawableFactory mIconDrawableFactory; public DomainAppPreference(final Context context, IconDrawableFactory iconFactory, AppEntry entry) { super(context); mIconDrawableFactory = iconFactory; mPm = context.getPackageManager(); mDomainVerificationManager = context.getSystemService(DomainVerificationManager.class); mEntry = entry; mEntry.ensureLabel(getContext()); Loading @@ -60,22 +59,14 @@ public class DomainAppPreference extends AppPreference { } private CharSequence getDomainsSummary(String packageName) { // If the user has explicitly said "no" for this package, that's the // string we should show. int domainStatus = mPm.getIntentVerificationStatusAsUser(packageName, UserHandle.myUserId()); if (domainStatus == PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER) { return getContext().getText(R.string.domain_urls_summary_none); } // Otherwise, ask package manager for the domains for this package, // and show the first one (or none if there aren't any). final ArraySet<String> result = Utils.getHandledDomains(mPm, packageName); if (result.isEmpty()) { return getContext().getText(R.string.domain_urls_summary_none); } else if (result.size() == 1) { return getContext().getString(R.string.domain_urls_summary_one, result.valueAt(0)); } else { return getContext().getString(R.string.domain_urls_summary_some, result.valueAt(0)); return getContext().getText(isLinkHandlingAllowed(packageName) ? R.string.app_link_open_always : R.string.app_link_open_never); } private boolean isLinkHandlingAllowed(String packageName) { final DomainVerificationUserState userState = IntentPickerUtils.getDomainVerificationUserState(mDomainVerificationManager, packageName); return userState == null ? false : userState.isLinkHandlingAllowed(); } }
tests/robotests/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java +27 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,17 @@ package com.android.settings.applications.managedomainurls; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.verify.domain.DomainVerificationManager; import android.content.pm.verify.domain.DomainVerificationUserState; import android.util.IconDrawableFactory; import com.android.settings.R; Loading @@ -28,6 +37,8 @@ import com.android.settingslib.applications.ApplicationsState; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; Loading @@ -40,16 +51,30 @@ public class DomainAppPreferenceControllerTest { private Context mContext; private IconDrawableFactory mIconDrawableFactory; @Mock private DomainVerificationManager mDomainVerificationManager; @Mock private DomainVerificationUserState mDomainVerificationUserState; @Before public void setUp() { mContext = RuntimeEnvironment.application; MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mIconDrawableFactory = IconDrawableFactory.newInstance(mContext); mAppEntry = new ApplicationsState.AppEntry( mContext, createApplicationInfo(mContext.getPackageName()), 0); when(mContext.getSystemService(DomainVerificationManager.class)).thenReturn( mDomainVerificationManager); } @Test public void getLayoutResource_shouldUseAppPreferenceLayout() { public void getLayoutResource_shouldUseAppPreferenceLayout() throws PackageManager.NameNotFoundException { final DomainVerificationUserState domainVerificationUserState = mock( DomainVerificationUserState.class); doReturn(domainVerificationUserState).when( mDomainVerificationManager).getDomainVerificationUserState(anyString()); doReturn(true).when(domainVerificationUserState).isLinkHandlingAllowed(); final DomainAppPreference pref = new DomainAppPreference( mContext, mIconDrawableFactory, mAppEntry); Loading