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

Commit 8fe4c2af authored by Cliff Wu's avatar Cliff Wu Committed by Android (Google) Code Review
Browse files

Merge "Add a lock to protect mRunningUids in GenericWindowPolicyController"

parents 02534809 fe5a3e50
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.util.Slog;
import android.view.Display;
import android.window.DisplayWindowPolicyController;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.app.BlockedAppStreamingActivity;

import java.util.List;
@@ -75,9 +76,11 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController
    private final ArraySet<ComponentName> mAllowedActivities;
    @Nullable
    private final ArraySet<ComponentName> mBlockedActivities;
    private final Object mGenericWindowPolicyControllerLock = new Object();
    private Consumer<ActivityInfo> mActivityBlockedCallback;

    @NonNull
    @GuardedBy("mGenericWindowPolicyControllerLock")
    final ArraySet<Integer> mRunningUids = new ArraySet<>();
    @Nullable private final ActivityListener mActivityListener;
    private final Handler mHandler = new Handler(Looper.getMainLooper());
@@ -149,12 +152,14 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController

    @Override
    public void onRunningAppsChanged(ArraySet<Integer> runningUids) {
        synchronized (mGenericWindowPolicyControllerLock) {
            mRunningUids.clear();
            mRunningUids.addAll(runningUids);
            if (mActivityListener != null && mRunningUids.isEmpty()) {
                // Post callback on the main thread so it doesn't block activity launching
                mHandler.post(() -> mActivityListener.onDisplayEmpty(Display.INVALID_DISPLAY));
            }
        }
        if (mRunningAppsChangedListener != null) {
            mRunningAppsChangedListener.onRunningAppsChanged(runningUids);
        }
@@ -165,8 +170,10 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController
     * this controller.
     */
    boolean containsUid(int uid) {
        synchronized (mGenericWindowPolicyControllerLock) {
            return mRunningUids.contains(uid);
        }
    }

    private boolean canContainActivity(ActivityInfo activityInfo, int windowFlags,
            int systemWindowFlags) {