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

Commit 6786d8cd authored by Fan Zhang's avatar Fan Zhang
Browse files

Mark only browser as default in app detail page

Change-Id: I8112d859ba788a1dc67c44b5e0de668c0fc13169
Fix: 35307728
Test: make RunSettingsRoboTests
parent 42df1dca
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1076,8 +1076,8 @@ public class InstalledAppDetails extends AppInfoBase
        }
        pref = findPreference("default_browser");
        if (pref != null) {
            pref.setSummary(
                    DefaultBrowserPreferenceController.isBrowserDefault(mPackageName, context)
            pref.setSummary(new DefaultBrowserPreferenceController(context)
                    .isBrowserDefault(mPackageName, mUserId)
                    ? R.string.yes : R.string.no);
        }
        pref = findPreference("default_phone_app");
+10 −5
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.UserHandle;
import android.support.v7.preference.Preference;
import android.text.TextUtils;

@@ -96,9 +95,15 @@ public class DefaultBrowserPreferenceController extends DefaultAppPreferenceCont
    /**
     * Whether or not the pkg is the default browser
     */
    public static boolean isBrowserDefault(String pkg, Context context) {
        String defaultPackage = context.getPackageManager()
                .getDefaultBrowserPackageNameAsUser(UserHandle.myUserId());
        return defaultPackage != null && defaultPackage.equals(pkg);
    public boolean isBrowserDefault(String pkg, int userId) {
        String defaultPackage = mPackageManager.getDefaultBrowserPackageNameAsUser(userId);
        if (defaultPackage != null) {
            return defaultPackage.equals(pkg);
        }

        final List<ResolveInfo> list = mPackageManager.queryIntentActivitiesAsUser(BROWSE_PROBE,
                PackageManager.MATCH_ALL, userId);
        // There is only 1 app, it must be the default browser.
        return list != null && list.size() == 1;
    }
}
+14 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.applications.defaultapps;

import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.os.UserManager;
import android.support.v7.preference.Preference;

@@ -35,6 +36,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;

import java.util.Arrays;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
@@ -85,4 +88,15 @@ public class DefaultBrowserPreferenceControllerTest {

        verify(mPackageManager).getDefaultBrowserPackageNameAsUser(anyInt());
    }

    @Test
    public void isBrowserDefault_onlyApp_shouldReturnTrue() {
        final String testPkg = "pkg";
        when(mPackageManager.getDefaultBrowserPackageNameAsUser(anyInt()))
                .thenReturn(null);
        when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
                .thenReturn(Arrays.asList(new ResolveInfo()));

        assertThat(mController.isBrowserDefault(testPkg, 0)).isTrue();
    }
}