Fix logging in ExtServices for Q Beta
Two issues: 1. The notification key -> logging id mapping should be removed whenever suggest() is called as the session is considered to be ended. 2. We were only storing the key -> logging id mapping when suggestConversationActions generated some replies. Thus, when only smart actions are generated from generateLinks, we didn't log it (as the mapping is missing) So, we now always cache the ID after calling suggestConversationActions. Remove the mapping when we find that neither actions or replies are generated. PS: We have a CL (ag/6033786) to switch to suggestConversationActions, fix for #2 is no longer needed once it is in. But that change won't be in before Android Beta as the model side change is not done. BUG: 120803809 Test: Manual. Send a message with URL, observer subsequent events (e.g: clicked) are logged. Test: atest SmartActionHelperTest Change-Id: Iea1a46466846ef99d51316dcbb294bfe0cf33653
This commit is contained in:
@@ -215,9 +215,9 @@ public class Assistant extends NotificationAssistantService {
|
||||
return null;
|
||||
}
|
||||
NotificationEntry entry = new NotificationEntry(mPackageManager, sbn, channel);
|
||||
ArrayList<Notification.Action> actions = mSmartActionsHelper.suggestActions(entry);
|
||||
ArrayList<CharSequence> replies = mSmartActionsHelper.suggestReplies(entry);
|
||||
return createEnqueuedNotificationAdjustment(entry, actions, replies);
|
||||
SmartActionsHelper.SmartSuggestions suggestions = mSmartActionsHelper.suggest(entry);
|
||||
return createEnqueuedNotificationAdjustment(
|
||||
entry, suggestions.actions, suggestions.replies);
|
||||
}
|
||||
|
||||
/** A convenience helper for creating an adjustment for an SBN. */
|
||||
|
||||
@@ -92,6 +92,23 @@ public class SmartActionsHelper {
|
||||
mSettings = settings;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
SmartSuggestions suggest(@NonNull NotificationEntry entry) {
|
||||
// Whenever suggest() is called on a notification, its previous session is ended.
|
||||
mNotificationKeyToResultIdCache.remove(entry.getSbn().getKey());
|
||||
|
||||
ArrayList<Notification.Action> actions = suggestActions(entry);
|
||||
ArrayList<CharSequence> replies = suggestReplies(entry);
|
||||
|
||||
// Not logging subsequent events of this notification if we didn't generate any suggestion
|
||||
// for it.
|
||||
if (replies.isEmpty() && actions.isEmpty()) {
|
||||
mNotificationKeyToResultIdCache.remove(entry.getSbn().getKey());
|
||||
}
|
||||
|
||||
return new SmartSuggestions(replies, actions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds action adjustments based on the notification contents.
|
||||
*/
|
||||
@@ -115,6 +132,7 @@ public class SmartActionsHelper {
|
||||
messages.get(messages.size() - 1).getText(), MAX_SMART_ACTIONS);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
ArrayList<CharSequence> suggestReplies(@NonNull NotificationEntry entry) {
|
||||
if (!mSettings.mGenerateReplies) {
|
||||
return EMPTY_REPLY_LIST;
|
||||
@@ -146,7 +164,7 @@ public class SmartActionsHelper {
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
String resultId = conversationActionsResult.getId();
|
||||
if (resultId != null && !replies.isEmpty()) {
|
||||
if (resultId != null) {
|
||||
mNotificationKeyToResultIdCache.put(entry.getSbn().getKey(), resultId);
|
||||
}
|
||||
return replies;
|
||||
@@ -385,4 +403,15 @@ public class SmartActionsHelper {
|
||||
}
|
||||
return actions;
|
||||
}
|
||||
|
||||
static class SmartSuggestions {
|
||||
public final ArrayList<CharSequence> replies;
|
||||
public final ArrayList<Notification.Action> actions;
|
||||
|
||||
SmartSuggestions(
|
||||
ArrayList<CharSequence> replies, ArrayList<Notification.Action> actions) {
|
||||
this.replies = replies;
|
||||
this.actions = actions;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user