Merge "Detect isVisibleToUser post layout" into oc-dev am: a7af385208

am: 73d5b089b9

Change-Id: I1369c5ccb51f7b147144a4cd3576729f920e5bbd
This commit is contained in:
Svet Ganov
2017-05-12 02:06:50 +00:00
committed by android-build-merger

View File

@@ -2858,6 +2858,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
static final int PFLAG3_SCROLL_INDICATOR_END = 0x2000;
/**
* Flag indicating that when layout is completed we should notify
* that the view was entered for autofill purposes. To minimize
* showing autofill for views not visible to the user we evaluate
* user visibility which cannot be done until the view is laid out.
*/
static final int PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT = 0x4000;
static final int DRAG_MASK = PFLAG2_DRAG_CAN_ACCEPT | PFLAG2_DRAG_HOVERED;
static final int SCROLL_INDICATORS_NONE = 0x0000;
@@ -6845,8 +6853,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
if (isAutofillable() && isAttachedToWindow()) {
AutofillManager afm = getAutofillManager();
if (afm != null) {
if (enter && hasWindowFocus() && isFocused() && isVisibleToUser()) {
afm.notifyViewEntered(this);
if (enter && hasWindowFocus() && isFocused()) {
// We have not been laid out yet, hence cannot evaluate
// whether this view is visible to the user, we will do
// the evaluation once layout is complete.
if (!isLaidOut()) {
mPrivateFlags3 |= PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT;
} else if (isVisibleToUser()) {
afm.notifyViewEntered(this);
}
} else if (!hasWindowFocus() || !isFocused()) {
afm.notifyViewExited(this);
}
@@ -19305,6 +19320,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags &= ~PFLAG_FORCE_LAYOUT;
mPrivateFlags3 |= PFLAG3_IS_LAID_OUT;
if ((mPrivateFlags3 & PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT) != 0) {
mPrivateFlags3 &= ~PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT;
notifyEnterOrExitForAutoFillIfNeeded(true);
}
}
/**