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

Commit 13845aea authored by Chris Tate's avatar Chris Tate Committed by Android Git Automerger
Browse files

am b2d4c550: am b47890c4: am 7e7d79ef: Merge "Make "Ask every time" actually...

am b2d4c550: am b47890c4: am 7e7d79ef: Merge "Make "Ask every time" actually work that way" into mnc-dev

* commit 'b2d4c550':
  Make "Ask every time" actually work that way
parents 1058bf0f b2d4c550
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.commands.pm;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;


import android.app.ActivityManager;
import android.app.ActivityManager;
@@ -840,7 +841,7 @@ public final class Pm {
        return Integer.toString(result);
        return Integer.toString(result);
    }
    }


    // pm set-app-link [--user USER_ID] PACKAGE {always|ask|never|undefined}
    // pm set-app-link [--user USER_ID] PACKAGE {always|ask|always-ask|never|undefined}
    private int runSetAppLink() {
    private int runSetAppLink() {
        int userId = UserHandle.USER_OWNER;
        int userId = UserHandle.USER_OWNER;


@@ -889,6 +890,10 @@ public final class Pm {
                newMode = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
                newMode = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
                break;
                break;


            case "always-ask":
                newMode = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
                break;

            case "never":
            case "never":
                newMode = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
                newMode = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
                break;
                break;
+5 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package android.content.pm;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;


import android.os.Parcel;
import android.os.Parcel;
@@ -199,6 +200,10 @@ public final class IntentFilterVerificationInfo implements Parcelable {
                sb.append("never");
                sb.append("never");
                break;
                break;


            case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK:
                sb.append("always-ask");
                break;

            case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED:
            case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED:
            default:
            default:
                sb.append("undefined");
                sb.append("undefined");
+12 −0
Original line number Original line Diff line number Diff line
@@ -1072,6 +1072,18 @@ public abstract class PackageManager {
     */
     */
    public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER = 3;
    public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER = 3;


    /**
     * Used as the {@code status} argument for {@link PackageManager#updateIntentVerificationStatus}
     * to indicate that this app should always be considered as an ambiguous candidate for
     * handling the matching Intent even if there are other candidate apps in the "always"
     * state.  Put another way: if there are any 'always ask' apps in a set of more than
     * one candidate app, then a disambiguation is *always* presented even if there is
     * another candidate app with the 'always' state.
     *
     * @hide
     */
    public static final int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK = 4;

    /**
    /**
     * Can be used as the {@code millisecondsToDelay} argument for
     * Can be used as the {@code millisecondsToDelay} argument for
     * {@link PackageManager#extendVerificationTimeout}. This is the
     * {@link PackageManager#extendVerificationTimeout}. This is the
+31 −2
Original line number Original line Diff line number Diff line
@@ -56,6 +56,7 @@ import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATIO
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
import static android.content.pm.PackageManager.MATCH_ALL;
import static android.content.pm.PackageManager.MATCH_ALL;
import static android.content.pm.PackageManager.MOVE_FAILED_DOESNT_EXIST;
import static android.content.pm.PackageManager.MOVE_FAILED_DOESNT_EXIST;
import static android.content.pm.PackageManager.MOVE_FAILED_INTERNAL_ERROR;
import static android.content.pm.PackageManager.MOVE_FAILED_INTERNAL_ERROR;
@@ -4706,6 +4707,7 @@ public class PackageManagerService extends IPackageManager.Stub {
        ArrayList<ResolveInfo> result = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> result = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> alwaysList = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> alwaysList = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> undefinedList = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> undefinedList = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> alwaysAskList = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> neverList = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> neverList = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> matchAllList = new ArrayList<ResolveInfo>();
        ArrayList<ResolveInfo> matchAllList = new ArrayList<ResolveInfo>();
@@ -4742,6 +4744,11 @@ public class PackageManagerService extends IPackageManager.Stub {
                            Slog.i(TAG, "  + never: " + info.activityInfo.packageName);
                            Slog.i(TAG, "  + never: " + info.activityInfo.packageName);
                        }
                        }
                        neverList.add(info);
                        neverList.add(info);
                    } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK) {
                        if (DEBUG_DOMAIN_VERIFICATION) {
                            Slog.i(TAG, "  + always-ask: " + info.activityInfo.packageName);
                        }
                        alwaysAskList.add(info);
                    } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED ||
                    } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED ||
                            status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK) {
                            status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK) {
                        if (DEBUG_DOMAIN_VERIFICATION) {
                        if (DEBUG_DOMAIN_VERIFICATION) {
@@ -4751,6 +4758,10 @@ public class PackageManagerService extends IPackageManager.Stub {
                    }
                    }
                }
                }
            }
            }
            // We'll want to include browser possibilities in a few cases
            boolean includeBrowser = false;
            // First try to add the "always" resolution(s) for the current user, if any
            // First try to add the "always" resolution(s) for the current user, if any
            if (alwaysList.size() > 0) {
            if (alwaysList.size() > 0) {
                result.addAll(alwaysList);
                result.addAll(alwaysList);
@@ -4759,7 +4770,7 @@ public class PackageManagerService extends IPackageManager.Stub {
                    == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) {
                    == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) {
                result.add(xpDomainInfo.resolveInfo);
                result.add(xpDomainInfo.resolveInfo);
            } else {
            } else {
                // Add all undefined Apps as we want them to appear in the Disambiguation dialog.
                // Add all undefined apps as we want them to appear in the disambiguation dialog.
                result.addAll(undefinedList);
                result.addAll(undefinedList);
                if (xpDomainInfo != null && (
                if (xpDomainInfo != null && (
                        xpDomainInfo.bestDomainVerificationStatus
                        xpDomainInfo.bestDomainVerificationStatus
@@ -4768,7 +4779,25 @@ public class PackageManagerService extends IPackageManager.Stub {
                        == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK)) {
                        == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK)) {
                    result.add(xpDomainInfo.resolveInfo);
                    result.add(xpDomainInfo.resolveInfo);
                }
                }
                // Also add Browsers (all of them or only the default one)
                includeBrowser = true;
            }
            // The presence of any 'always ask' alternatives means we'll also offer browsers.
            // If there were 'always' entries their preferred order has been set, so we also
            // back that off to make the alternatives equivalent
            if (alwaysAskList.size() > 0) {
                for (ResolveInfo i : result) {
                    i.preferredOrder = 0;
                }
                result.addAll(alwaysAskList);
                includeBrowser = true;
            }
            if (includeBrowser) {
                // Also add browsers (all of them or only the default one)
                if (DEBUG_DOMAIN_VERIFICATION) {
                    Slog.v(TAG, "   ...including browsers in candidate set");
                }
                if ((matchFlags & MATCH_ALL) != 0) {
                if ((matchFlags & MATCH_ALL) != 0) {
                    result.addAll(matchAllList);
                    result.addAll(matchAllList);
                } else {
                } else {