Merge "Fix AugmentedAutofillService onFillRequest() wrong focused AutofillId for WebView" into rvc-dev am: cc4f13e0ab am: b1fe173f1f am: 29db7bbc0f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11700779

Change-Id: I8baa5c221de3b4ee6c1f956653585bed52c4a9f1
This commit is contained in:
TreeHugger Robot
2020-06-02 21:49:14 +00:00
committed by Automerger Merge Worker
2 changed files with 30 additions and 1 deletions

View File

@@ -75,7 +75,10 @@ public final class AutofillId implements Parcelable {
/** @hide */
public static AutofillId withoutSession(@NonNull AutofillId id) {
final int flags = id.mFlags & ~FLAG_HAS_SESSION;
return new AutofillId(flags, id.mViewId, id.mVirtualLongId, NO_SESSION);
final long virtualChildId =
((id.mFlags & FLAG_IS_VIRTUAL_LONG) != 0) ? id.mVirtualLongId
: id.mVirtualIntId;
return new AutofillId(flags, id.mViewId, virtualChildId, NO_SESSION);
}
/** @hide */

View File

@@ -125,6 +125,32 @@ public class AutofillIdTest {
assertNonVirtual(idWithoutSession, 42, NO_SESSION);
}
@Test
public void testVirtual_Long_withoutSession() {
final AutofillId id = new AutofillId(new AutofillId(42), 108L, 666);
final AutofillId idWithoutSession = AutofillId.withoutSession(id);
assertThat(idWithoutSession.getViewId()).isEqualTo(42);
assertThat(idWithoutSession.isVirtualLong()).isTrue();
assertThat(idWithoutSession.isVirtualInt()).isFalse();
assertThat(idWithoutSession.isNonVirtual()).isFalse();
assertThat(idWithoutSession.getVirtualChildLongId()).isEqualTo(108L);
assertThat(idWithoutSession.getVirtualChildIntId()).isEqualTo(View.NO_ID);
assertThat(idWithoutSession.getSessionId()).isEqualTo(NO_SESSION);
}
@Test
public void testVirtual_Int_withoutSession() {
final AutofillId id = new AutofillId(42, 108);
final AutofillId idWithoutSession = AutofillId.withoutSession(id);
assertThat(idWithoutSession.getViewId()).isEqualTo(42);
assertThat(idWithoutSession.isVirtualLong()).isFalse();
assertThat(idWithoutSession.isVirtualInt()).isTrue();
assertThat(idWithoutSession.isNonVirtual()).isFalse();
assertThat(idWithoutSession.getVirtualChildIntId()).isEqualTo(108);
assertThat(idWithoutSession.getVirtualChildLongId()).isEqualTo(View.NO_ID);
assertThat(idWithoutSession.getSessionId()).isEqualTo(NO_SESSION);
}
@Test
public void testSetResetSession() {
final AutofillId id = new AutofillId(42);