diff options
| -rwxr-xr-x | api/system-current.txt | 14 | ||||
| -rw-r--r-- | core/java/android/app/InstantAppResolverService.java | 27 | ||||
| -rw-r--r-- | core/java/android/content/pm/InstantAppRequestInfo.java | 120 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/InstantAppResolverConnection.java | 4 |
4 files changed, 105 insertions, 60 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 0661424da988..1f228cab339e 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -615,11 +615,11 @@ package android.app { method @Deprecated public void onGetInstantAppIntentFilter(@Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); method @Deprecated public void onGetInstantAppIntentFilter(@NonNull android.content.Intent, @Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); method @Deprecated public void onGetInstantAppIntentFilter(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); - method public void onGetInstantAppIntentFilter(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); + method @MainThread public void onGetInstantAppIntentFilter(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); method @Deprecated public void onGetInstantAppResolveInfo(@Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); method @Deprecated public void onGetInstantAppResolveInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); method @Deprecated public void onGetInstantAppResolveInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, @NonNull String, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); - method public void onGetInstantAppResolveInfo(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); + method @MainThread public void onGetInstantAppResolveInfo(@NonNull android.content.pm.InstantAppRequestInfo, @NonNull android.app.InstantAppResolverService.InstantAppResolutionCallback); } public static final class InstantAppResolverService.InstantAppResolutionCallback { @@ -2043,13 +2043,13 @@ package android.content.pm { public final class InstantAppRequestInfo implements android.os.Parcelable { ctor public InstantAppRequestInfo(@NonNull android.content.Intent, @Nullable int[], @NonNull android.os.UserHandle, boolean, @NonNull String); method public int describeContents(); + method @Nullable public int[] getHostDigestPrefix(); + method @NonNull public android.content.Intent getIntent(); + method @NonNull public String getToken(); + method @NonNull public android.os.UserHandle getUserHandle(); + method public boolean isRequesterInstantApp(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstantAppRequestInfo> CREATOR; - field @Nullable public final int[] hostDigestPrefix; - field @NonNull public final android.content.Intent intent; - field public final boolean isRequesterInstantApp; - field @NonNull public final String token; - field @NonNull public final android.os.UserHandle userHandle; } public final class InstantAppResolveInfo implements android.os.Parcelable { diff --git a/core/java/android/app/InstantAppResolverService.java b/core/java/android/app/InstantAppResolverService.java index 0cd030e0f699..4c847dbf9224 100644 --- a/core/java/android/app/InstantAppResolverService.java +++ b/core/java/android/app/InstantAppResolverService.java @@ -16,6 +16,7 @@ package android.app; +import android.annotation.MainThread; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; @@ -225,11 +226,12 @@ public abstract class InstantAppResolverService extends Service { * * @see InstantAppResolveInfo */ + @MainThread public void onGetInstantAppResolveInfo(@NonNull InstantAppRequestInfo request, @NonNull InstantAppResolutionCallback callback) { // If not overridden, forward to the old method. - onGetInstantAppResolveInfo(request.intent, request.hostDigestPrefix, request.userHandle, - request.token, callback); + onGetInstantAppResolveInfo(request.getIntent(), request.getHostDigestPrefix(), + request.getUserHandle(), request.getToken(), callback); } /** @@ -241,11 +243,12 @@ public abstract class InstantAppResolverService extends Service { * @param request The parameters for this resolution request * @param callback The {@link InstantAppResolutionCallback} to provide results to. */ + @MainThread public void onGetInstantAppIntentFilter(@NonNull InstantAppRequestInfo request, @NonNull InstantAppResolutionCallback callback) { // If not overridden, forward to the old method. - onGetInstantAppIntentFilter(request.intent, request.hostDigestPrefix, request.userHandle, - request.token, callback); + onGetInstantAppIntentFilter(request.getIntent(), request.getHostDigestPrefix(), + request.getUserHandle(), request.getToken(), callback); } /** @@ -268,7 +271,7 @@ public abstract class InstantAppResolverService extends Service { public void getInstantAppResolveInfoList(InstantAppRequestInfo request, int sequence, IRemoteCallback callback) { if (DEBUG_INSTANT) { - Slog.v(TAG, "[" + request.token + "] Phase1 called; posting"); + Slog.v(TAG, "[" + request.getToken() + "] Phase1 called; posting"); } final SomeArgs args = SomeArgs.obtain(); args.arg1 = request; @@ -281,7 +284,7 @@ public abstract class InstantAppResolverService extends Service { public void getInstantAppIntentFilterList(InstantAppRequestInfo request, IRemoteCallback callback) { if (DEBUG_INSTANT) { - Slog.v(TAG, "[" + request.token + "] Phase2 called; posting"); + Slog.v(TAG, "[" + request.getToken() + "] Phase2 called; posting"); } final SomeArgs args = SomeArgs.obtain(); args.arg1 = request; @@ -336,9 +339,9 @@ public abstract class InstantAppResolverService extends Service { args.recycle(); final int sequence = message.arg1; if (DEBUG_INSTANT) { - Slog.d(TAG, "[" + request.token + "] Phase1 request;" - + " prefix: " + Arrays.toString(request.hostDigestPrefix) - + ", userId: " + request.userHandle.getIdentifier()); + Slog.d(TAG, "[" + request.getToken() + "] Phase1 request;" + + " prefix: " + Arrays.toString(request.getHostDigestPrefix()) + + ", userId: " + request.getUserHandle().getIdentifier()); } onGetInstantAppResolveInfo(request, new InstantAppResolutionCallback(sequence, callback)); @@ -350,9 +353,9 @@ public abstract class InstantAppResolverService extends Service { final IRemoteCallback callback = (IRemoteCallback) args.arg2; args.recycle(); if (DEBUG_INSTANT) { - Slog.d(TAG, "[" + request.token + "] Phase2 request;" - + " prefix: " + Arrays.toString(request.hostDigestPrefix) - + ", userId: " + request.userHandle.getIdentifier()); + Slog.d(TAG, "[" + request.getToken() + "] Phase2 request;" + + " prefix: " + Arrays.toString(request.getHostDigestPrefix()) + + ", userId: " + request.getUserHandle().getIdentifier()); } onGetInstantAppIntentFilter(request, new InstantAppResolutionCallback(-1 /*sequence*/, callback)); diff --git a/core/java/android/content/pm/InstantAppRequestInfo.java b/core/java/android/content/pm/InstantAppRequestInfo.java index 83d55361ff2a..c531632cd0e1 100644 --- a/core/java/android/content/pm/InstantAppRequestInfo.java +++ b/core/java/android/content/pm/InstantAppRequestInfo.java @@ -31,7 +31,7 @@ import com.android.internal.util.DataClass; * @hide */ @SystemApi -@DataClass(genParcelable = true, genConstructor = true, genAidl = true) +@DataClass(genParcelable = true, genConstructor = true, genAidl = true, genGetters = true) public final class InstantAppRequestInfo implements Parcelable { /** @@ -40,26 +40,26 @@ public final class InstantAppRequestInfo implements Parcelable { * host + path of the data, if defined. */ @NonNull - public final Intent intent; + private final Intent mIntent; /** The hash prefix of the instant app's domain or null if no host is defined. */ @Nullable - public final int[] hostDigestPrefix; + private final int[] mHostDigestPrefix; /** The user requesting the instant application */ @NonNull - public final UserHandle userHandle; + private final UserHandle mUserHandle; /** Whether or not the requesting package was an instant app itself */ - public final boolean isRequesterInstantApp; + private final boolean mRequesterInstantApp; /** A unique identifier */ @NonNull - public final String token; + private final String mToken; - // Code below generated by codegen v1.0.13. + // Code below generated by codegen v1.0.15. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code @@ -83,7 +83,7 @@ public final class InstantAppRequestInfo implements Parcelable { * The hash prefix of the instant app's domain or null if no host is defined. * @param userHandle * The user requesting the instant application - * @param isRequesterInstantApp + * @param requesterInstantApp * Whether or not the requesting package was an instant app itself * @param token * A unique identifier @@ -93,23 +93,65 @@ public final class InstantAppRequestInfo implements Parcelable { @NonNull Intent intent, @Nullable int[] hostDigestPrefix, @NonNull UserHandle userHandle, - boolean isRequesterInstantApp, + boolean requesterInstantApp, @NonNull String token) { - this.intent = intent; + this.mIntent = intent; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, intent); - this.hostDigestPrefix = hostDigestPrefix; - this.userHandle = userHandle; + NonNull.class, null, mIntent); + this.mHostDigestPrefix = hostDigestPrefix; + this.mUserHandle = userHandle; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, userHandle); - this.isRequesterInstantApp = isRequesterInstantApp; - this.token = token; + NonNull.class, null, mUserHandle); + this.mRequesterInstantApp = requesterInstantApp; + this.mToken = token; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, token); + NonNull.class, null, mToken); // onConstructed(); // You can define this method to get a callback } + /** + * The sanitized {@link Intent} used for resolution. A sanitized Intent is an intent with + * potential PII removed from the original intent. Fields removed include extras and the + * host + path of the data, if defined. + */ + @DataClass.Generated.Member + public @NonNull Intent getIntent() { + return mIntent; + } + + /** + * The hash prefix of the instant app's domain or null if no host is defined. + */ + @DataClass.Generated.Member + public @Nullable int[] getHostDigestPrefix() { + return mHostDigestPrefix; + } + + /** + * The user requesting the instant application + */ + @DataClass.Generated.Member + public @NonNull UserHandle getUserHandle() { + return mUserHandle; + } + + /** + * Whether or not the requesting package was an instant app itself + */ + @DataClass.Generated.Member + public boolean isRequesterInstantApp() { + return mRequesterInstantApp; + } + + /** + * A unique identifier + */ + @DataClass.Generated.Member + public @NonNull String getToken() { + return mToken; + } + @Override @DataClass.Generated.Member public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { @@ -117,13 +159,13 @@ public final class InstantAppRequestInfo implements Parcelable { // void parcelFieldName(Parcel dest, int flags) { ... } byte flg = 0; - if (isRequesterInstantApp) flg |= 0x8; - if (hostDigestPrefix != null) flg |= 0x2; + if (mRequesterInstantApp) flg |= 0x8; + if (mHostDigestPrefix != null) flg |= 0x2; dest.writeByte(flg); - dest.writeTypedObject(intent, flags); - if (hostDigestPrefix != null) dest.writeIntArray(hostDigestPrefix); - dest.writeTypedObject(userHandle, flags); - dest.writeString(token); + dest.writeTypedObject(mIntent, flags); + if (mHostDigestPrefix != null) dest.writeIntArray(mHostDigestPrefix); + dest.writeTypedObject(mUserHandle, flags); + dest.writeString(mToken); } @Override @@ -138,23 +180,23 @@ public final class InstantAppRequestInfo implements Parcelable { // static FieldType unparcelFieldName(Parcel in) { ... } byte flg = in.readByte(); - boolean _isRequesterInstantApp = (flg & 0x8) != 0; - Intent _intent = (Intent) in.readTypedObject(Intent.CREATOR); - int[] _hostDigestPrefix = (flg & 0x2) == 0 ? null : in.createIntArray(); - UserHandle _userHandle = (UserHandle) in.readTypedObject(UserHandle.CREATOR); - String _token = in.readString(); + boolean requesterInstantApp = (flg & 0x8) != 0; + Intent intent = (Intent) in.readTypedObject(Intent.CREATOR); + int[] hostDigestPrefix = (flg & 0x2) == 0 ? null : in.createIntArray(); + UserHandle userHandle = (UserHandle) in.readTypedObject(UserHandle.CREATOR); + String token = in.readString(); - this.intent = _intent; + this.mIntent = intent; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, intent); - this.hostDigestPrefix = _hostDigestPrefix; - this.userHandle = _userHandle; + NonNull.class, null, mIntent); + this.mHostDigestPrefix = hostDigestPrefix; + this.mUserHandle = userHandle; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, userHandle); - this.isRequesterInstantApp = _isRequesterInstantApp; - this.token = _token; + NonNull.class, null, mUserHandle); + this.mRequesterInstantApp = requesterInstantApp; + this.mToken = token; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, token); + NonNull.class, null, mToken); // onConstructed(); // You can define this method to get a callback } @@ -174,10 +216,10 @@ public final class InstantAppRequestInfo implements Parcelable { }; @DataClass.Generated( - time = 1574373347443L, - codegenVersion = "1.0.13", + time = 1583964236162L, + codegenVersion = "1.0.15", sourceFile = "frameworks/base/core/java/android/content/pm/InstantAppRequestInfo.java", - inputSignatures = "public final @android.annotation.NonNull android.content.Intent intent\npublic final @android.annotation.Nullable int[] hostDigestPrefix\npublic final @android.annotation.NonNull android.os.UserHandle userHandle\npublic final boolean isRequesterInstantApp\npublic final @android.annotation.NonNull java.lang.String token\nclass InstantAppRequestInfo extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genConstructor=true, genAidl=true)") + inputSignatures = "private final @android.annotation.NonNull android.content.Intent mIntent\nprivate final @android.annotation.Nullable int[] mHostDigestPrefix\nprivate final @android.annotation.NonNull android.os.UserHandle mUserHandle\nprivate final boolean mRequesterInstantApp\nprivate final @android.annotation.NonNull java.lang.String mToken\nclass InstantAppRequestInfo extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genConstructor=true, genAidl=true, genGetters=true)") @Deprecated private void __metadata() {} diff --git a/services/core/java/com/android/server/pm/InstantAppResolverConnection.java b/services/core/java/com/android/server/pm/InstantAppResolverConnection.java index 0fe2eb1e6f4b..a9a4589fdb94 100644 --- a/services/core/java/com/android/server/pm/InstantAppResolverConnection.java +++ b/services/core/java/com/android/server/pm/InstantAppResolverConnection.java @@ -92,7 +92,7 @@ final class InstantAppResolverConnection implements DeathRecipient { IInstantAppResolver target = null; try { try { - target = getRemoteInstanceLazy(request.token); + target = getRemoteInstanceLazy(request.getToken()); } catch (TimeoutException e) { throw new ConnectionException(ConnectionException.FAILURE_BIND); } catch (InterruptedException e) { @@ -126,7 +126,7 @@ final class InstantAppResolverConnection implements DeathRecipient { } }; try { - getRemoteInstanceLazy(request.token) + getRemoteInstanceLazy(request.getToken()) .getInstantAppIntentFilterList(request, remoteCallback); } catch (TimeoutException e) { throw new ConnectionException(ConnectionException.FAILURE_BIND); |