Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 387c7cb1 authored by Mehdi Alizadeh's avatar Mehdi Alizadeh
Browse files

Adds nullability annotation and java docs to App Prediction APIs

Also rethrows RemoteExceptions in AppPredictor class.

Test: Builds successfully
Bug: 126701214
Bug: 126699210
Bug: 126701563
Bug: 126180215
Bug: 126701789
Bug: 126701213
Bug: 126178969
Bug: 126179771
Bug: 126700116
Bug: 126180255

Change-Id: I3c76a71abbb8fdc9cadfaa4c6289ded4de379bd8
parent c91fa25b
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -1030,22 +1030,22 @@ package android.app.prediction {
    method public int describeContents();
    method @Nullable public android.os.Bundle getExtras();
    method @NonNull public String getPackageName();
    method public int getPredictedTargetCount();
    method public String getUiSurface();
    method public void writeToParcel(android.os.Parcel, int);
    method @IntRange(from=0) public int getPredictedTargetCount();
    method @NonNull public String getUiSurface();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionContext> CREATOR;
  }
  public static final class AppPredictionContext.Builder {
    ctor public AppPredictionContext.Builder(@NonNull android.content.Context);
    method public android.app.prediction.AppPredictionContext build();
    method public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
    method public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(int);
    method public android.app.prediction.AppPredictionContext.Builder setUiSurface(@Nullable String);
    method @NonNull public android.app.prediction.AppPredictionContext build();
    method @NonNull public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
    method @NonNull public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(@IntRange(from=0) int);
    method @NonNull public android.app.prediction.AppPredictionContext.Builder setUiSurface(@NonNull String);
  }
  public final class AppPredictionManager {
    method public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
    method @NonNull public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
  }
  public final class AppPredictionSessionId implements android.os.Parcelable {
@@ -1075,7 +1075,7 @@ package android.app.prediction {
    method @Nullable public String getClassName();
    method @NonNull public android.app.prediction.AppTargetId getId();
    method @NonNull public String getPackageName();
    method public int getRank();
    method @IntRange(from=0) public int getRank();
    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
    method @NonNull public android.os.UserHandle getUser();
    method public void writeToParcel(android.os.Parcel, int);
@@ -1084,8 +1084,8 @@ package android.app.prediction {
  public final class AppTargetEvent implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public int getAction();
    method @NonNull public String getLaunchLocation();
    method public int getAction();
    method @Nullable public String getLaunchLocation();
    method @Nullable public android.app.prediction.AppTarget getTarget();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final int ACTION_DISMISS = 2; // 0x2
@@ -1096,8 +1096,8 @@ package android.app.prediction {
  public static final class AppTargetEvent.Builder {
    ctor public AppTargetEvent.Builder(@Nullable android.app.prediction.AppTarget, int);
    method public android.app.prediction.AppTargetEvent build();
    method public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(String);
    method @NonNull public android.app.prediction.AppTargetEvent build();
    method @NonNull public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(@Nullable String);
  }
  public final class AppTargetId implements android.os.Parcelable {
@@ -1754,9 +1754,9 @@ package android.content.pm {
  public static final class ShortcutManager.ShareShortcutInfo implements android.os.Parcelable {
    method public int describeContents();
    method public android.content.pm.ShortcutInfo getShortcutInfo();
    method public android.content.ComponentName getTargetComponent();
    method public void writeToParcel(android.os.Parcel, int);
    method @NonNull public android.content.pm.ShortcutInfo getShortcutInfo();
    method @NonNull public android.content.ComponentName getTargetComponent();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.ShortcutManager.ShareShortcutInfo> CREATOR;
  }
@@ -6324,7 +6324,7 @@ package android.service.appprediction {
  public abstract class AppPredictionService extends android.app.Service {
    ctor public AppPredictionService();
    method @MainThread public abstract void onAppTargetEvent(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull android.app.prediction.AppTargetEvent);
    method public final android.os.IBinder onBind(android.content.Intent);
    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
    method public void onCreatePredictionSession(@NonNull android.app.prediction.AppPredictionContext, @NonNull android.app.prediction.AppPredictionSessionId);
    method @MainThread public void onDestroyPredictionSession(@NonNull android.app.prediction.AppPredictionSessionId);
    method @MainThread public abstract void onLocationShown(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
+14 −14
Original line number Diff line number Diff line
@@ -427,22 +427,22 @@ package android.app.prediction {
    method public int describeContents();
    method @Nullable public android.os.Bundle getExtras();
    method @NonNull public String getPackageName();
    method public int getPredictedTargetCount();
    method public String getUiSurface();
    method public void writeToParcel(android.os.Parcel, int);
    method @IntRange(from=0) public int getPredictedTargetCount();
    method @NonNull public String getUiSurface();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.prediction.AppPredictionContext> CREATOR;
  }

  public static final class AppPredictionContext.Builder {
    ctor public AppPredictionContext.Builder(@NonNull android.content.Context);
    method public android.app.prediction.AppPredictionContext build();
    method public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
    method public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(int);
    method public android.app.prediction.AppPredictionContext.Builder setUiSurface(@Nullable String);
    method @NonNull public android.app.prediction.AppPredictionContext build();
    method @NonNull public android.app.prediction.AppPredictionContext.Builder setExtras(@Nullable android.os.Bundle);
    method @NonNull public android.app.prediction.AppPredictionContext.Builder setPredictedTargetCount(@IntRange(from=0) int);
    method @NonNull public android.app.prediction.AppPredictionContext.Builder setUiSurface(@NonNull String);
  }

  public final class AppPredictionManager {
    method public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
    method @NonNull public android.app.prediction.AppPredictor createAppPredictionSession(@NonNull android.app.prediction.AppPredictionContext);
  }

  public final class AppPredictionSessionId implements android.os.Parcelable {
@@ -472,7 +472,7 @@ package android.app.prediction {
    method @Nullable public String getClassName();
    method @NonNull public android.app.prediction.AppTargetId getId();
    method @NonNull public String getPackageName();
    method public int getRank();
    method @IntRange(from=0) public int getRank();
    method @Nullable public android.content.pm.ShortcutInfo getShortcutInfo();
    method @NonNull public android.os.UserHandle getUser();
    method public void writeToParcel(android.os.Parcel, int);
@@ -481,8 +481,8 @@ package android.app.prediction {

  public final class AppTargetEvent implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public int getAction();
    method @NonNull public String getLaunchLocation();
    method public int getAction();
    method @Nullable public String getLaunchLocation();
    method @Nullable public android.app.prediction.AppTarget getTarget();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final int ACTION_DISMISS = 2; // 0x2
@@ -493,8 +493,8 @@ package android.app.prediction {

  public static final class AppTargetEvent.Builder {
    ctor public AppTargetEvent.Builder(@Nullable android.app.prediction.AppTarget, int);
    method public android.app.prediction.AppTargetEvent build();
    method public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(String);
    method @NonNull public android.app.prediction.AppTargetEvent build();
    method @NonNull public android.app.prediction.AppTargetEvent.Builder setLaunchLocation(@Nullable String);
  }

  public final class AppTargetId implements android.os.Parcelable {
@@ -2224,7 +2224,7 @@ package android.service.appprediction {
  public abstract class AppPredictionService extends android.app.Service {
    ctor public AppPredictionService();
    method @MainThread public abstract void onAppTargetEvent(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull android.app.prediction.AppTargetEvent);
    method public final android.os.IBinder onBind(android.content.Intent);
    method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
    method public void onCreatePredictionSession(@NonNull android.app.prediction.AppPredictionContext, @NonNull android.app.prediction.AppPredictionSessionId);
    method @MainThread public void onDestroyPredictionSession(@NonNull android.app.prediction.AppPredictionSessionId);
    method @MainThread public abstract void onLocationShown(@NonNull android.app.prediction.AppPredictionSessionId, @NonNull String, @NonNull java.util.List<android.app.prediction.AppTargetId>);
+11 −5
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package android.app.prediction;

import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
@@ -49,18 +50,19 @@ public final class AppPredictionContext implements Parcelable {
        mExtras = extras;
    }

    private AppPredictionContext(Parcel parcel) {
    private AppPredictionContext(@NonNull Parcel parcel) {
        mUiSurface = parcel.readString();
        mPredictedTargetCount = parcel.readInt();
        mPackageName = parcel.readString();
        mExtras = parcel.readBundle();
    }

    @NonNull
    public String getUiSurface() {
        return mUiSurface;
    }

    public int getPredictedTargetCount() {
    public @IntRange(from = 0) int getPredictedTargetCount() {
        return mPredictedTargetCount;
    }

@@ -91,7 +93,7 @@ public final class AppPredictionContext implements Parcelable {
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        dest.writeString(mUiSurface);
        dest.writeInt(mPredictedTargetCount);
        dest.writeString(mPackageName);
@@ -144,7 +146,8 @@ public final class AppPredictionContext implements Parcelable {
        /**
         * Sets the number of prediction targets as a hint.
         */
        public Builder setPredictedTargetCount(int predictedTargetCount) {
        @NonNull
        public Builder setPredictedTargetCount(@IntRange(from = 0) int predictedTargetCount) {
            mPredictedTargetCount = predictedTargetCount;
            return this;
        }
@@ -152,7 +155,8 @@ public final class AppPredictionContext implements Parcelable {
        /**
         * Sets the UI surface.
         */
        public Builder setUiSurface(@Nullable String uiSurface) {
        @NonNull
        public Builder setUiSurface(@NonNull String uiSurface) {
            mUiSurface = uiSurface;
            return this;
        }
@@ -160,6 +164,7 @@ public final class AppPredictionContext implements Parcelable {
        /**
         * Sets the extras.
         */
        @NonNull
        public Builder setExtras(@Nullable Bundle extras) {
            mExtras = extras;
            return this;
@@ -168,6 +173,7 @@ public final class AppPredictionContext implements Parcelable {
        /**
         * Builds a new context instance.
         */
        @NonNull
        public AppPredictionContext build() {
            return new AppPredictionContext(mUiSurface, mPredictedTargetCount, mPackageName,
                    mExtras);
+1 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ public final class AppPredictionManager {
    /**
     * Creates a new app prediction session.
     */
    @NonNull
    public AppPredictor createAppPredictionSession(
            @NonNull AppPredictionContext predictionContext) {
        return new AppPredictor(mContext, predictionContext);
+8 −3
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ public final class AppPredictor {
            mPredictionManager.createPredictionSession(predictionContext, mSessionId);
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to create predictor", e);
            return;
            e.rethrowAsRuntimeException();
        }

        mCloseGuard.open("close");
@@ -112,6 +112,7 @@ public final class AppPredictor {
            mPredictionManager.notifyAppTargetEvent(mSessionId, event);
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to notify app target event", e);
            e.rethrowAsRuntimeException();
        }
    }

@@ -129,6 +130,7 @@ public final class AppPredictor {
                    new ParceledListSlice<>(targetIds));
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to notify location shown event", e);
            e.rethrowAsRuntimeException();
        }
    }

@@ -155,6 +157,7 @@ public final class AppPredictor {
            mRegisteredCallbacks.put(callback, callbackWrapper);
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to register for prediction updates", e);
            e.rethrowAsRuntimeException();
        }
    }

@@ -176,6 +179,7 @@ public final class AppPredictor {
            mPredictionManager.unregisterPredictionUpdates(mSessionId, callbackWrapper);
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to unregister for prediction updates", e);
            e.rethrowAsRuntimeException();
        }
    }

@@ -194,6 +198,7 @@ public final class AppPredictor {
            mPredictionManager.requestPredictionUpdate(mSessionId);
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to request prediction update", e);
            e.rethrowAsRuntimeException();
        }
    }

@@ -213,14 +218,13 @@ public final class AppPredictor {
                    new CallbackWrapper(callbackExecutor, callback));
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to sort targets", e);
            e.rethrowAsRuntimeException();
        }
    }

    /**
     * Destroys the client and unregisters the callback. Any method on this class after this call
     * with throw {@link IllegalStateException}.
     *
     * TODO(b/111701043): Add state check in other methods.
     */
    public void destroy() {
        if (!mIsClosed.getAndSet(true)) {
@@ -231,6 +235,7 @@ public final class AppPredictor {
                mPredictionManager.onDestroyPredictionSession(mSessionId);
            } catch (RemoteException e) {
                Log.e(TAG, "Failed to notify app target event", e);
                e.rethrowAsRuntimeException();
            }
        } else {
            throw new IllegalStateException("This client has already been destroyed.");
Loading