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

Commit 68f79367 authored by TYM Tsai's avatar TYM Tsai
Browse files

Make parents important for Content Capture

A view is important for content capture, its parents are also important
for content capture. So sets the cache of its parents become important
for content capture and send out its parent's appeared event.

Bug: 180059047
Test: manual
  1.new conversation and receive new message
  2.switch between different conversations
   check sent events for fullly view hierarchy
Test: atest CtsContentCaptureServiceTestCases
Change-Id: I700989650dd36555841d65d74e532f001e419416
parent de1bae62
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -10131,6 +10131,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            setNotifiedContentCaptureAppeared();
            if (ai != null) {
                makeParentImportantAndNotifyAppearedEventIfNeed();
                ai.delayNotifyContentCaptureEvent(session, this, appeared);
            } else {
                if (DEBUG_CONTENT_CAPTURE) {
@@ -10158,6 +10159,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;