Merge "Make parents important for Content Capture"

This commit is contained in:
TreeHugger Robot
2023-02-15 15:57:36 +00:00
committed by Android (Google) Code Review

View File

@@ -10199,6 +10199,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
setNotifiedContentCaptureAppeared();
if (ai != null) {
makeParentImportantAndNotifyAppearedEventIfNeed();
ai.delayNotifyContentCaptureEvent(session, this, appeared);
} else {
if (DEBUG_CONTENT_CAPTURE) {
@@ -10226,6 +10227,22 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
}
private void makeParentImportantAndNotifyAppearedEventIfNeed() {
// If view sent the appeared event to Content Capture, Content Capture also
// would like to receive its parents' appeared events. So checks its parents
// whether the appeared event is sent or not. If not, send the appeared event.
final ViewParent parent = getParent();
if (parent instanceof View) {
View p = ((View) parent);
if (p.getNotifiedContentCaptureAppeared()) {
return;
}
// Set important for content capture in the cache.
p.mPrivateFlags4 |= PFLAG4_CONTENT_CAPTURE_IMPORTANCE_MASK;
p.notifyAppearedOrDisappearedForContentCaptureIfNeeded(/* appeared */ true);
}
}
private void setNotifiedContentCaptureAppeared() {
mPrivateFlags4 |= PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED;
mPrivateFlags4 &= ~PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED;