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

Commit 552a5fe6 authored by Hongwei Wang's avatar Hongwei Wang Committed by Android (Google) Code Review
Browse files

Merge "Revert "Rate limiting PiP aspect ratio change request"" into main

parents bb8a6642 c61115e4
Loading
Loading
Loading
Loading
+0 −30
Original line number Original line Diff line number Diff line
@@ -99,7 +99,6 @@ import android.view.RemoteAnimationDefinition;
import android.window.SizeConfigurationBuckets;
import android.window.SizeConfigurationBuckets;
import android.window.TransitionInfo;
import android.window.TransitionInfo;


import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.AssistUtils;
import com.android.internal.app.AssistUtils;
import com.android.internal.policy.IKeyguardDismissCallback;
import com.android.internal.policy.IKeyguardDismissCallback;
import com.android.internal.protolog.common.ProtoLog;
import com.android.internal.protolog.common.ProtoLog;
@@ -109,9 +108,6 @@ import com.android.server.pm.KnownPackages;
import com.android.server.pm.pkg.AndroidPackage;
import com.android.server.pm.pkg.AndroidPackage;
import com.android.server.uri.GrantUri;
import com.android.server.uri.GrantUri;
import com.android.server.uri.NeededUriGrants;
import com.android.server.uri.NeededUriGrants;
import com.android.server.utils.quota.Categorizer;
import com.android.server.utils.quota.Category;
import com.android.server.utils.quota.CountQuotaTracker;
import com.android.server.vr.VrManagerInternal;
import com.android.server.vr.VrManagerInternal;


/**
/**
@@ -127,13 +123,6 @@ class ActivityClientController extends IActivityClientController.Stub {
    private final ActivityTaskSupervisor mTaskSupervisor;
    private final ActivityTaskSupervisor mTaskSupervisor;
    private final Context mContext;
    private final Context mContext;


    // Prevent malicious app abusing the Activity#setPictureInPictureParams API
    @VisibleForTesting CountQuotaTracker mSetPipAspectRatioQuotaTracker;
    // Limit to 60 times / minute
    private static final int SET_PIP_ASPECT_RATIO_LIMIT = 60;
    // The timeWindowMs here can not be smaller than QuotaTracker#MIN_WINDOW_SIZE_MS
    private static final long SET_PIP_ASPECT_RATIO_TIME_WINDOW_MS = 60_000;

    /** Wrapper around VoiceInteractionServiceManager. */
    /** Wrapper around VoiceInteractionServiceManager. */
    private AssistUtils mAssistUtils;
    private AssistUtils mAssistUtils;


@@ -1046,25 +1035,6 @@ class ActivityClientController extends IActivityClientController.Stub {
                    + ": Current activity does not support picture-in-picture.");
                    + ": Current activity does not support picture-in-picture.");
        }
        }


        // Rate limit how frequent an app can request aspect ratio change via
        // Activity#setPictureInPictureParams
        final int userId = UserHandle.getCallingUserId();
        if (mSetPipAspectRatioQuotaTracker == null) {
            mSetPipAspectRatioQuotaTracker = new CountQuotaTracker(mContext,
                    Categorizer.SINGLE_CATEGORIZER);
            mSetPipAspectRatioQuotaTracker.setCountLimit(Category.SINGLE_CATEGORY,
                    SET_PIP_ASPECT_RATIO_LIMIT, SET_PIP_ASPECT_RATIO_TIME_WINDOW_MS);
        }
        if (r.pictureInPictureArgs.hasSetAspectRatio()
                && params.hasSetAspectRatio()
                && !r.pictureInPictureArgs.getAspectRatio().equals(
                params.getAspectRatio())
                && !mSetPipAspectRatioQuotaTracker.noteEvent(
                userId, r.packageName, "setPipAspectRatio")) {
            throw new IllegalStateException(caller
                    + ": Too many PiP aspect ratio change requests from " + r.packageName);
        }

        final float minAspectRatio = mContext.getResources().getFloat(
        final float minAspectRatio = mContext.getResources().getFloat(
                com.android.internal.R.dimen.config_pictureInPictureMinAspectRatio);
                com.android.internal.R.dimen.config_pictureInPictureMinAspectRatio);
        final float maxAspectRatio = mContext.getResources().getFloat(
        final float maxAspectRatio = mContext.getResources().getFloat(
+0 −6
Original line number Original line Diff line number Diff line
@@ -1235,12 +1235,6 @@ public class WindowOrganizerTests extends WindowTestsBase {
        assertNotNull(o.mInfo);
        assertNotNull(o.mInfo);
        assertNotNull(o.mInfo.pictureInPictureParams);
        assertNotNull(o.mInfo.pictureInPictureParams);


        // Bypass the quota check, which causes NPE in current test setup.
        if (mWm.mAtmService.mActivityClientController.mSetPipAspectRatioQuotaTracker != null) {
            mWm.mAtmService.mActivityClientController.mSetPipAspectRatioQuotaTracker
                    .setEnabled(false);
        }

        final PictureInPictureParams p2 = new PictureInPictureParams.Builder()
        final PictureInPictureParams p2 = new PictureInPictureParams.Builder()
                .setAspectRatio(new Rational(3, 4)).build();
                .setAspectRatio(new Rational(3, 4)).build();
        mWm.mAtmService.mActivityClientController.setPictureInPictureParams(record.token, p2);
        mWm.mAtmService.mActivityClientController.setPictureInPictureParams(record.token, p2);