diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-04-24 05:41:35 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-04-24 05:41:35 +0000 |
| commit | edf00ca3462d8f6cb0de73bc6f672244ac30dd16 (patch) | |
| tree | 9dceb721d42763c28410e46768fb46878fda8d86 /src | |
| parent | d95026463fc0db19b97f6c7f834d6fe1aba899e3 (diff) | |
| parent | 9844e24a9e453bf1a8df5f0e10f820d9cbe97b36 (diff) | |
| download | android_packages_apps_PackageInstaller-edf00ca3462d8f6cb0de73bc6f672244ac30dd16.tar.gz android_packages_apps_PackageInstaller-edf00ca3462d8f6cb0de73bc6f672244ac30dd16.tar.bz2 android_packages_apps_PackageInstaller-edf00ca3462d8f6cb0de73bc6f672244ac30dd16.zip | |
Merge "Don't allow requesting the assistant role." into qt-dev
Diffstat (limited to 'src')
3 files changed, 43 insertions, 16 deletions
diff --git a/src/com/android/packageinstaller/role/model/Role.java b/src/com/android/packageinstaller/role/model/Role.java index eb63cd24..f3275d78 100644 --- a/src/com/android/packageinstaller/role/model/Role.java +++ b/src/com/android/packageinstaller/role/model/Role.java @@ -112,6 +112,12 @@ public class Role { private final int mRequestTitleResource; /** + * Whether this role is requestable by applications with + * {@link android.app.role.RoleManager#createRequestRoleIntent(String)}. + */ + private final boolean mRequestable; + + /** * The string resource for the short label of this role, currently used when in a list of roles. */ @StringRes @@ -156,9 +162,10 @@ public class Role { public Role(@NonNull String name, @Nullable RoleBehavior behavior, @StringRes int descriptionResource, boolean exclusive, @StringRes int labelResource, @StringRes int requestDescriptionResource, @StringRes int requestTitleResource, - @StringRes int shortLabelResource, boolean showNone, boolean systemOnly, - @NonNull List<RequiredComponent> requiredComponents, @NonNull List<String> permissions, - @NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) { + boolean requestable, @StringRes int shortLabelResource, boolean showNone, + boolean systemOnly, @NonNull List<RequiredComponent> requiredComponents, + @NonNull List<String> permissions, @NonNull List<AppOp> appOps, + @NonNull List<PreferredActivity> preferredActivities) { mName = name; mBehavior = behavior; mDescriptionResource = descriptionResource; @@ -166,6 +173,7 @@ public class Role { mLabelResource = labelResource; mRequestDescriptionResource = requestDescriptionResource; mRequestTitleResource = requestTitleResource; + mRequestable = requestable; mShortLabelResource = shortLabelResource; mShowNone = showNone; mSystemOnly = systemOnly; @@ -209,6 +217,10 @@ public class Role { return mRequestTitleResource; } + public boolean isRequestable() { + return mRequestable; + } + @StringRes public int getShortLabelResource() { return mShortLabelResource; diff --git a/src/com/android/packageinstaller/role/model/Roles.java b/src/com/android/packageinstaller/role/model/Roles.java index 47eea835..1a3af42b 100644 --- a/src/com/android/packageinstaller/role/model/Roles.java +++ b/src/com/android/packageinstaller/role/model/Roles.java @@ -76,6 +76,7 @@ public class Roles { private static final String ATTRIBUTE_LABEL = "label"; private static final String ATTRIBUTE_REQUEST_TITLE = "requestTitle"; private static final String ATTRIBUTE_REQUEST_DESCRIPTION = "requestDescription"; + private static final String ATTRIBUTE_REQUESTABLE = "requestable"; private static final String ATTRIBUTE_SHORT_LABEL = "shortLabel"; private static final String ATTRIBUTE_SHOW_NONE = "showNone"; private static final String ATTRIBUTE_SYSTEM_ONLY = "systemOnly"; @@ -305,18 +306,26 @@ public class Roles { return null; } - Integer requestDescriptionResource = requireAttributeResourceValue(parser, - ATTRIBUTE_REQUEST_DESCRIPTION, 0, TAG_ROLE); - if (requestDescriptionResource == null) { - skipCurrentTag(parser); - return null; - } + boolean requestable = getAttributeBooleanValue(parser, ATTRIBUTE_REQUESTABLE, true); + Integer requestDescriptionResource; + Integer requestTitleResource; + if (requestable) { + requestDescriptionResource = requireAttributeResourceValue(parser, + ATTRIBUTE_REQUEST_DESCRIPTION, 0, TAG_ROLE); + if (requestDescriptionResource == null) { + skipCurrentTag(parser); + return null; + } - Integer requestTitleResource = requireAttributeResourceValue(parser, - ATTRIBUTE_REQUEST_TITLE, 0, TAG_ROLE); - if (requestTitleResource == null) { - skipCurrentTag(parser); - return null; + requestTitleResource = requireAttributeResourceValue(parser, ATTRIBUTE_REQUEST_TITLE, 0, + TAG_ROLE); + if (requestTitleResource == null) { + skipCurrentTag(parser); + return null; + } + } else { + requestDescriptionResource = 0; + requestTitleResource = 0; } Integer shortLabelResource = requireAttributeResourceValue(parser, ATTRIBUTE_SHORT_LABEL, 0, @@ -402,8 +411,8 @@ public class Roles { preferredActivities = Collections.emptyList(); } return new Role(name, behavior, descriptionResource, exclusive, labelResource, - requestDescriptionResource, requestTitleResource, shortLabelResource, showNone, - systemOnly, requiredComponents, permissions, appOps, preferredActivities); + requestDescriptionResource, requestTitleResource, requestable, shortLabelResource, + showNone, systemOnly, requiredComponents, permissions, appOps, preferredActivities); } @NonNull diff --git a/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java b/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java index 9b06c422..913cceae 100644 --- a/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java +++ b/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java @@ -90,6 +90,12 @@ public class RequestRoleActivity extends FragmentActivity { return; } + if (!role.isRequestable()) { + Log.e(LOG_TAG, "Role is not requestable: " + mRoleName); + finish(); + return; + } + if (!role.isExclusive()) { Log.e(LOG_TAG, "Role is not exclusive: " + mRoleName); finish(); |
