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

Commit d5d8c6e8 authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Add Context.sendOrderedBroadcastMultiplePermissions

Flag: com.android.bluetooth.ordered_broadcast_multiple_permissions
Test: mma -j68
Bug: 344915071
Change-Id: I8ecf003dc5e1babdbb4e104f548eef9d3562174e
parent 8919ed06
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3775,6 +3775,7 @@ package android.content {
    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.content.Intent registerReceiverForAllUsers(@Nullable android.content.BroadcastReceiver, @NonNull android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler, int);
    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, @Nullable android.os.Bundle);
    method public void sendBroadcastMultiplePermissions(@NonNull android.content.Intent, @NonNull String[], @Nullable android.app.BroadcastOptions);
    method @FlaggedApi("android.os.ordered_broadcast_multiple_permissions") public void sendOrderedBroadcastMultiplePermissions(@NonNull android.content.Intent, @NonNull String[], @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle, @Nullable android.os.Bundle);
    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle);
    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @Nullable android.os.Bundle, @NonNull android.os.UserHandle);
    field public static final String AMBIENT_CONTEXT_SERVICE = "ambient_context";
+25 −2
Original line number Diff line number Diff line
@@ -1552,6 +1552,17 @@ class ContextImpl extends Context {
    public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
            String receiverPermission, int appOp, Bundle options, BroadcastReceiver resultReceiver,
            Handler scheduler, int initialCode, String initialData, Bundle initialExtras) {
        String[] receiverPermissions = receiverPermission == null ? null
                : new String[] {receiverPermission};
        sendOrderedBroadcastAsUserMultiplePermissions(intent, user, receiverPermissions, appOp,
                options, resultReceiver, scheduler, initialCode, initialData, initialExtras);
    }

    @Override
    public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user,
            String[] receiverPermissions, int appOp, Bundle options,
            BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
            String initialData, Bundle initialExtras) {
        IIntentReceiver rd = null;
        if (resultReceiver != null) {
            if (mPackageInfo != null) {
@@ -1571,8 +1582,6 @@ class ContextImpl extends Context {
            }
        }
        String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
        String[] receiverPermissions = receiverPermission == null ? null
                : new String[] {receiverPermission};
        try {
            intent.prepareToLeaveProcess(this);
            ActivityManager.getService().broadcastIntentWithFeature(
@@ -1598,6 +1607,20 @@ class ContextImpl extends Context {
                initialExtras);
    }

    @Override
    public void sendOrderedBroadcastMultiplePermissions(Intent intent, String[] receiverPermissions,
            String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler,
            int initialCode, String initialData, @Nullable Bundle initialExtras,
            @Nullable Bundle options) {
        int intAppOp = AppOpsManager.OP_NONE;
        if (!TextUtils.isEmpty(receiverAppOp)) {
            intAppOp = AppOpsManager.strOpToOp(receiverAppOp);
        }
        sendOrderedBroadcastAsUserMultiplePermissions(intent, getUser(), receiverPermissions,
                intAppOp, options, resultReceiver, scheduler, initialCode, initialData,
                initialExtras);
    }

    @Override
    public void sendOrderedBroadcast(Intent intent, int initialCode, String receiverPermission,
            String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler,
+30 −0
Original line number Diff line number Diff line
@@ -2915,6 +2915,21 @@ public abstract class Context {
            BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode,
            @Nullable String initialData, @Nullable  Bundle initialExtras);

    /**
     * Similar to above but takes array of names of permissions that a receiver must hold in order
     * to receive your broadcast. If empty, no permissions are required.
     *
     * @see #sendOrderedBroadcastAsUser(Intent, UserHandle, String,
     *       BroadcastReceiver, Handler, int, String, Bundle)
     * @hide
     */
    @SuppressWarnings("HiddenAbstractMethod")
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
    public abstract void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent,
            UserHandle user, String[] receiverPermissions, int appOp, Bundle options,
            BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
            String initialData, Bundle initialExtras);

    /**
     * Version of
     * {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String,
@@ -2996,6 +3011,21 @@ public abstract class Context {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

    /**
     * Like {@link #sendOrderedBroadcast(Intent, String, String, BroadcastReceiver, Handler, int,
     * String, Bundle)}, but also allows specification of a list of multiple permissions.
     * @hide
     */
    @FlaggedApi(Flags.FLAG_ORDERED_BROADCAST_MULTIPLE_PERMISSIONS)
    @SystemApi
    public void sendOrderedBroadcastMultiplePermissions(
            @NonNull Intent intent, @NonNull String[] receiverPermissions,
            @Nullable String receiverAppOp, @Nullable BroadcastReceiver resultReceiver,
            @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
            @Nullable Bundle initialExtras, @Nullable Bundle options) {
        throw new RuntimeException("Not implemented. Must override in a subclass.");
    }

    /**
     * <p>Perform a {@link #sendBroadcast(Intent)} that is "sticky," meaning the
     * Intent you are sending stays around after the broadcast is complete,
+21 −0
Original line number Diff line number Diff line
@@ -652,6 +652,16 @@ public class ContextWrapper extends Context {
                resultReceiver, scheduler, initialCode, initialData, initialExtras);
    }

    /** @hide */
    @Override
    public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user,
            @Nullable String[] receiverPermission, int appOp, @Nullable Bundle options,
            @Nullable BroadcastReceiver resultReceiver, @Nullable Handler scheduler,
            int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras) {
        mBase.sendOrderedBroadcastAsUserMultiplePermissions(intent, user, receiverPermission, appOp,
                options, resultReceiver, scheduler, initialCode, initialData, initialExtras);
    }

    @Override
    public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent,
            @Nullable String receiverPermission, @Nullable String receiverAppOp,
@@ -661,6 +671,17 @@ public class ContextWrapper extends Context {
                scheduler, initialCode, initialData, initialExtras);
    }

    /** @hide */
    @Override
    public void sendOrderedBroadcastMultiplePermissions(
            @NonNull Intent intent, @NonNull String[] receiverPermissions,
            @Nullable String receiverAppOp, @Nullable BroadcastReceiver resultReceiver,
            @Nullable Handler scheduler, int initialCode, @Nullable String initialData,
            @Nullable Bundle initialExtras, @Nullable Bundle options) {
        mBase.sendOrderedBroadcastMultiplePermissions(intent, receiverPermissions, receiverAppOp,
                resultReceiver, scheduler, initialCode, initialData, initialExtras, options);
    }

    @Override
    public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent, int initialCode,
            @Nullable String receiverPermission, @Nullable String receiverAppOp,
+8 −0
Original line number Diff line number Diff line
@@ -75,6 +75,14 @@ flag {
    bug: "302189431"
}

flag {
    name: "ordered_broadcast_multiple_permissions"
    is_exported: true
    namespace: "bluetooth"
    description: "Guards the Context.sendOrderedBroadcastMultiplePermissions API"
    bug: "345802719"
}

flag {
    name: "battery_saver_supported_check_api"
    is_exported: true
Loading