Merge "Addressing the feedback received in the API review." into sc-dev

This commit is contained in:
Shashwat Razdan
2021-04-20 16:01:42 +00:00
committed by Android (Google) Code Review
9 changed files with 121 additions and 113 deletions

View File

@@ -1617,7 +1617,7 @@ package android.app.smartspace {
ctor public SmartspaceConfig.Builder(@NonNull android.content.Context, @NonNull String);
method @NonNull public android.app.smartspace.SmartspaceConfig build();
method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setExtras(@NonNull android.os.Bundle);
method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setSmartspaceTargetCount(int);
method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setSmartspaceTargetCount(@IntRange(from=0, to=50) int);
}
public final class SmartspaceManager {
@@ -1625,23 +1625,22 @@ package android.app.smartspace {
}
public final class SmartspaceSession implements java.lang.AutoCloseable {
method public void addOnTargetsAvailableListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener);
method public void close();
method public void destroy();
method protected void finalize();
method public void notifySmartspaceEvent(@NonNull android.app.smartspace.SmartspaceTargetEvent);
method public void registerSmartspaceUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.smartspace.SmartspaceSession.Callback);
method public void removeOnTargetsAvailableListener(@NonNull android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener);
method public void requestSmartspaceUpdate();
method public void unregisterSmartspaceUpdates(@NonNull android.app.smartspace.SmartspaceSession.Callback);
}
public static interface SmartspaceSession.Callback {
public static interface SmartspaceSession.OnTargetsAvailableListener {
method public void onTargetsAvailable(@NonNull java.util.List<android.app.smartspace.SmartspaceTarget>);
}
public final class SmartspaceSessionId implements android.os.Parcelable {
method public int describeContents();
method @Nullable public String getId();
method @NonNull public int getUserId();
method @NonNull public android.os.UserHandle getUserHandle();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceSessionId> CREATOR;
}
@@ -1652,19 +1651,19 @@ package android.app.smartspace {
method @Nullable public String getAssociatedSmartspaceTargetId();
method @Nullable public android.app.smartspace.SmartspaceAction getBaseAction();
method @NonNull public android.content.ComponentName getComponentName();
method @NonNull public long getCreationTimeMillis();
method @NonNull public long getExpiryTimeMillis();
method @NonNull public int getFeatureType();
method public long getCreationTimeMillis();
method public long getExpiryTimeMillis();
method public int getFeatureType();
method @Nullable public android.app.smartspace.SmartspaceAction getHeaderAction();
method @NonNull public java.util.List<android.app.smartspace.SmartspaceAction> getIconGrid();
method @NonNull public float getScore();
method public float getScore();
method @Nullable public android.net.Uri getSliceUri();
method @NonNull public String getSmartspaceTargetId();
method @Nullable public String getSourceNotificationKey();
method @NonNull public android.os.UserHandle getUserHandle();
method @Nullable public android.appwidget.AppWidgetProviderInfo getWidgetId();
method @NonNull public boolean isSensitive();
method @NonNull public boolean shouldShowExpanded();
method @Nullable public android.appwidget.AppWidgetProviderInfo getWidget();
method public boolean isSensitive();
method public boolean shouldShowExpanded();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceTarget> CREATOR;
field public static final int FEATURE_ALARM = 7; // 0x7
@@ -1699,17 +1698,17 @@ package android.app.smartspace {
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setActionChips(@NonNull java.util.List<android.app.smartspace.SmartspaceAction>);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setAssociatedSmartspaceTargetId(@NonNull String);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setBaseAction(@NonNull android.app.smartspace.SmartspaceAction);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setCreationTimeMillis(@NonNull long);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setExpiryTimeMillis(@NonNull long);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setFeatureType(@NonNull int);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setCreationTimeMillis(long);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setExpiryTimeMillis(long);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setFeatureType(int);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setHeaderAction(@NonNull android.app.smartspace.SmartspaceAction);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setIconGrid(@NonNull java.util.List<android.app.smartspace.SmartspaceAction>);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setScore(@NonNull float);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSensitive(@NonNull boolean);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setShouldShowExpanded(@NonNull boolean);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setScore(float);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSensitive(boolean);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setShouldShowExpanded(boolean);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSliceUri(@NonNull android.net.Uri);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSourceNotificationKey(@NonNull String);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidgetId(@NonNull android.appwidget.AppWidgetProviderInfo);
method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidget(@NonNull android.appwidget.AppWidgetProviderInfo);
}
public final class SmartspaceTargetEvent implements android.os.Parcelable {
@@ -1721,11 +1720,11 @@ package android.app.smartspace {
field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceTargetEvent> CREATOR;
field public static final int EVENT_TARGET_BLOCK = 5; // 0x5
field public static final int EVENT_TARGET_DISMISS = 4; // 0x4
field public static final int EVENT_TARGET_HIDDEN = 3; // 0x3
field public static final int EVENT_TARGET_INTERACTION = 1; // 0x1
field public static final int EVENT_TARGET_IN_VIEW = 2; // 0x2
field public static final int EVENT_TARGET_OUT_OF_VIEW = 3; // 0x3
field public static final int EVENT_UI_SURFACE_IN_VIEW = 6; // 0x6
field public static final int EVENT_UI_SURFACE_OUT_OF_VIEW = 7; // 0x7
field public static final int EVENT_TARGET_SHOWN = 2; // 0x2
field public static final int EVENT_UI_SURFACE_HIDDEN = 7; // 0x7
field public static final int EVENT_UI_SURFACE_SHOWN = 6; // 0x6
}
public static final class SmartspaceTargetEvent.Builder {

View File

@@ -15,6 +15,7 @@
*/
package android.app.smartspace;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
@@ -41,6 +42,7 @@ public final class SmartspaceConfig implements Parcelable {
* The least number of smartspace targets expected to be predicted by the backend. The backend
* will always try to satisfy this threshold but it is not guaranteed to always meet it.
*/
@IntRange(from = 0, to = 50)
private final int mSmartspaceTargetCount;
/**
@@ -54,13 +56,15 @@ public final class SmartspaceConfig implements Parcelable {
@NonNull
private String mPackageName;
/** Send other client UI configurations in extras.
/**
* Send other client UI configurations in extras.
*
* This can include:
*
* - Desired maximum update frequency
* - Request to get periodic updates
* - Request to support multiple clients for the same UISurface.
* - Desired maximum update frequency (For example 1 minute update frequency for AoD, 1 second
* update frequency for home screen etc).
* - Request to get periodic updates
* - Request to support multiple clients for the same UISurface.
*/
@Nullable
private final Bundle mExtras;
@@ -165,7 +169,7 @@ public final class SmartspaceConfig implements Parcelable {
private Bundle mExtras = Bundle.EMPTY;
/**
* @param context The {@link Context} which is used to fetch the package name.
* @param context The {@link Context} which is used to fetch the package name.
* @param uiSurface the UI Surface name associated with this context.
* @hide
*/
@@ -179,7 +183,8 @@ public final class SmartspaceConfig implements Parcelable {
* Used to set the expected number of cards for this context.
*/
@NonNull
public Builder setSmartspaceTargetCount(int smartspaceTargetCount) {
public Builder setSmartspaceTargetCount(
@IntRange(from = 0, to = 50) int smartspaceTargetCount) {
this.mSmartspaceTargetCount = smartspaceTargetCount;
return this;
}

View File

@@ -63,7 +63,7 @@ import java.util.function.Consumer;
*
* void onDestroy() {
* mSmartspaceSession.unregisterPredictionUpdates()
* mSmartspaceSession.destroy();
* mSmartspaceSession.close();
* }
*
* }</pre>
@@ -81,7 +81,8 @@ public final class SmartspaceSession implements AutoCloseable {
private final AtomicBoolean mIsClosed = new AtomicBoolean(false);
private final SmartspaceSessionId mSessionId;
private final ArrayMap<Callback, CallbackWrapper> mRegisteredCallbacks = new ArrayMap<>();
private final ArrayMap<OnTargetsAvailableListener, CallbackWrapper> mRegisteredCallbacks =
new ArrayMap<>();
private final IBinder mToken = new Binder();
/**
@@ -98,11 +99,11 @@ public final class SmartspaceSession implements AutoCloseable {
IBinder b = ServiceManager.getService(Context.SMARTSPACE_SERVICE);
mInterface = android.app.smartspace.ISmartspaceManager.Stub.asInterface(b);
mSessionId = new SmartspaceSessionId(
context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUserId());
context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUser());
try {
mInterface.createSmartspaceSession(smartspaceConfig, mSessionId, mToken);
} catch (RemoteException e) {
Log.e(TAG, "Failed to cerate Smartspace session", e);
Log.e(TAG, "Failed to create Smartspace session", e);
e.rethrowFromSystemServer();
}
@@ -145,24 +146,24 @@ public final class SmartspaceSession implements AutoCloseable {
* Requests the smartspace service provide continuous updates of smartspace cards via the
* provided callback, until the given callback is unregistered.
*
* @param callbackExecutor The callback executor to use when calling the callback.
* @param callback The Callback to be called when updates of Smartspace targets are
* @param listenerExecutor The listener executor to use when firing the listener.
* @param listener The listener to be called when updates of Smartspace targets are
* available.
*/
public void registerSmartspaceUpdates(@NonNull @CallbackExecutor Executor callbackExecutor,
@NonNull Callback callback) {
public void addOnTargetsAvailableListener(@NonNull @CallbackExecutor Executor listenerExecutor,
@NonNull OnTargetsAvailableListener listener) {
if (mIsClosed.get()) {
throw new IllegalStateException("This client has already been destroyed.");
}
if (mRegisteredCallbacks.containsKey(callback)) {
if (mRegisteredCallbacks.containsKey(listener)) {
// Skip if this callback is already registered
return;
}
try {
final CallbackWrapper callbackWrapper = new CallbackWrapper(callbackExecutor,
callback::onTargetsAvailable);
mRegisteredCallbacks.put(callback, callbackWrapper);
final CallbackWrapper callbackWrapper = new CallbackWrapper(listenerExecutor,
listener::onTargetsAvailable);
mRegisteredCallbacks.put(listener, callbackWrapper);
mInterface.registerSmartspaceUpdates(mSessionId, callbackWrapper);
mInterface.requestSmartspaceUpdate(mSessionId);
} catch (RemoteException e) {
@@ -175,21 +176,21 @@ public final class SmartspaceSession implements AutoCloseable {
* Requests the smartspace service to stop providing continuous updates to the provided
* callback until the callback is re-registered.
*
* @see {@link SmartspaceSession#registerSmartspaceUpdates(Executor, Callback)}.
*
* @param callback The callback to be unregistered.
* @param listener The callback to be unregistered.
* @see {@link SmartspaceSession#addOnTargetsAvailableListener(Executor,
* OnTargetsAvailableListener)}.
*/
public void unregisterSmartspaceUpdates(@NonNull Callback callback) {
public void removeOnTargetsAvailableListener(@NonNull OnTargetsAvailableListener listener) {
if (mIsClosed.get()) {
throw new IllegalStateException("This client has already been destroyed.");
}
if (!mRegisteredCallbacks.containsKey(callback)) {
if (!mRegisteredCallbacks.containsKey(listener)) {
// Skip if this callback was never registered
return;
}
try {
final CallbackWrapper callbackWrapper = mRegisteredCallbacks.remove(callback);
final CallbackWrapper callbackWrapper = mRegisteredCallbacks.remove(listener);
mInterface.unregisterSmartspaceUpdates(mSessionId, callbackWrapper);
} catch (RemoteException e) {
Log.e(TAG, "Failed to unregister for smartspace updates", e);
@@ -201,7 +202,7 @@ public final class SmartspaceSession implements AutoCloseable {
* Destroys the client and unregisters the callback. Any method on this class after this call
* will throw {@link IllegalStateException}.
*/
public void destroy() {
private void destroy() {
if (!mIsClosed.getAndSet(true)) {
mCloseGuard.close();
@@ -238,6 +239,7 @@ public final class SmartspaceSession implements AutoCloseable {
@Override
public void close() {
try {
destroy();
finalize();
} catch (Throwable throwable) {
throwable.printStackTrace();
@@ -245,14 +247,14 @@ public final class SmartspaceSession implements AutoCloseable {
}
/**
* Callback for receiving smartspace updates.
* Listener to receive smartspace targets from the service.
*/
public interface Callback {
public interface OnTargetsAvailableListener {
/**
* Called when a new set of smartspace targets are available.
*
* @param targets Sorted list of smartspace targets.
* @param targets Ranked list of smartspace targets.
*/
void onTargetsAvailable(@NonNull List<SmartspaceTarget> targets);
}

View File

@@ -21,6 +21,7 @@ import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.UserHandle;
import java.util.Objects;
@@ -36,21 +37,21 @@ public final class SmartspaceSessionId implements Parcelable {
private final String mId;
@NonNull
private final int mUserId;
private final UserHandle mUserHandle;
/**
* Creates a new id for a Smartspace session.
*
* @hide
*/
public SmartspaceSessionId(@NonNull final String id, @NonNull final int userId) {
public SmartspaceSessionId(@NonNull final String id, @NonNull final UserHandle userHandle) {
mId = id;
mUserId = userId;
mUserHandle = userHandle;
}
private SmartspaceSessionId(Parcel p) {
mId = p.readString();
mUserId = p.readInt();
mUserHandle = p.readTypedObject(UserHandle.CREATOR);
}
/**
@@ -65,8 +66,8 @@ public final class SmartspaceSessionId implements Parcelable {
* Returns the userId associated with this sessionId.
*/
@NonNull
public int getUserId() {
return mUserId;
public UserHandle getUserHandle() {
return mUserHandle;
}
@Override
@@ -74,20 +75,20 @@ public final class SmartspaceSessionId implements Parcelable {
if (!getClass().equals(o != null ? o.getClass() : null)) return false;
SmartspaceSessionId other = (SmartspaceSessionId) o;
return mId.equals(other.mId) && mUserId == other.mUserId;
return mId.equals(other.mId) && mUserHandle == other.mUserHandle;
}
@Override
public String toString() {
return "SmartspaceSessionId{"
+ "mId='" + mId + '\''
+ ", mUserId=" + mUserId
+ ", mUserId=" + mUserHandle.getIdentifier()
+ '}';
}
@Override
public int hashCode() {
return Objects.hash(mId, mUserId);
return Objects.hash(mId, mUserHandle);
}
@Override
@@ -98,7 +99,7 @@ public final class SmartspaceSessionId implements Parcelable {
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString(mId);
dest.writeInt(mUserId);
dest.writeTypedObject(this.mUserHandle, flags);
}
public static final @NonNull Creator<SmartspaceSessionId> CREATOR =

View File

@@ -15,6 +15,7 @@
*/
package android.app.smartspace;
import android.annotation.CurrentTimeMillisLong;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -39,7 +40,7 @@ import java.util.Objects;
* {@link SmartspaceAction} as their type because they can have associated actions.
*
* <p><b>NOTE: </b>
* If {@link mWidgetId} is set, it should be preferred over all other properties.
* If {@link mWidget} is set, it should be preferred over all other properties.
* Else, if {@link mSliceUri} is set, it should be preferred over all other data properties.
* Otherwise, the instance should be treated as a data object.
*
@@ -61,18 +62,17 @@ public final class SmartspaceTarget implements Parcelable {
private final SmartspaceAction mBaseAction;
/** A timestamp indicating when the card was created. */
@NonNull
@CurrentTimeMillisLong
private final long mCreationTimeMillis;
/**
* A timestamp indicating when the card should be removed from view, in case the service
* disconnects or restarts.
*/
@NonNull
@CurrentTimeMillisLong
private final long mExpiryTimeMillis;
/** A score assigned to a target. */
@NonNull
private final float mScore;
/** A {@link List<SmartspaceAction>} containing all action chips. */
@@ -89,18 +89,15 @@ public final class SmartspaceTarget implements Parcelable {
* @see FeatureType
*/
@FeatureType
@NonNull
private final int mFeatureType;
/**
* Indicates whether the content is sensitive. Certain UI surfaces may choose to skip rendering
* real content until the device is unlocked.
*/
@NonNull
private final boolean mSensitive;
/** Indicating if the UI should show this target in its expanded state. */
@NonNull
private final boolean mShouldShowExpanded;
/** A Notification key if the target was generated using a notification. */
@@ -115,7 +112,14 @@ public final class SmartspaceTarget implements Parcelable {
@NonNull
private final UserHandle mUserHandle;
/** Target Ids of other {@link SmartspaceTarget}s if they are associated with this target. */
/**
* Target Id of other {@link SmartspaceTarget}s if it is associated with this target. This
* association is added to tell the UI that a card would be more useful if displayed with the
* associated smartspace target. This field is supposed to be taken as a suggestion and the
* association can be ignored based on the situation in the UI. It is possible to have a one way
* card association. In other words, Card B can be associated with Card A but not the other way
* around.
*/
@Nullable
private final String mAssociatedSmartspaceTargetId;
@@ -125,7 +129,7 @@ public final class SmartspaceTarget implements Parcelable {
/** {@link AppWidgetProviderInfo} if this target is a widget. */
@Nullable
private final AppWidgetProviderInfo mWidgetId;
private final AppWidgetProviderInfo mWidget;
public static final int FEATURE_UNDEFINED = 0;
public static final int FEATURE_WEATHER = 1;
@@ -202,7 +206,7 @@ public final class SmartspaceTarget implements Parcelable {
this.mUserHandle = in.readTypedObject(UserHandle.CREATOR);
this.mAssociatedSmartspaceTargetId = in.readString();
this.mSliceUri = in.readTypedObject(Uri.CREATOR);
this.mWidgetId = in.readTypedObject(AppWidgetProviderInfo.CREATOR);
this.mWidget = in.readTypedObject(AppWidgetProviderInfo.CREATOR);
}
private SmartspaceTarget(String smartspaceTargetId,
@@ -213,7 +217,7 @@ public final class SmartspaceTarget implements Parcelable {
boolean shouldShowExpanded, String sourceNotificationKey,
ComponentName componentName, UserHandle userHandle,
String associatedSmartspaceTargetId, Uri sliceUri,
AppWidgetProviderInfo widgetId) {
AppWidgetProviderInfo widget) {
mSmartspaceTargetId = smartspaceTargetId;
mHeaderAction = headerAction;
mBaseAction = baseAction;
@@ -230,7 +234,7 @@ public final class SmartspaceTarget implements Parcelable {
mUserHandle = userHandle;
mAssociatedSmartspaceTargetId = associatedSmartspaceTargetId;
mSliceUri = sliceUri;
mWidgetId = widgetId;
mWidget = widget;
}
/**
@@ -260,7 +264,7 @@ public final class SmartspaceTarget implements Parcelable {
/**
* Returns the creation time of the target.
*/
@NonNull
@CurrentTimeMillisLong
public long getCreationTimeMillis() {
return mCreationTimeMillis;
}
@@ -268,7 +272,7 @@ public final class SmartspaceTarget implements Parcelable {
/**
* Returns the expiry time of the target.
*/
@NonNull
@CurrentTimeMillisLong
public long getExpiryTimeMillis() {
return mExpiryTimeMillis;
}
@@ -276,7 +280,6 @@ public final class SmartspaceTarget implements Parcelable {
/**
* Returns the score of the target.
*/
@NonNull
public float getScore() {
return mScore;
}
@@ -300,7 +303,7 @@ public final class SmartspaceTarget implements Parcelable {
/**
* Returns the feature type of the target.
*/
@NonNull
@FeatureType
public int getFeatureType() {
return mFeatureType;
}
@@ -308,7 +311,6 @@ public final class SmartspaceTarget implements Parcelable {
/**
* Returns whether the target is sensitive or not.
*/
@NonNull
public boolean isSensitive() {
return mSensitive;
}
@@ -316,7 +318,6 @@ public final class SmartspaceTarget implements Parcelable {
/**
* Returns whether the target should be shown in expanded state.
*/
@NonNull
public boolean shouldShowExpanded() {
return mShouldShowExpanded;
}
@@ -365,8 +366,8 @@ public final class SmartspaceTarget implements Parcelable {
* Returns the AppWidgetProviderInfo, if the target is a widget.
*/
@Nullable
public AppWidgetProviderInfo getWidgetId() {
return mWidgetId;
public AppWidgetProviderInfo getWidget() {
return mWidget;
}
/**
@@ -403,7 +404,7 @@ public final class SmartspaceTarget implements Parcelable {
dest.writeTypedObject(this.mUserHandle, flags);
dest.writeString(this.mAssociatedSmartspaceTargetId);
dest.writeTypedObject(this.mSliceUri, flags);
dest.writeTypedObject(this.mWidgetId, flags);
dest.writeTypedObject(this.mWidget, flags);
}
@Override
@@ -430,7 +431,7 @@ public final class SmartspaceTarget implements Parcelable {
+ ", mUserHandle=" + mUserHandle
+ ", mAssociatedSmartspaceTargetId='" + mAssociatedSmartspaceTargetId + '\''
+ ", mSliceUri=" + mSliceUri
+ ", mWidgetId=" + mWidgetId
+ ", mWidget=" + mWidget
+ '}';
}
@@ -456,7 +457,7 @@ public final class SmartspaceTarget implements Parcelable {
&& Objects.equals(mAssociatedSmartspaceTargetId,
that.mAssociatedSmartspaceTargetId)
&& Objects.equals(mSliceUri, that.mSliceUri)
&& Objects.equals(mWidgetId, that.mWidgetId);
&& Objects.equals(mWidget, that.mWidget);
}
@Override
@@ -464,7 +465,7 @@ public final class SmartspaceTarget implements Parcelable {
return Objects.hash(mSmartspaceTargetId, mHeaderAction, mBaseAction, mCreationTimeMillis,
mExpiryTimeMillis, mScore, mActionChips, mIconGrid, mFeatureType, mSensitive,
mShouldShowExpanded, mSourceNotificationKey, mComponentName, mUserHandle,
mAssociatedSmartspaceTargetId, mSliceUri, mWidgetId);
mAssociatedSmartspaceTargetId, mSliceUri, mWidget);
}
/**
@@ -490,7 +491,7 @@ public final class SmartspaceTarget implements Parcelable {
private final UserHandle mUserHandle;
private String mAssociatedSmartspaceTargetId;
private Uri mSliceUri;
private AppWidgetProviderInfo mWidgetId;
private AppWidgetProviderInfo mWidget;
/**
* A builder for {@link SmartspaceTarget}.
@@ -528,7 +529,7 @@ public final class SmartspaceTarget implements Parcelable {
* Sets the creation time.
*/
@NonNull
public Builder setCreationTimeMillis(@NonNull long creationTimeMillis) {
public Builder setCreationTimeMillis(@CurrentTimeMillisLong long creationTimeMillis) {
this.mCreationTimeMillis = creationTimeMillis;
return this;
}
@@ -537,7 +538,7 @@ public final class SmartspaceTarget implements Parcelable {
* Sets the expiration time.
*/
@NonNull
public Builder setExpiryTimeMillis(@NonNull long expiryTimeMillis) {
public Builder setExpiryTimeMillis(@CurrentTimeMillisLong long expiryTimeMillis) {
this.mExpiryTimeMillis = expiryTimeMillis;
return this;
}
@@ -546,7 +547,7 @@ public final class SmartspaceTarget implements Parcelable {
* Sets the score.
*/
@NonNull
public Builder setScore(@NonNull float score) {
public Builder setScore(float score) {
this.mScore = score;
return this;
}
@@ -573,7 +574,7 @@ public final class SmartspaceTarget implements Parcelable {
* Sets the feature type.
*/
@NonNull
public Builder setFeatureType(@NonNull int featureType) {
public Builder setFeatureType(int featureType) {
this.mFeatureType = featureType;
return this;
}
@@ -582,7 +583,7 @@ public final class SmartspaceTarget implements Parcelable {
* Sets whether the contents are sensitive.
*/
@NonNull
public Builder setSensitive(@NonNull boolean sensitive) {
public Builder setSensitive(boolean sensitive) {
this.mSensitive = sensitive;
return this;
}
@@ -591,7 +592,7 @@ public final class SmartspaceTarget implements Parcelable {
* Sets whether to show the card as expanded.
*/
@NonNull
public Builder setShouldShowExpanded(@NonNull boolean shouldShowExpanded) {
public Builder setShouldShowExpanded(boolean shouldShowExpanded) {
this.mShouldShowExpanded = shouldShowExpanded;
return this;
}
@@ -618,7 +619,7 @@ public final class SmartspaceTarget implements Parcelable {
/**
* Sets the slice uri.
*
* <p><b>NOTE: </b> If {@link mWidgetId} is also set, {@link mSliceUri} should be ignored.
* <p><b>NOTE: </b> If {@link mWidget} is also set, {@link mSliceUri} should be ignored.
*/
@NonNull
public Builder setSliceUri(@NonNull Uri sliceUri) {
@@ -629,12 +630,12 @@ public final class SmartspaceTarget implements Parcelable {
/**
* Sets the widget id.
*
* <p><b>NOTE: </b> If {@link mWidgetId} is set, all other @Nullable params should be
* <p><b>NOTE: </b> If {@link mWidget} is set, all other @Nullable params should be
* ignored.
*/
@NonNull
public Builder setWidgetId(@NonNull AppWidgetProviderInfo widgetId) {
this.mWidgetId = widgetId;
public Builder setWidget(@NonNull AppWidgetProviderInfo widget) {
this.mWidget = widget;
return this;
}
@@ -654,7 +655,7 @@ public final class SmartspaceTarget implements Parcelable {
mHeaderAction, mBaseAction, mCreationTimeMillis, mExpiryTimeMillis, mScore,
mActionChips, mIconGrid, mFeatureType, mSensitive, mShouldShowExpanded,
mSourceNotificationKey, mComponentName, mUserHandle,
mAssociatedSmartspaceTargetId, mSliceUri, mWidgetId);
mAssociatedSmartspaceTargetId, mSliceUri, mWidget);
}
}
}

View File

@@ -41,11 +41,11 @@ public final class SmartspaceTargetEvent implements Parcelable {
/**
* Smartspace target was brought into view.
*/
public static final int EVENT_TARGET_IN_VIEW = 2;
public static final int EVENT_TARGET_SHOWN = 2;
/**
* Smartspace target went out of view.
*/
public static final int EVENT_TARGET_OUT_OF_VIEW = 3;
public static final int EVENT_TARGET_HIDDEN = 3;
/**
* A dismiss action was issued by the user.
*/
@@ -57,11 +57,11 @@ public final class SmartspaceTargetEvent implements Parcelable {
/**
* The Ui surface came into view.
*/
public static final int EVENT_UI_SURFACE_IN_VIEW = 6;
public static final int EVENT_UI_SURFACE_SHOWN = 6;
/**
* The Ui surface went out of view.
*/
public static final int EVENT_UI_SURFACE_OUT_OF_VIEW = 7;
public static final int EVENT_UI_SURFACE_HIDDEN = 7;
/**
* @see Parcelable.Creator
@@ -152,12 +152,12 @@ public final class SmartspaceTargetEvent implements Parcelable {
*/
@IntDef(prefix = {"EVENT_"}, value = {
EVENT_TARGET_INTERACTION,
EVENT_TARGET_IN_VIEW,
EVENT_TARGET_OUT_OF_VIEW,
EVENT_TARGET_SHOWN,
EVENT_TARGET_HIDDEN,
EVENT_TARGET_DISMISS,
EVENT_TARGET_BLOCK,
EVENT_UI_SURFACE_IN_VIEW,
EVENT_UI_SURFACE_OUT_OF_VIEW
EVENT_UI_SURFACE_SHOWN,
EVENT_UI_SURFACE_HIDDEN
})
@Retention(RetentionPolicy.SOURCE)
public @interface EventType {

View File

@@ -86,7 +86,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
private FrameLayout mLargeClockFrame;
private SmartspaceSession mSmartspaceSession;
private SmartspaceSession.Callback mSmartspaceCallback;
private SmartspaceSession.OnTargetsAvailableListener mSmartspaceCallback;
private float mDozeAmount;
private int mWallpaperTextColor;
private int mDozeColor = Color.WHITE;
@@ -234,7 +234,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
.createSmartspaceSession(
new SmartspaceConfig.Builder(getContext(), "lockscreen").build());
mSmartspaceCallback = targets -> smartspaceDataPlugin.onTargetsAvailable(targets);
mSmartspaceSession.registerSmartspaceUpdates(mUiExecutor, mSmartspaceCallback);
mSmartspaceSession.addOnTargetsAvailableListener(mUiExecutor, mSmartspaceCallback);
mSmartspaceSession.requestSmartspaceUpdate();
}
}
@@ -261,8 +261,8 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
mView.setClockPlugin(null, mStatusBarStateController.getState());
if (mSmartspaceSession != null) {
mSmartspaceSession.unregisterSmartspaceUpdates(mSmartspaceCallback);
mSmartspaceSession.destroy();
mSmartspaceSession.removeOnTargetsAvailableListener(mSmartspaceCallback);
mSmartspaceSession.close();
mSmartspaceSession = null;
}
mStatusBarStateController.removeCallback(mStatusBarStateListener);

View File

@@ -227,7 +227,7 @@ class MediaDataManager(
smartspaceSession = smartspaceManager.createSmartspaceSession(
SmartspaceConfig.Builder(context, SMARTSPACE_UI_SURFACE_LABEL).build())
smartspaceSession?.let {
it.registerSmartspaceUpdates(
it.addOnTargetsAvailableListener(
// Use a new thread listening to Smartspace updates instead of using the existing
// backgroundExecutor. SmartspaceSession has scheduled routine updates which can be
// unpredictable on test simulators, using the backgroundExecutor makes it's hard to
@@ -235,7 +235,7 @@ class MediaDataManager(
// Switch to use backgroundExecutor when SmartspaceSession has a good way to be
// mocked.
Executors.newCachedThreadPool(),
SmartspaceSession.Callback { targets ->
SmartspaceSession.OnTargetsAvailableListener { targets ->
smartspaceMediaDataProvider.onTargetsAvailable(targets)
})
}

View File

@@ -156,7 +156,7 @@ public class SmartspaceManagerService extends
@NonNull final Consumer<SmartspacePerUserService> c) {
ActivityManagerInternal am = LocalServices.getService(ActivityManagerInternal.class);
final int userId = am.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
sessionId.getUserId(), false, ALLOW_NON_FULL, null, null);
sessionId.getUserHandle().getIdentifier(), false, ALLOW_NON_FULL, null, null);
if (DEBUG) {
Slog.d(TAG, "runForUserLocked:" + func + " from pid=" + Binder.getCallingPid()