Update ContentCapture cts test.
Bug: 258825825
Change-Id: Ic9c17702934a6067dff97f0691f2f3781600e305
Test: add cts test case
diff --git a/tests/contentcaptureservice/src/android/contentcaptureservice/cts/CustomViewActivityTest.java b/tests/contentcaptureservice/src/android/contentcaptureservice/cts/CustomViewActivityTest.java
index 6f6aac2..928b79dd 100644
--- a/tests/contentcaptureservice/src/android/contentcaptureservice/cts/CustomViewActivityTest.java
+++ b/tests/contentcaptureservice/src/android/contentcaptureservice/cts/CustomViewActivityTest.java
@@ -55,6 +55,7 @@
import org.junit.Test;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
@@ -442,7 +443,7 @@
assertRightActivity(session, session.id, activity);
- final int additionalEvents = 3;
+ final int additionalEvents = 5;
final List<ContentCaptureEvent> events = activity.assertInitialViewsAppeared(session,
additionalEvents);
@@ -452,11 +453,65 @@
new EventsAssertor(events)
.assertVirtualViewAppeared(mainSession, customViewId, 1, "child1")
.assertVirtualViewAppeared(mainSession, customViewId, 2, "child2")
- .assertVirtualViewsDisappeared(customViewId, mainSession, 2, 1);
+ .assertViewTreeStarted()
+ .assertVirtualViewsDisappeared(customViewId, mainSession, 2, 1)
+ .assertViewTreeFinished();
// TODO(b/122315042): assert other views disappeared
}
@Test
+ public void testVirtualView_batchAppear() throws Exception {
+ final CtsContentCaptureService service = enableService();
+ final ActivityWatcher watcher = startWatcher();
+
+ final CountDownLatch asyncLatch = setAsyncDelegate((customView, structure) -> {
+ Log.d(TAG, "delegate running on " + Thread.currentThread());
+ final AutofillId customViewId = customView.getAutofillId();
+ Log.d(TAG, "customViewId: " + customViewId);
+ final ContentCaptureSession session = customView.getContentCaptureSession();
+
+ final ViewStructure child1 = session.newVirtualViewStructure(customViewId, 1);
+ child1.setText("child1");
+ final AutofillId child1Id = child1.getAutofillId();
+ assertThat(session.newAutofillId(customViewId, 1)).isEqualTo(child1Id);
+
+ final ViewStructure child2 = session.newVirtualViewStructure(customViewId, 2);
+ child2.setText("child2");
+ final AutofillId child2Id = child2.getAutofillId();
+ assertThat(session.newAutofillId(customViewId, 2)).isEqualTo(child2Id);
+ Log.d(TAG, "nofifying children appeared");
+ final List<ViewStructure> appearedNodes = new ArrayList<>();
+ appearedNodes.add(child1);
+ appearedNodes.add(child2);
+ session.notifyViewsAppeared(appearedNodes);
+ });
+
+ final CustomViewActivity activity = launchActivity();
+ watcher.waitFor(RESUMED);
+ await(asyncLatch, "async onProvide");
+ activity.finish();
+ watcher.waitFor(DESTROYED);
+
+ final Session session = service.getOnlyFinishedSession();
+ Log.v(TAG, "session id: " + session.id);
+
+ assertRightActivity(session, session.id, activity);
+
+ final int additionalEvents = 4;
+ final List<ContentCaptureEvent> events = activity.assertInitialViewsAppeared(session,
+ additionalEvents);
+
+ final AutofillId customViewId = activity.mCustomView.getAutofillId();
+ final ContentCaptureSession mainSession = activity.mCustomView.getContentCaptureSession();
+
+ new EventsAssertor(events)
+ .assertViewTreeStarted()
+ .assertVirtualViewAppeared(mainSession, customViewId, 1, "child1")
+ .assertVirtualViewAppeared(mainSession, customViewId, 2, "child2")
+ .assertViewTreeFinished();
+ }
+
+ @Test
public void testContentCaptureConditions() throws Exception {
final CtsContentCaptureService service = enableService();
final ActivityWatcher watcher = startWatcher();