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

Commit 7602e198 authored by Chris Li's avatar Chris Li
Browse files

Pass SafeActivityOptions with actual caller for startActivityInTF

We clearCallingUid before apply the WCT, but SafeActivityOptions will
query the Binder Uid when construct. Update to pass in the actual
caller.

Flag: EXEMPT bug fix
Bug: 369103643
Test: atest WmTests:WindowOrganizerTests#
      testStartActivityInTaskFragment_checkCallerPermission
Merged-In: I873ae576de0bc4a7402c2f522b45853bce48a0c5
Change-Id: I873ae576de0bc4a7402c2f522b45853bce48a0c5
(cherry picked from commit 20c568e7)
parent e7220c09
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Trace;
import android.os.UserHandle;
@@ -529,14 +528,14 @@ public class ActivityStartController {
     * Starts an activity in the TaskFragment.
     * @param taskFragment TaskFragment {@link TaskFragment} to start the activity in.
     * @param activityIntent intent to start the activity.
     * @param activityOptions ActivityOptions to start the activity with.
     * @param activityOptions SafeActivityOptions to start the activity with.
     * @param resultTo the caller activity
     * @param callingUid the caller uid
     * @param callingPid the caller pid
     * @return the start result.
     */
    int startActivityInTaskFragment(@NonNull TaskFragment taskFragment,
            @NonNull Intent activityIntent, @Nullable Bundle activityOptions,
            @NonNull Intent activityIntent, @Nullable SafeActivityOptions activityOptions,
            @Nullable IBinder resultTo, int callingUid, int callingPid,
            @Nullable IBinder errorCallbackToken) {
        final ActivityRecord caller =
+3 −1
Original line number Diff line number Diff line
@@ -1210,8 +1210,10 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
                final IBinder callerActivityToken = operation.getActivityToken();
                final Intent activityIntent = operation.getActivityIntent();
                final Bundle activityOptions = operation.getBundle();
                final SafeActivityOptions safeOptions =
                        SafeActivityOptions.fromBundle(activityOptions, caller.mPid, caller.mUid);
                final int result = mService.getActivityStartController()
                        .startActivityInTaskFragment(taskFragment, activityIntent, activityOptions,
                        .startActivityInTaskFragment(taskFragment, activityIntent, safeOptions,
                                callerActivityToken, caller.mUid, caller.mPid,
                                errorCallbackToken);
                if (!isStartResultSuccessful(result)) {