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

Commit 3453e081 authored by Fabrice Di Meglio's avatar Fabrice Di Meglio
Browse files

Add user selectable Default Browser feature - part 6

- if a default Browser is not defined and if a Browser App
is selected into the disambiguation dialog, then make it as
the default Browser
- clear default Browser saved data (package name) when
the default Browser App is removed

See bug #20144393

Change-Id: Ia8621d7a61ec2cb60deded9d70f75f1e1d88d123
parent 0a008049
Loading
Loading
Loading
Loading
+27 −19
Original line number Diff line number Diff line
@@ -743,13 +743,20 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
                    if (r.match > bestMatch) bestMatch = r.match;
                }
                if (alwaysCheck) {
                    PackageManager pm = getPackageManager();
                    final int userId = getUserId();
                    final PackageManager pm = getPackageManager();

                    // Set the preferred Activity
                    pm.addPreferredActivity(filter, bestMatch, set, intent.getComponent());

                    if (ri.handleAllWebDataURI) {
                        // Set default Browser if needed
                        final String packageName = pm.getDefaultBrowserPackageName(userId);
                        if (TextUtils.isEmpty(packageName)) {
                            pm.setDefaultBrowserPackageName(ri.activityInfo.packageName, userId);
                        }
                    } else {
                        // Update Domain Verification status
                    int userId = getUserId();
                        ComponentName cn = intent.getComponent();
                        String packageName = cn.getPackageName();
                        String dataScheme = (data != null) ? data.getScheme() : null;
@@ -767,6 +774,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
                                    PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS,
                                    userId);
                        }
                    }
                } else {
                    try {
                        AppGlobals.getPackageManager().setLastChosenActivity(intent,
+21 −5
Original line number Diff line number Diff line
@@ -9101,7 +9101,9 @@ public class PackageManagerService extends IPackageManager.Stub {
        synchronized (mPackages) {
            result = mSettings.updateIntentFilterVerificationStatusLPw(packageName, status, userId);
        }
        if (result) {
            scheduleWritePackageRestrictionsLocked(userId);
        }
        return result;
    }
@@ -9138,9 +9140,11 @@ public class PackageManagerService extends IPackageManager.Stub {
    public boolean setDefaultBrowserPackageName(String packageName, int userId) {
        synchronized (mPackages) {
            boolean result = mSettings.setDefaultBrowserPackageNameLPr(packageName, userId);
            if (packageName != null) {
                result |= updateIntentVerificationStatus(packageName,
                        PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS,
                        UserHandle.myUserId());
            }
            return result;
        }
    }
@@ -11854,6 +11858,7 @@ public class PackageManagerService extends IPackageManager.Stub {
            if (deletedPs != null) {
                if ((flags&PackageManager.DELETE_KEEP_DATA) == 0) {
                    clearIntentFilterVerificationsLPw(deletedPs.name, UserHandle.USER_ALL);
                    clearDefaultBrowserIfNeeded(packageName);
                    if (outInfo != null) {
                        mSettings.mKeySetManagerService.removeAppKeySetDataLPw(packageName);
                        outInfo.removedAppId = mSettings.removePackageLPw(packageName);
@@ -12757,6 +12762,17 @@ public class PackageManagerService extends IPackageManager.Stub {
        }
    }
    void clearDefaultBrowserIfNeeded(String packageName) {
        for (int oneUserId : sUserManager.getUserIds()) {
            String defaultBrowserPackageName = getDefaultBrowserPackageName(oneUserId);
            if (TextUtils.isEmpty(defaultBrowserPackageName)) continue;
            if (packageName.equals(defaultBrowserPackageName)) {
                setDefaultBrowserPackageName(null, oneUserId);
            }
        }
    }
    @Override
    public void resetPreferredActivities(int userId) {
        /* TODO: Actually use userId. Why is it being passed in? */