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

Commit 7e7d79ef authored by Chris Tate's avatar Chris Tate Committed by Android (Google) Code Review
Browse files

Merge "Make "Ask every time" actually work that way" into mnc-dev

parents 81f3a85a 56f0ff3c
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 {