Commit 6d0a8e5f authored by Luca Hunkeler's avatar Luca Hunkeler Committed by Commit Bot

[Autofill Assistant] Support interactions with multiple triggers

Before this cl if you wanted a callback to trigger when any of a list of
events happened, you'd have to add multiple interactions. Supporting
multiple events allows for a more compact proto with less duplication
in those cases.

Bug: b/168195199
Change-Id: I5614fc741ab83801a1102e1e4c2b99a4add04e86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2435639
Commit-Queue: Luca Hunkeler <hluca@google.com>
Reviewed-by: default avatarMarian Fechete <marianfe@google.com>
Reviewed-by: default avatarClemens Arbesser <arbesser@google.com>
Cr-Commit-Position: refs/heads/master@{#811954}
parent 14092f34
......@@ -449,7 +449,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactionsPrepended = new ArrayList<>();
interactionsPrepended.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickableView1")))
.addCallbacks(CallbackProto.newBuilder().setSetValue(
......@@ -463,7 +463,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactionsAppended = new ArrayList<>();
interactionsAppended.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickableView2")))
.addCallbacks(CallbackProto.newBuilder().setSetValue(
......@@ -588,7 +588,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickableView")))
.addCallbacks(CallbackProto.newBuilder().setSetValue(
......@@ -609,7 +609,7 @@ public class AutofillAssistantGenericUiTest {
// Whenever output_1 changes, copy the value to output_2.
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"output_1")))
.addCallbacks(CallbackProto.newBuilder().setSetValue(
......@@ -624,7 +624,7 @@ public class AutofillAssistantGenericUiTest {
// is created, because events should only be fired for actual value changes.
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"output_2")))
.addCallbacks(CallbackProto.newBuilder().setSetValue(
......@@ -745,7 +745,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickableView")))
.addCallbacks(CallbackProto.newBuilder().setShowInfoPopup(
......@@ -795,7 +795,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -804,7 +804,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"done_chip")))
.addCallbacks(CallbackProto.newBuilder().setEndAction(
......@@ -813,7 +813,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickableView")))
.addCallbacks(CallbackProto.newBuilder().setShowListPopup(
......@@ -939,7 +939,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickableView1")))
.addCallbacks(CallbackProto.newBuilder().setSetValue(
......@@ -952,7 +952,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickableView2")))
.addCallbacks(CallbackProto.newBuilder().setSetValue(
......@@ -965,23 +965,10 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"output1")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
ComputeValueProto.newBuilder()
.setBooleanAnd(BooleanAndProto.newBuilder().addAllValues(
Arrays.asList(ValueReferenceProto.newBuilder()
.setModelIdentifier("output1")
.build(),
ValueReferenceProto.newBuilder()
.setModelIdentifier("output2")
.build())))
.setResultModelIdentifier("combined")))
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"output2")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -1062,7 +1049,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -1071,7 +1058,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"done_chip")))
.addCallbacks(CallbackProto.newBuilder().setEndAction(
......@@ -1173,7 +1160,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -1182,7 +1169,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"done_chip")))
.addCallbacks(CallbackProto.newBuilder().setEndAction(
......@@ -1191,7 +1178,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"text_view")))
.addCallbacks(CallbackProto.newBuilder().setShowCalendarPopup(
......@@ -1214,7 +1201,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"date")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -1376,7 +1363,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -1386,7 +1373,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"enabled")))
.addCallbacks(CallbackProto.newBuilder().setToggleUserAction(
......@@ -1399,7 +1386,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"text_view")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -1476,7 +1463,7 @@ public class AutofillAssistantGenericUiTest {
.build();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"text_view")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -1501,7 +1488,7 @@ public class AutofillAssistantGenericUiTest {
.build();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"counter")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -1567,7 +1554,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"toggle_view")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -1579,7 +1566,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"visible")))
.addCallbacks(CallbackProto.newBuilder().setSetViewVisibility(
......@@ -1676,7 +1663,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -1685,7 +1672,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"done_chip")))
.addCallbacks(CallbackProto.newBuilder().setEndAction(
......@@ -1765,7 +1752,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnTextLinkClicked(
.addTriggerEvent(EventProto.newBuilder().setOnTextLinkClicked(
OnTextLinkClickedProto.newBuilder().setTextLink(1)))
.addCallbacks(CallbackProto.newBuilder().setSetValue(
SetModelValueProto.newBuilder()
......@@ -2008,7 +1995,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -2017,7 +2004,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"done_chip")))
.addCallbacks(CallbackProto.newBuilder().setEndAction(
......@@ -2156,7 +2143,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"toggle_view")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -2168,7 +2155,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"enabled")))
.addCallbacks(CallbackProto.newBuilder().setSetViewEnabled(
......@@ -2248,7 +2235,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactionsA = new ArrayList<>();
interactionsA.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -2257,7 +2244,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactionsA.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"shared_identifier")))
.addCallbacks(CallbackProto.newBuilder().setEndAction(
......@@ -2291,7 +2278,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactionsB = new ArrayList<>();
interactionsB.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -2300,7 +2287,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactionsB.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"shared_identifier")))
.addCallbacks(CallbackProto.newBuilder().setShowInfoPopup(
......@@ -2385,7 +2372,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions_nested = new ArrayList<>();
interactions_nested.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"nested_text_view")))
.addCallbacks(incrementCounterCallback)
......@@ -2400,7 +2387,7 @@ public class AutofillAssistantGenericUiTest {
// Clicking |root_text_view| will increment |counter| by 1 and open a nested popup.
List<InteractionProto> interactions = new ArrayList<>();
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"root_text_view")))
.addCallbacks(incrementCounterCallback)
......@@ -2411,7 +2398,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -2420,7 +2407,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"done_chip")))
.addCallbacks(CallbackProto.newBuilder().setEndAction(
......@@ -2588,7 +2575,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"text_view_create_nested_on_click")))
.addCallbacks(CallbackProto.newBuilder().setCreateNestedUi(
......@@ -2605,7 +2592,7 @@ public class AutofillAssistantGenericUiTest {
"Hello World"))))))
.build());
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"text_view_delete_nested_on_click")))
.addCallbacks(CallbackProto.newBuilder().setClearViewContainer(
......@@ -2684,7 +2671,7 @@ public class AutofillAssistantGenericUiTest {
// When touch_area_one_present becomes false, end the action
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"touch_area_one_present")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -2696,7 +2683,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"end_action")))
.addCallbacks(CallbackProto.newBuilder()
......@@ -2784,7 +2771,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickable_view")))
.addCallbacks(CallbackProto.newBuilder().setForEach(
......@@ -2915,7 +2902,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnViewClicked(
.addTriggerEvent(EventProto.newBuilder().setOnViewClicked(
OnViewClickedEventProto.newBuilder().setViewIdentifier(
"clickable_view")))
.addCallbacks(CallbackProto.newBuilder().setForEach(
......@@ -3017,7 +3004,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> singleCardInteractions = new ArrayList<>();
singleCardInteractions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"credit_card_selected_${i}")))
.addCallbacks(
......@@ -3068,7 +3055,7 @@ public class AutofillAssistantGenericUiTest {
List<InteractionProto> interactions = new ArrayList<>();
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"credit_cards")))
.addCallbacks(CallbackProto.newBuilder().setClearViewContainer(
......@@ -3119,7 +3106,7 @@ public class AutofillAssistantGenericUiTest {
// - enable/disable confirm button
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"selected_credit_card")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -3139,7 +3126,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"confirm_button_disabled")))
.addCallbacks(CallbackProto.newBuilder().setComputeValue(
......@@ -3151,7 +3138,7 @@ public class AutofillAssistantGenericUiTest {
.build());
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"confirm_button_enabled")))
.addCallbacks(CallbackProto.newBuilder().setToggleUserAction(
......@@ -3165,7 +3152,7 @@ public class AutofillAssistantGenericUiTest {
// A confirm chip interaction that ends the action.
interactions.add(
(InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnValueChanged(
.addTriggerEvent(EventProto.newBuilder().setOnValueChanged(
OnModelValueChangedEventProto.newBuilder().setModelIdentifier(
"chips")))
.addCallbacks(CallbackProto.newBuilder().setSetUserActions(
......@@ -3174,7 +3161,7 @@ public class AutofillAssistantGenericUiTest {
"chips"))))
.build());
interactions.add((InteractionProto) InteractionProto.newBuilder()
.setTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
.addTriggerEvent(EventProto.newBuilder().setOnUserActionCalled(
OnUserActionCalled.newBuilder().setUserActionIdentifier(
"done_chip")))
.addCallbacks(CallbackProto.newBuilder().setEndAction(
......
......@@ -30,32 +30,33 @@ bool CreateJavaListenersFromProto(
base::android::ScopedJavaGlobalRef<jobject> jdelegate,
const InteractionsProto& proto) {
for (const auto& interaction_proto : proto.interactions()) {
const auto& event_proto = interaction_proto.trigger_event();
switch (event_proto.kind_case()) {
case EventProto::kOnViewClicked: {
auto jview = view_handler->GetView(
event_proto.on_view_clicked().view_identifier());
if (!jview.has_value()) {
VLOG(1) << "Invalid click event, no view with id='"
<< event_proto.on_view_clicked().view_identifier()
<< "' found";
return false;
for (const auto& event_proto : interaction_proto.trigger_event()) {
switch (event_proto.kind_case()) {
case EventProto::kOnViewClicked: {
auto jview = view_handler->GetView(
event_proto.on_view_clicked().view_identifier());
if (!jview.has_value()) {
VLOG(1) << "Invalid click event, no view with id='"
<< event_proto.on_view_clicked().view_identifier()
<< "' found";
return false;
}
SetOnClickListener(env, *jview, jdelegate,
event_proto.on_view_clicked());
break;
}
SetOnClickListener(env, *jview, jdelegate,
event_proto.on_view_clicked());
break;
case EventProto::kOnValueChanged:
case EventProto::kOnUserActionCalled:
case EventProto::kOnTextLinkClicked:
case EventProto::kOnPopupDismissed:
case EventProto::kOnViewContainerCleared:
// Skip events that do not require registering java-side listeners.
break;
case EventProto::KIND_NOT_SET:
VLOG(1)
<< "Error creating java listener for trigger event: kind not set";
return false;
}
case EventProto::kOnValueChanged:
case EventProto::kOnUserActionCalled:
case EventProto::kOnTextLinkClicked:
case EventProto::kOnPopupDismissed:
case EventProto::kOnViewContainerCleared:
// Skip events that do not require registering java-side listeners.
break;
case EventProto::KIND_NOT_SET:
VLOG(1)
<< "Error creating java listener for trigger event: kind not set";
return false;
}
}
return true;
......
......@@ -315,7 +315,7 @@ bool CreateImplicitInteractionsForView(
// Auto-update the text of the view whenever the corresponding value in
// the model changes.
InteractionProto implicit_set_text_interaction;
implicit_set_text_interaction.mutable_trigger_event()
implicit_set_text_interaction.add_trigger_event()
->mutable_on_value_changed()
->set_model_identifier(proto.text_input_view().model_identifier());
SetTextProto set_text_callback;
......@@ -339,7 +339,7 @@ bool CreateImplicitInteractionsForView(
}
// Auto-update text view content.
InteractionProto implicit_set_text_interaction;
implicit_set_text_interaction.mutable_trigger_event()
implicit_set_text_interaction.add_trigger_event()
->mutable_on_value_changed()
->set_model_identifier(proto.text_view().model_identifier());
SetTextProto set_text_callback;
......
......@@ -131,12 +131,7 @@ bool InteractionHandlerAndroid::AddInteractionsFromProto(
NOTREACHED() << "Interactions can not be added while listening to events!";
return false;
}
auto key = EventHandler::CreateEventKeyFromProto(proto.trigger_event());
if (!key) {
VLOG(1) << "Invalid trigger event for interaction";
return false;
}
std::vector<InteractionHandlerAndroid::InteractionCallback> callbacks;
for (const auto& callback_proto : proto.callbacks()) {
auto callback = CreateInteractionCallbackFromProto(callback_proto);
if (!callback) {
......@@ -150,7 +145,19 @@ bool InteractionHandlerAndroid::AddInteractionsFromProto(
basic_interactions_->GetWeakPtr(),
callback_proto.condition_model_identifier(), *callback));
}
AddInteraction(*key, *callback);
callbacks.push_back(std::move(*callback));
}
for (const auto& trigger_event : proto.trigger_event()) {
auto key = EventHandler::CreateEventKeyFromProto(trigger_event);
if (!key) {
VLOG(1) << "Invalid trigger event of type " << trigger_event.kind_case();
return false;
}
for (const auto& callback : callbacks) {
AddInteraction(*key, callback);
}
}
return true;
}
......
......@@ -26,12 +26,13 @@ message InteractionsProto {
repeated InteractionProto interactions = 1;
}
// An interaction consists of a trigger event and a series of actions.
// An interaction consists of a set of trigger events and a series of actions.
message InteractionProto {
// Functions to call each time the event happens, in the specified order.
// Functions to call each time one of the events happens, in the specified
// order.
repeated CallbackProto callbacks = 1;
// The trigger event for |callbacks|.
optional EventProto trigger_event = 2;
// The trigger events for |callbacks|.
repeated EventProto trigger_event = 2;
}
// UI Actions to invoke.
......
......@@ -157,9 +157,8 @@ void ReplacePlaceholdersInValue(
void ReplacePlaceholdersInInteraction(
InteractionProto* in_out_proto,
const std::map<std::string, std::string>& placeholders) {
if (in_out_proto->has_trigger_event()) {
ReplacePlaceholdersInEvent(in_out_proto->mutable_trigger_event(),
placeholders);
for (auto& trigger_event : *in_out_proto->mutable_trigger_event()) {
ReplacePlaceholdersInEvent(&trigger_event, placeholders);
}
for (auto& callback : *in_out_proto->mutable_callbacks()) {
......
......@@ -82,25 +82,25 @@ TEST(GenericUiReplacePlaceholdersTest, ReplacePlaceholdersInEvents) {
GenericUserInterfaceProto input;
auto* on_value_changed = input.mutable_interactions()
->add_interactions()
->mutable_trigger_event()
->add_trigger_event()
->mutable_on_value_changed();
on_value_changed->set_model_identifier("value_${i}");
auto* on_view_clicked = input.mutable_interactions()
->add_interactions()
->mutable_trigger_event()
->add_trigger_event()
->mutable_on_view_clicked();
on_view_clicked->set_view_identifier("view_${i}");
auto* on_view_container_cleared = input.mutable_interactions()
->add_interactions()
->mutable_trigger_event()
->add_trigger_event()
->mutable_on_view_container_cleared();
on_view_container_cleared->set_view_identifier("view_${i}");
auto* on_popup_dismissed = input.mutable_interactions()
->add_interactions()
->mutable_trigger_event()
->add_trigger_event()
->mutable_on_popup_dismissed();
on_popup_dismissed->set_popup_identifier("popup_${i}");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment