Loading src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceController.java +22 −9 Original line number Diff line number Diff line Loading @@ -19,29 +19,29 @@ package com.android.settings.applications.appinfo; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.hardware.usb.IUsbManager; import android.os.ServiceManager; import android.content.pm.verify.domain.DomainVerificationManager; import android.content.pm.verify.domain.DomainVerificationUserState; import android.os.UserHandle; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.applications.intentpicker.AppLaunchSettings; import com.android.settings.applications.intentpicker.IntentPickerUtils; import com.android.settingslib.R; import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.ApplicationsState; public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceControllerBase { private IUsbManager mUsbManager; private PackageManager mPackageManager; private final DomainVerificationManager mDomainVerificationManager; private String mPackageName; public AppOpenByDefaultPreferenceController(Context context, String key) { super(context, key); mUsbManager = IUsbManager.Stub.asInterface(ServiceManager.getService(Context.USB_SERVICE)); mPackageManager = context.getPackageManager(); mDomainVerificationManager = context.getSystemService(DomainVerificationManager.class); } /** Set a package name for this controller. */ Loading Loading @@ -69,8 +69,7 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr && !AppUtils.isBrowserApp(mContext, packageInfo.packageName, UserHandle.myUserId())) { preference.setVisible(true); preference.setSummary(AppUtils.getLaunchByDefaultSummary(mParent.getAppEntry(), mUsbManager, mPackageManager, mContext)); preference.setSummary(getSubtext()); } else { preference.setVisible(false); } Loading @@ -80,4 +79,18 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr protected Class<? extends SettingsPreferenceFragment> getDetailFragmentClass() { return AppLaunchSettings.class; } @VisibleForTesting CharSequence getSubtext() { return mContext.getText(isLinkHandlingAllowed() ? R.string.app_link_open_always : R.string.app_link_open_never); } @VisibleForTesting boolean isLinkHandlingAllowed() { final DomainVerificationUserState userState = IntentPickerUtils.getDomainVerificationUserState(mDomainVerificationManager, mPackageName); return userState == null ? false : userState.isLinkHandlingAllowed(); } } tests/robotests/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceControllerTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; Loading @@ -33,6 +34,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.verify.domain.DomainVerificationManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading Loading @@ -66,6 +68,8 @@ public class AppOpenByDefaultPreferenceControllerTest { private Preference mPreference; @Mock private PackageManager mPackageManager; @Mock private DomainVerificationManager mDomainVerificationManager; private Context mContext; private AppOpenByDefaultPreferenceController mController; Loading @@ -78,6 +82,8 @@ public class AppOpenByDefaultPreferenceControllerTest { mController.setParentFragment(mFragment); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getSystemService(DomainVerificationManager.class)).thenReturn( mDomainVerificationManager); } @Test Loading Loading @@ -194,10 +200,27 @@ public class AppOpenByDefaultPreferenceControllerTest { final AppEntry appEntry = mock(AppEntry.class); appEntry.info = new ApplicationInfo(); when(mFragment.getAppEntry()).thenReturn(appEntry); doReturn(true).when(mController).isLinkHandlingAllowed(); mController.updateState(mPreference); verify(mPreference).setVisible(true); verify(mPreference).setSummary(any()); } @Test public void getSubtext_allowedLinkHandling_returnAllowedString() { final String allowdedString = "Allow app to open supported links"; doReturn(true).when(mController).isLinkHandlingAllowed(); assertThat(mController.getSubtext()).isEqualTo(allowdedString); } @Test public void getSubtext_notAllowedLinkHandling_returnNotAllowedString() { final String notAllowdedString = "Don’t allow app to open links"; doReturn(false).when(mController).isLinkHandlingAllowed(); assertThat(mController.getSubtext()).isEqualTo(notAllowdedString); } } Loading
src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceController.java +22 −9 Original line number Diff line number Diff line Loading @@ -19,29 +19,29 @@ package com.android.settings.applications.appinfo; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.hardware.usb.IUsbManager; import android.os.ServiceManager; import android.content.pm.verify.domain.DomainVerificationManager; import android.content.pm.verify.domain.DomainVerificationUserState; import android.os.UserHandle; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.applications.intentpicker.AppLaunchSettings; import com.android.settings.applications.intentpicker.IntentPickerUtils; import com.android.settingslib.R; import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.ApplicationsState; public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceControllerBase { private IUsbManager mUsbManager; private PackageManager mPackageManager; private final DomainVerificationManager mDomainVerificationManager; private String mPackageName; public AppOpenByDefaultPreferenceController(Context context, String key) { super(context, key); mUsbManager = IUsbManager.Stub.asInterface(ServiceManager.getService(Context.USB_SERVICE)); mPackageManager = context.getPackageManager(); mDomainVerificationManager = context.getSystemService(DomainVerificationManager.class); } /** Set a package name for this controller. */ Loading Loading @@ -69,8 +69,7 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr && !AppUtils.isBrowserApp(mContext, packageInfo.packageName, UserHandle.myUserId())) { preference.setVisible(true); preference.setSummary(AppUtils.getLaunchByDefaultSummary(mParent.getAppEntry(), mUsbManager, mPackageManager, mContext)); preference.setSummary(getSubtext()); } else { preference.setVisible(false); } Loading @@ -80,4 +79,18 @@ public class AppOpenByDefaultPreferenceController extends AppInfoPreferenceContr protected Class<? extends SettingsPreferenceFragment> getDetailFragmentClass() { return AppLaunchSettings.class; } @VisibleForTesting CharSequence getSubtext() { return mContext.getText(isLinkHandlingAllowed() ? R.string.app_link_open_always : R.string.app_link_open_never); } @VisibleForTesting boolean isLinkHandlingAllowed() { final DomainVerificationUserState userState = IntentPickerUtils.getDomainVerificationUserState(mDomainVerificationManager, mPackageName); return userState == null ? false : userState.isLinkHandlingAllowed(); } }
tests/robotests/src/com/android/settings/applications/appinfo/AppOpenByDefaultPreferenceControllerTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; Loading @@ -33,6 +34,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.verify.domain.DomainVerificationManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading Loading @@ -66,6 +68,8 @@ public class AppOpenByDefaultPreferenceControllerTest { private Preference mPreference; @Mock private PackageManager mPackageManager; @Mock private DomainVerificationManager mDomainVerificationManager; private Context mContext; private AppOpenByDefaultPreferenceController mController; Loading @@ -78,6 +82,8 @@ public class AppOpenByDefaultPreferenceControllerTest { mController.setParentFragment(mFragment); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getSystemService(DomainVerificationManager.class)).thenReturn( mDomainVerificationManager); } @Test Loading Loading @@ -194,10 +200,27 @@ public class AppOpenByDefaultPreferenceControllerTest { final AppEntry appEntry = mock(AppEntry.class); appEntry.info = new ApplicationInfo(); when(mFragment.getAppEntry()).thenReturn(appEntry); doReturn(true).when(mController).isLinkHandlingAllowed(); mController.updateState(mPreference); verify(mPreference).setVisible(true); verify(mPreference).setSummary(any()); } @Test public void getSubtext_allowedLinkHandling_returnAllowedString() { final String allowdedString = "Allow app to open supported links"; doReturn(true).when(mController).isLinkHandlingAllowed(); assertThat(mController.getSubtext()).isEqualTo(allowdedString); } @Test public void getSubtext_notAllowedLinkHandling_returnNotAllowedString() { final String notAllowdedString = "Don’t allow app to open links"; doReturn(false).when(mController).isLinkHandlingAllowed(); assertThat(mController.getSubtext()).isEqualTo(notAllowdedString); } }