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

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

Merge "Refine the summary of "Open by default" in "App info" page" into sc-dev

parents 437e7e7a 41db38c0
Loading
Loading
Loading
Loading
+22 −9
Original line number Diff line number Diff line
@@ -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. */
@@ -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);
        }
@@ -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();
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -66,6 +68,8 @@ public class AppOpenByDefaultPreferenceControllerTest {
    private Preference mPreference;
    @Mock
    private PackageManager mPackageManager;
    @Mock
    private DomainVerificationManager mDomainVerificationManager;

    private Context mContext;
    private AppOpenByDefaultPreferenceController mController;
@@ -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
@@ -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);
    }
}