Added LocusId support to Shortcut and Notification.
Test: atest FrameworksCoreTests:android.app.NotificationTest#testBuilder_setLocusId
Test: atest CtsShortcutManagerTestCases:android.content.pm.cts.shortcutmanager.ShortcutManagerClientApiTest
Test: atest CtsShortcutManagerTestCases # sanity check; some tests are failing, but pass individually
Test: m update-api
Bug: 126945732
Change-Id: Ib819a63aa008ab952b02da8c0be1b528814dfb00
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index e0cf561..234db7f 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -31,6 +31,7 @@
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.Intent;
+import android.content.LocusId;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -77,6 +78,7 @@
import android.view.NotificationHeaderView;
import android.view.View;
import android.view.ViewGroup;
+import android.view.contentcapture.ContentCaptureContext;
import android.widget.ProgressBar;
import android.widget.RemoteViews;
@@ -1271,6 +1273,7 @@
private long mTimeout;
private String mShortcutId;
+ private LocusId mLocusId;
private CharSequence mSettingsText;
private BubbleMetadata mBubbleMetadata;
@@ -2267,6 +2270,10 @@
mShortcutId = parcel.readString();
}
+ if (parcel.readInt() != 0) {
+ mLocusId = LocusId.CREATOR.createFromParcel(parcel);
+ }
+
mBadgeIcon = parcel.readInt();
if (parcel.readInt() != 0) {
@@ -2390,6 +2397,7 @@
that.mChannelId = this.mChannelId;
that.mTimeout = this.mTimeout;
that.mShortcutId = this.mShortcutId;
+ that.mLocusId = this.mLocusId;
that.mBadgeIcon = this.mBadgeIcon;
that.mSettingsText = this.mSettingsText;
that.mGroupAlertBehavior = this.mGroupAlertBehavior;
@@ -2705,6 +2713,13 @@
parcel.writeInt(0);
}
+ if (mLocusId != null) {
+ parcel.writeInt(1);
+ mLocusId.writeToParcel(parcel, 0);
+ } else {
+ parcel.writeInt(0);
+ }
+
parcel.writeInt(mBadgeIcon);
if (mSettingsText != null) {
@@ -3018,6 +3033,10 @@
sb.append(" publicVersion=");
sb.append(publicVersion.toString());
}
+ if (this.mLocusId != null) {
+ sb.append(" locusId=");
+ sb.append(this.mLocusId); // LocusId.toString() is PII safe.
+ }
sb.append(")");
return sb.toString();
}
@@ -3120,6 +3139,16 @@
return mShortcutId;
}
+ /**
+ * Gets the {@link LocusId} associated with this notification.
+ *
+ * <p>Used by the device's intelligence services to correlate objects (such as
+ * {@link ShortcutInfo} and {@link ContentCaptureContext}) that are correlated.
+ */
+ @Nullable
+ public LocusId getLocusId() {
+ return mLocusId;
+ }
/**
* Returns the settings text provided to {@link Builder#setSettingsText(CharSequence)}.
@@ -3478,6 +3507,19 @@
}
/**
+ * Sets the {@link LocusId} associated with this notification.
+ *
+ * <p>This method should be called when the {@link LocusId} is used in other places (such
+ * as {@link ShortcutInfo} and {@link ContentCaptureContext}) so the device's intelligence
+ * services can correlate them.
+ */
+ @NonNull
+ public Builder setLocusId(@Nullable LocusId locusId) {
+ mN.mLocusId = locusId;
+ return this;
+ }
+
+ /**
* Sets which icon to display as a badge for this notification.
*
* Must be one of {@link #BADGE_ICON_NONE}, {@link #BADGE_ICON_SMALL},