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

Commit 91c87efb authored by Marvin Ramin's avatar Marvin Ramin
Browse files

Fix MediaProjection UID check and tests

Bug: 419269649
Test: atest MediaProjectionManagerServiceTest
Flag: com.android.media.projection.flags.start_uid_check
Change-Id: I2f4debc74cf99673a9bd5e07f117d4b7276d7fb8
parent 10f2dc2a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1218,7 +1218,7 @@ public final class MediaProjectionManagerService extends SystemService
                    mCountStarts++;
                    return;
                }
                if (Flags.startUidCheck() && validateCallingPackageName(mContext, packageName)) {
                if (Flags.startUidCheck() && !validateCallingPackageName(mContext, packageName)) {
                    throw new SecurityException(
                            "This MediaProjection session was not granted to this application.");
                }
+5 −0
Original line number Diff line number Diff line
@@ -218,6 +218,11 @@ public class MediaProjectionManagerServiceTest {
        mWaitingDisplaySession.setVirtualDisplayId(5);

        mAppInfo.targetSdkVersion = 32;
        mAppInfo.packageName = PACKAGE_NAME;

        doReturn(mAppInfo).when(mPackageManager).getApplicationInfoAsUser(anyString(),
                any(ApplicationInfoFlags.class), any(UserHandle.class));
        doReturn(UID).when(mPackageManager).getPackageUidAsUser(anyString(), any(int.class));

        mService = new MediaProjectionManagerService(mContext);
    }
+7 −1
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import android.content.pm.PackageManager.ApplicationInfoFlags;
import android.content.pm.PackageManager.NameNotFoundException;
import android.media.projection.MediaProjectionManager;
import android.os.UserHandle;
import android.os.Process;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.Presubmit;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -88,7 +89,7 @@ import java.util.function.Consumer;
@RunWith(AndroidJUnit4.class)
@SuppressLint({"UseCheckPermission", "VisibleForTests", "MissingPermission"})
public class MediaProjectionStopControllerTest {
    private static final int UID = 10;
    private static final int UID = Process.myUid();
    private static final String PACKAGE_NAME = "test.package";
    private final ApplicationInfo mAppInfo = new ApplicationInfo();
    @Rule
@@ -145,6 +146,11 @@ public class MediaProjectionStopControllerTest {
                mMediaProjectionMetricsLoggerInjector);

        mAppInfo.targetSdkVersion = 35;
        mAppInfo.packageName = PACKAGE_NAME;

        doReturn(mAppInfo).when(mPackageManager).getApplicationInfoAsUser(anyString(),
                any(ApplicationInfoFlags.class), any(UserHandle.class));
        doReturn(UID).when(mPackageManager).getPackageUidAsUser(anyString(), any(int.class));
    }

    private static AppOpsManager mockAppOpsManager() {