Merge "Fix returning an occluded activity below boundary" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9cbcb69d59
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user