diff options
| author | 2022-11-14 09:38:07 +0000 | |
|---|---|---|
| committer | 2022-11-14 09:38:07 +0000 | |
| commit | bb9269460edfea9772bbf18ec4cc2a54b2f82161 (patch) | |
| tree | eab925a889e213648c537efe8d9a8cc547d0de1b | |
| parent | ff0748833bb954eb33decde98168ca52b635ab5d (diff) | |
| parent | dcb195594dd69f612478c3efb5ad815156b0d295 (diff) | |
Merge "Configuring Default CrossProfileIntentFilters for Clone profile"
| -rw-r--r-- | services/core/java/com/android/server/pm/DefaultCrossProfileIntentFiltersUtils.java | 131 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/UserTypeFactory.java | 5 |
2 files changed, 136 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/DefaultCrossProfileIntentFiltersUtils.java b/services/core/java/com/android/server/pm/DefaultCrossProfileIntentFiltersUtils.java index cac93236f411..ceaaefd4085a 100644 --- a/services/core/java/com/android/server/pm/DefaultCrossProfileIntentFiltersUtils.java +++ b/services/core/java/com/android/server/pm/DefaultCrossProfileIntentFiltersUtils.java @@ -319,4 +319,135 @@ public class DefaultCrossProfileIntentFiltersUtils { HOME, MOBILE_NETWORK_SETTINGS); } + + /** + * Clone profile's DefaultCrossProfileIntentFilter + */ + + /* + Allowing media capture from clone to parent profile as clone profile would not have camera + */ + private static final DefaultCrossProfileIntentFilter CLONE_TO_PARENT_MEDIA_CAPTURE = + new DefaultCrossProfileIntentFilter.Builder( + DefaultCrossProfileIntentFilter.Direction.TO_PARENT, + /* flags= */ 0x00000018, // 0x00000018 means FLAG_IS_PACKAGE_FOR_FILTER + // and FLAG_ALLOW_CHAINED_RESOLUTION set + /* letsPersonalDataIntoProfile= */ false) + .addAction(MediaStore.ACTION_IMAGE_CAPTURE) + .addAction(MediaStore.ACTION_IMAGE_CAPTURE_SECURE) + .addAction(MediaStore.ACTION_VIDEO_CAPTURE) + .addAction(MediaStore.Audio.Media.RECORD_SOUND_ACTION) + .addAction(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA) + .addAction(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE) + .addAction(MediaStore.INTENT_ACTION_VIDEO_CAMERA) + .addCategory(Intent.CATEGORY_DEFAULT) + .build(); + + /* + Allowing send action from clone to parent profile to share content from clone apps to parent + apps + */ + private static final DefaultCrossProfileIntentFilter CLONE_TO_PARENT_SEND_ACTION = + new DefaultCrossProfileIntentFilter.Builder( + DefaultCrossProfileIntentFilter.Direction.TO_PARENT, + /* flags= */ 0x00000018, // 0x00000018 means FLAG_IS_PACKAGE_FOR_FILTER + // and FLAG_ALLOW_CHAINED_RESOLUTION set + /* letsPersonalDataIntoProfile= */ false) + .addAction(Intent.ACTION_SEND) + .addAction(Intent.ACTION_SEND_MULTIPLE) + .addAction(Intent.ACTION_SENDTO) + .addDataType("*/*") + .build(); + + /* + Allowing send action from parent to clone profile to share content from parent apps to clone + apps + */ + private static final DefaultCrossProfileIntentFilter PARENT_TO_CLONE_SEND_ACTION = + new DefaultCrossProfileIntentFilter.Builder( + DefaultCrossProfileIntentFilter.Direction.TO_PROFILE, + /* flags= */ 0x00000018, // 0x00000018 means FLAG_IS_PACKAGE_FOR_FILTER + // and FLAG_ALLOW_CHAINED_RESOLUTION set + /* letsPersonalDataIntoProfile= */ false) + .addAction(Intent.ACTION_SEND) + .addAction(Intent.ACTION_SEND_MULTIPLE) + .addAction(Intent.ACTION_SENDTO) + .addDataType("*/*") + .build(); + + /* + Allowing view action from clone to parent profile to open any app-links or web links + */ + private static final DefaultCrossProfileIntentFilter CLONE_TO_PARENT_VIEW_ACTION = + new DefaultCrossProfileIntentFilter.Builder( + DefaultCrossProfileIntentFilter.Direction.TO_PARENT, + /* flags= */ 0x00000018, // 0x00000018 means FLAG_IS_PACKAGE_FOR_FILTER + // and FLAG_ALLOW_CHAINED_RESOLUTION set + /* letsPersonalDataIntoProfile= */ false) + .addAction(Intent.ACTION_VIEW) + .addDataScheme("https") + .addDataScheme("http") + .build(); + + /* + Allowing view action from parent to clone profile to open any app-links or web links + */ + private static final DefaultCrossProfileIntentFilter PARENT_TO_CLONE_VIEW_ACTION = + new DefaultCrossProfileIntentFilter.Builder( + DefaultCrossProfileIntentFilter.Direction.TO_PROFILE, + /* flags= */ 0x00000018, // 0x00000018 means FLAG_IS_PACKAGE_FOR_FILTER + // and FLAG_ALLOW_CHAINED_RESOLUTION set + /* letsPersonalDataIntoProfile= */ false) + .addAction(Intent.ACTION_VIEW) + .addDataScheme("https") + .addDataScheme("http") + .build(); + + /* + Allowing pick,insert and edit action from clone to parent profile to open picker or contacts + insert/edit. + */ + private static final DefaultCrossProfileIntentFilter CLONE_TO_PARENT_PICK_INSERT_ACTION = + new DefaultCrossProfileIntentFilter.Builder( + DefaultCrossProfileIntentFilter.Direction.TO_PARENT, + /* flags= */ 0x00000018, // 0x00000018 means FLAG_IS_PACKAGE_FOR_FILTER + // and FLAG_ALLOW_CHAINED_RESOLUTION set + /* letsPersonalDataIntoProfile= */ false) + .addAction(Intent.ACTION_PICK) + .addAction(Intent.ACTION_GET_CONTENT) + .addAction(Intent.ACTION_EDIT) + .addAction(Intent.ACTION_INSERT) + .addAction(Intent.ACTION_INSERT_OR_EDIT) + .addDataType("*/*") + .build(); + + /* + Allowing pick,insert and edit action from parent to clone profile to open picker + */ + private static final DefaultCrossProfileIntentFilter PARENT_TO_CLONE_PICK_INSERT_ACTION = + new DefaultCrossProfileIntentFilter.Builder( + DefaultCrossProfileIntentFilter.Direction.TO_PROFILE, + /* flags= */ 0x00000018, // 0x00000018 means FLAG_IS_PACKAGE_FOR_FILTER + // and FLAG_ALLOW_CHAINED_RESOLUTION set + /* letsPersonalDataIntoProfile= */ false) + .addAction(Intent.ACTION_PICK) + .addAction(Intent.ACTION_GET_CONTENT) + .addAction(Intent.ACTION_EDIT) + .addAction(Intent.ACTION_INSERT) + .addAction(Intent.ACTION_INSERT_OR_EDIT) + .addDataType("*/*") + .build(); + + public static List<DefaultCrossProfileIntentFilter> getDefaultCloneProfileFilters() { + return Arrays.asList( + PARENT_TO_CLONE_SEND_ACTION, + PARENT_TO_CLONE_VIEW_ACTION, + PARENT_TO_CLONE_PICK_INSERT_ACTION, + CLONE_TO_PARENT_MEDIA_CAPTURE, + CLONE_TO_PARENT_SEND_ACTION, + CLONE_TO_PARENT_VIEW_ACTION, + CLONE_TO_PARENT_PICK_INSERT_ACTION + + ); + } } diff --git a/services/core/java/com/android/server/pm/UserTypeFactory.java b/services/core/java/com/android/server/pm/UserTypeFactory.java index c35fe174415d..b6a58ab01cf9 100644 --- a/services/core/java/com/android/server/pm/UserTypeFactory.java +++ b/services/core/java/com/android/server/pm/UserTypeFactory.java @@ -126,6 +126,7 @@ public final class UserTypeFactory { .setCrossProfileIntentFilterAccessControl( CrossProfileIntentFilter.ACCESS_LEVEL_SYSTEM) .setIsCredentialSharableWithParent(true) + .setDefaultCrossProfileIntentFilters(getDefaultCloneCrossProfileIntentFilter()) .setDefaultUserProperties(new UserProperties.Builder() .setStartWithParent(true) .setShowInLauncher(UserProperties.SHOW_IN_LAUNCHER_WITH_PARENT) @@ -310,6 +311,10 @@ public final class UserTypeFactory { return DefaultCrossProfileIntentFiltersUtils.getDefaultManagedProfileFilters(); } + private static List<DefaultCrossProfileIntentFilter> getDefaultCloneCrossProfileIntentFilter() { + return DefaultCrossProfileIntentFiltersUtils.getDefaultCloneProfileFilters(); + } + /** * Reads the given xml parser to obtain device user-type customization, and updates the given * map of {@link UserTypeDetails.Builder}s accordingly. |