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

Commit 9cbcb69d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix returning an occluded activity below boundary" into rvc-dev

parents 44cb762e 62cdfe75
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -3589,7 +3589,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A


    @Override
    @Override
    ActivityRecord getActivity(Predicate<ActivityRecord> callback, boolean traverseTopToBottom,
    ActivityRecord getActivity(Predicate<ActivityRecord> callback, boolean traverseTopToBottom,
            WindowContainer boundary) {
            ActivityRecord boundary) {
        return callback.test(this) ? this : null;
        return callback.test(this) ? this : null;
    }
    }


+3 −1
Original line number Original line Diff line number Diff line
@@ -2708,7 +2708,9 @@ class ActivityStack extends Task {
     */
     */
    @Nullable
    @Nullable
    private ActivityRecord getOccludingActivityAbove(ActivityRecord activity) {
    private ActivityRecord getOccludingActivityAbove(ActivityRecord activity) {
        return getActivity((ar) -> ar.occludesParent(), true /* traverseTopToBottom */, activity);
        ActivityRecord top = getActivity((ar) -> ar.occludesParent(),
                true /* traverseTopToBottom */, activity);
        return top != activity ? top : null;
    }
    }


    boolean willActivityBeVisible(IBinder token) {
    boolean willActivityBeVisible(IBinder token) {
+5 −3
Original line number Original line Diff line number Diff line
@@ -1415,11 +1415,12 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
    }
    }


    ActivityRecord getActivity(Predicate<ActivityRecord> callback, boolean traverseTopToBottom,
    ActivityRecord getActivity(Predicate<ActivityRecord> callback, boolean traverseTopToBottom,
            WindowContainer boundary) {
            ActivityRecord boundary) {
        if (traverseTopToBottom) {
        if (traverseTopToBottom) {
            for (int i = mChildren.size() - 1; i >= 0; --i) {
            for (int i = mChildren.size() - 1; i >= 0; --i) {
                final WindowContainer wc = mChildren.get(i);
                final WindowContainer wc = mChildren.get(i);
                if (wc == boundary) return null;
                // TODO(b/156986561): Improve the correctness of the boundary check.
                if (wc == boundary) return boundary;


                final ActivityRecord r = wc.getActivity(callback, traverseTopToBottom, boundary);
                final ActivityRecord r = wc.getActivity(callback, traverseTopToBottom, boundary);
                if (r != null) {
                if (r != null) {
@@ -1430,7 +1431,8 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
            final int count = mChildren.size();
            final int count = mChildren.size();
            for (int i = 0; i < count; i++) {
            for (int i = 0; i < count; i++) {
                final WindowContainer wc = mChildren.get(i);
                final WindowContainer wc = mChildren.get(i);
                if (wc == boundary) return null;
                // TODO(b/156986561): Improve the correctness of the boundary check.
                if (wc == boundary) return boundary;


                final ActivityRecord r = wc.getActivity(callback, traverseTopToBottom, boundary);
                final ActivityRecord r = wc.getActivity(callback, traverseTopToBottom, boundary);
                if (r != null) {
                if (r != null) {