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

Unverified Commit 0b338a6b authored by Chris Li's avatar Chris Li Committed by Kevin F. Haggerty
Browse files

Re-enforce MANAGE_ACTIVITY_TASKS for applySyncTransaction

The conditional permission was introduced for TaskFragmentOrganizer, but
not really needed. Remove the conditional check.

Bug: 259938771
Test: pass existing tests
Merged-In: I666b9ee6b6076766513b97e675fdbaa002428601
Change-Id: I666b9ee6b6076766513b97e675fdbaa002428601
(cherry picked from commit on googleplex-android-review.googlesource.com host: 6d848929)
Merged-In: I666b9ee6b6076766513b97e675fdbaa002428601
parent a71883f3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3324,7 +3324,7 @@ package android.window {

  public class WindowOrganizer {
    ctor public WindowOrganizer();
    method @RequiresPermission(value=android.Manifest.permission.MANAGE_ACTIVITY_TASKS, conditional=true) public int applySyncTransaction(@NonNull android.window.WindowContainerTransaction, @NonNull android.window.WindowContainerTransactionCallback);
    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public int applySyncTransaction(@NonNull android.window.WindowContainerTransaction, @NonNull android.window.WindowContainerTransactionCallback);
    method @RequiresPermission(value=android.Manifest.permission.MANAGE_ACTIVITY_TASKS, conditional=true) public void applyTransaction(@NonNull android.window.WindowContainerTransaction);
  }

+0 −9
Original line number Diff line number Diff line
@@ -157,15 +157,6 @@ public class TaskFragmentOrganizer extends WindowOrganizer {
        super.applyTransaction(t);
    }

    // Suppress the lint because it is not a registration method.
    @SuppressWarnings("ExecutorRegistration")
    @Override
    public int applySyncTransaction(@NonNull WindowContainerTransaction t,
            @NonNull WindowContainerTransactionCallback callback) {
        t.setTaskFragmentOrganizer(mInterface);
        return super.applySyncTransaction(t, callback);
    }

    private final ITaskFragmentOrganizer mInterface = new ITaskFragmentOrganizer.Stub() {
        @Override
        public void onTaskFragmentAppeared(@NonNull TaskFragmentInfo taskFragmentInfo) {
+2 −5
Original line number Diff line number Diff line
@@ -61,9 +61,7 @@ public class WindowOrganizer {
     * Apply multiple WindowContainer operations at once.
     *
     * Note that using this API requires the caller to hold
     * {@link android.Manifest.permission#MANAGE_ACTIVITY_TASKS}, unless the caller is using
     * {@link TaskFragmentOrganizer}, in which case it is allowed to change TaskFragment that is
     * created by itself.
     * {@link android.Manifest.permission#MANAGE_ACTIVITY_TASKS}.
     *
     * @param t The transaction to apply.
     * @param callback This transaction will use the synchronization scheme described in
@@ -72,8 +70,7 @@ public class WindowOrganizer {
     * @return An ID for the sync operation which will later be passed to transactionReady callback.
     *         This lets the caller differentiate overlapping sync operations.
     */
    @RequiresPermission(value = android.Manifest.permission.MANAGE_ACTIVITY_TASKS,
            conditional = true)
    @RequiresPermission(value = android.Manifest.permission.MANAGE_ACTIVITY_TASKS)
    public int applySyncTransaction(@NonNull WindowContainerTransaction t,
            @NonNull WindowContainerTransactionCallback callback) {
        try {
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
        if (t == null) {
            throw new IllegalArgumentException("Null transaction passed to applySyncTransaction");
        }
        enforceTaskPermission("applySyncTransaction()", t);
        enforceTaskPermission("applySyncTransaction()");
        final CallerInfo caller = new CallerInfo();
        final long ident = Binder.clearCallingIdentity();
        try {
+0 −14
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ import android.window.TaskFragmentOrganizer;
import android.window.TaskFragmentOrganizerToken;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;
import android.window.WindowContainerTransactionCallback;

import androidx.test.filters.SmallTest;

@@ -227,19 +226,6 @@ public class TaskFragmentOrganizerControllerTest extends WindowTestsBase {
        assertNull(mController.getRemoteAnimationDefinition(mIOrganizer));
    }

    @Test
    public void testWindowContainerTransaction_setTaskFragmentOrganizer() {
        mOrganizer.applyTransaction(mTransaction);

        assertEquals(mIOrganizer, mTransaction.getTaskFragmentOrganizer());

        mTransaction = new WindowContainerTransaction();
        mOrganizer.applySyncTransaction(
                mTransaction, mock(WindowContainerTransactionCallback.class));

        assertEquals(mIOrganizer, mTransaction.getTaskFragmentOrganizer());
    }

    @Test
    public void testApplyTransaction_enforceConfigurationChangeOnOrganizedTaskFragment()
            throws RemoteException {