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

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

Merge "Add systemOnly attribute for role."

parents 8d679bd8 a2c66a04
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -265,7 +265,11 @@
      ~ @see com.android.settings.applications.defaultapps.DefaultEmergencyPicker
      ~ @see com.android.phone.EmergencyAssistanceHelper
      -->
    <role name="android.app.role.EMERGENCY" exclusive="true" label="@string/role_label_emergency">
    <role
        name="android.app.role.EMERGENCY"
        exclusive="true"
        label="@string/role_label_emergency"
        systemOnly="true">
        <required-components>
            <activity>
                <intent-filter>
+25 −11
Original line number Diff line number Diff line
@@ -94,6 +94,11 @@ public class Role {
     */
    private final boolean mShowNone;

    /**
     * Whether this role only accepts system apps as its holders.
     */
    private final boolean mSystemOnly;

    /**
     * The required components for an application to qualify for this role.
     */
@@ -119,7 +124,7 @@ public class Role {
    private final List<PreferredActivity> mPreferredActivities;

    public Role(@NonNull String name, @Nullable RoleBehavior behavior, boolean exclusive,
            @StringRes int labelResource, boolean showNone,
            @StringRes int labelResource, boolean showNone, boolean systemOnly,
            @NonNull List<RequiredComponent> requiredComponents, @NonNull List<String> permissions,
            @NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) {
        mName = name;
@@ -127,6 +132,7 @@ public class Role {
        mExclusive = exclusive;
        mLabelResource = labelResource;
        mShowNone = showNone;
        mSystemOnly = systemOnly;
        mRequiredComponents = requiredComponents;
        mPermissions = permissions;
        mAppOps = appOps;
@@ -390,6 +396,10 @@ public class Role {
            return false;
        }

        if (mSystemOnly && (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
            return false;
        }

        // TODO: STOPSHIP: Check for disabled packages?

        // TODO: STOPSHIP: Add and check PackageManager.getSharedLibraryInfo().
@@ -553,6 +563,8 @@ public class Role {
                + ", mBehavior=" + mBehavior
                + ", mExclusive=" + mExclusive
                + ", mLabelResource=" + mLabelResource
                + ", mShowNone=" + mShowNone
                + ", mSystemOnly=" + mSystemOnly
                + ", mRequiredComponents=" + mRequiredComponents
                + ", mPermissions=" + mPermissions
                + ", mAppOps=" + mAppOps
@@ -568,20 +580,22 @@ public class Role {
        if (object == null || getClass() != object.getClass()) {
            return false;
        }
        Role role = (Role) object;
        return mExclusive == role.mExclusive
                && mLabelResource == role.mLabelResource
                && Objects.equals(mName, role.mName)
                && Objects.equals(mBehavior, role.mBehavior)
                && Objects.equals(mRequiredComponents, role.mRequiredComponents)
                && Objects.equals(mPermissions, role.mPermissions)
                && Objects.equals(mAppOps, role.mAppOps)
                && Objects.equals(mPreferredActivities, role.mPreferredActivities);
        Role that = (Role) object;
        return mExclusive == that.mExclusive
                && mLabelResource == that.mLabelResource
                && mShowNone == that.mShowNone
                && mSystemOnly == that.mSystemOnly
                && mName.equals(that.mName)
                && Objects.equals(mBehavior, that.mBehavior)
                && mRequiredComponents.equals(that.mRequiredComponents)
                && mPermissions.equals(that.mPermissions)
                && mAppOps.equals(that.mAppOps)
                && mPreferredActivities.equals(that.mPreferredActivities);
    }

    @Override
    public int hashCode() {
        return Objects.hash(mName, mBehavior, mExclusive, mLabelResource,
        return Objects.hash(mName, mBehavior, mExclusive, mLabelResource, mShowNone, mSystemOnly,
                mRequiredComponents, mPermissions, mAppOps, mPreferredActivities);
    }
}
+5 −2
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ public class Roles {
    private static final String ATTRIBUTE_EXCLUSIVE = "exclusive";
    private static final String ATTRIBUTE_LABEL = "label";
    private static final String ATTRIBUTE_SHOW_NONE = "showNone";
    private static final String ATTRIBUTE_SYSTEM_ONLY = "systemOnly";
    private static final String ATTRIBUTE_PERMISSION = "permission";
    private static final String ATTRIBUTE_SCHEME = "scheme";
    private static final String ATTRIBUTE_MIME_TYPE = "mimeType";
@@ -324,6 +325,8 @@ public class Roles {
            return null;
        }

        boolean systemOnly = getAttributeBooleanValue(parser, ATTRIBUTE_SYSTEM_ONLY, false);

        List<RequiredComponent> requiredComponents = null;
        List<String> permissions = null;
        List<AppOp> appOps = null;
@@ -390,8 +393,8 @@ public class Roles {
        if (preferredActivities == null) {
            preferredActivities = Collections.emptyList();
        }
        return new Role(name, behavior, exclusive, labelResource, showNone, requiredComponents,
                permissions, appOps, preferredActivities);
        return new Role(name, behavior, exclusive, labelResource, showNone, systemOnly,
                requiredComponents, permissions, appOps, preferredActivities);
    }

    @NonNull