summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java1
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/AppSearchManagerFrameworkInitializer.java1
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/AppSearchMigrationHelper.java11
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java95
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/GlobalSearchSession.java15
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/SearchResults.java17
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchBatchResultParcel.aidl (renamed from apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.aidl)6
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchBatchResultParcel.java97
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchResultParcel.aidl (renamed from apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.aidl)6
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchResultParcel.java95
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchBatchResultCallback.aidl (renamed from apex/appsearch/framework/java/android/app/appsearch/IAppSearchBatchResultCallback.aidl)10
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchManager.aidl (renamed from apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl)8
-rw-r--r--apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchResultCallback.aidl (renamed from apex/appsearch/framework/java/android/app/appsearch/IAppSearchResultCallback.aidl)6
-rw-r--r--apex/appsearch/framework/java/external/android/app/appsearch/AppSearchBatchResult.java (renamed from apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java)74
-rw-r--r--apex/appsearch/framework/java/external/android/app/appsearch/AppSearchResult.java (renamed from apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java)80
-rw-r--r--apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java20
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java36
17 files changed, 368 insertions, 210 deletions
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
index c4dd1a0bc4e5..bc3c79fea9e4 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
@@ -18,6 +18,7 @@ package android.app.appsearch;
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.SystemService;
+import android.app.appsearch.aidl.IAppSearchManager;
import android.content.Context;
import com.android.internal.util.Preconditions;
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManagerFrameworkInitializer.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManagerFrameworkInitializer.java
index ec0533e14391..7dc527aa28fb 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManagerFrameworkInitializer.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManagerFrameworkInitializer.java
@@ -17,6 +17,7 @@ package android.app.appsearch;
import android.annotation.SystemApi;
import android.app.SystemServiceRegistry;
+import android.app.appsearch.aidl.IAppSearchManager;
import android.content.Context;
/**
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchMigrationHelper.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchMigrationHelper.java
index 0089c6dc8d2e..353051c9423b 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchMigrationHelper.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchMigrationHelper.java
@@ -23,6 +23,9 @@ import static android.os.ParcelFileDescriptor.MODE_WRITE_ONLY;
import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.annotation.WorkerThread;
+import android.app.appsearch.aidl.AppSearchResultParcel;
+import android.app.appsearch.aidl.IAppSearchManager;
+import android.app.appsearch.aidl.IAppSearchResultCallback;
import android.app.appsearch.exceptions.AppSearchException;
import android.os.Bundle;
import android.os.Parcel;
@@ -105,8 +108,8 @@ public class AppSearchMigrationHelper implements Closeable {
mUserId,
new IAppSearchResultCallback.Stub() {
@Override
- public void onResult(AppSearchResult result) {
- future.complete(result);
+ public void onResult(AppSearchResultParcel resultParcel) {
+ future.complete(resultParcel.getResult());
}
});
AppSearchResult<Void> result = future.get();
@@ -145,8 +148,8 @@ public class AppSearchMigrationHelper implements Closeable {
mService.putDocumentsFromFile(mPackageName, mDatabaseName, fileDescriptor, mUserId,
new IAppSearchResultCallback.Stub() {
@Override
- public void onResult(AppSearchResult result) {
- future.complete(result);
+ public void onResult(AppSearchResultParcel resultParcel) {
+ future.complete(resultParcel.getResult());
}
});
AppSearchResult<List<Bundle>> result = future.get();
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java
index c112d0efc209..5910130e6069 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java
@@ -19,6 +19,11 @@ package android.app.appsearch;
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.UserIdInt;
+import android.app.appsearch.aidl.AppSearchBatchResultParcel;
+import android.app.appsearch.aidl.AppSearchResultParcel;
+import android.app.appsearch.aidl.IAppSearchBatchResultCallback;
+import android.app.appsearch.aidl.IAppSearchManager;
+import android.app.appsearch.aidl.IAppSearchResultCallback;
import android.app.appsearch.exceptions.AppSearchException;
import android.app.appsearch.util.SchemaMigrationUtil;
import android.compat.annotation.UnsupportedAppUsage;
@@ -86,13 +91,15 @@ public final class AppSearchSession implements Closeable {
@NonNull Consumer<AppSearchResult<AppSearchSession>> callback) {
try {
mService.initialize(mUserId, new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
executor.execute(() -> {
+ AppSearchResult<Void> result = resultParcel.getResult();
if (result.isSuccess()) {
callback.accept(
AppSearchResult.newSuccessfulResult(AppSearchSession.this));
} else {
- callback.accept(result);
+ callback.accept(AppSearchResult.newFailedResult(result));
}
});
}
@@ -191,15 +198,16 @@ public final class AppSearchSession implements Closeable {
mDatabaseName,
mUserId,
new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
executor.execute(() -> {
+ AppSearchResult<Bundle> result = resultParcel.getResult();
if (result.isSuccess()) {
- Bundle responseBundle = (Bundle) result.getResultValue();
GetSchemaResponse response =
- new GetSchemaResponse(responseBundle);
+ new GetSchemaResponse(result.getResultValue());
callback.accept(AppSearchResult.newSuccessfulResult(response));
} else {
- callback.accept(result);
+ callback.accept(AppSearchResult.newFailedResult(result));
}
});
}
@@ -227,15 +235,17 @@ public final class AppSearchSession implements Closeable {
mDatabaseName,
mUserId,
new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
executor.execute(() -> {
+ AppSearchResult<List<String>> result = resultParcel.getResult();
if (result.isSuccess()) {
Set<String> namespaces =
- new ArraySet<>((List<String>) result.getResultValue());
+ new ArraySet<>(result.getResultValue());
callback.accept(
AppSearchResult.newSuccessfulResult(namespaces));
} else {
- callback.accept(result);
+ callback.accept(AppSearchResult.newFailedResult(result));
}
});
}
@@ -280,13 +290,14 @@ public final class AppSearchSession implements Closeable {
/*binderCallStartTimeMillis=*/ SystemClock.elapsedRealtime(),
new IAppSearchBatchResultCallback.Stub() {
@Override
- public void onResult(AppSearchBatchResult result) {
- executor.execute(() -> callback.onResult(result));
+ public void onResult(AppSearchBatchResultParcel resultParcel) {
+ executor.execute(() -> callback.onResult(resultParcel.getResult()));
}
@Override
- public void onSystemError(AppSearchResult result) {
- executor.execute(() -> sendSystemErrorToCallback(result, callback));
+ public void onSystemError(AppSearchResultParcel resultParcel) {
+ executor.execute(() -> sendSystemErrorToCallback(
+ resultParcel.getResult(), callback));
}
});
mIsMutated = true;
@@ -341,15 +352,17 @@ public final class AppSearchSession implements Closeable {
mUserId,
new IAppSearchBatchResultCallback.Stub() {
@Override
- public void onResult(AppSearchBatchResult result) {
+ public void onResult(AppSearchBatchResultParcel resultParcel) {
executor.execute(() -> {
+ AppSearchBatchResult<String, Bundle> result =
+ resultParcel.getResult();
AppSearchBatchResult.Builder<String, GenericDocument>
documentResultBuilder =
new AppSearchBatchResult.Builder<>();
// Translate successful results
for (Map.Entry<String, Bundle> bundleEntry :
- ((Map<String, Bundle>) result.getSuccesses()).entrySet()) {
+ result.getSuccesses().entrySet()) {
GenericDocument document;
try {
document = new GenericDocument(bundleEntry.getValue());
@@ -380,8 +393,9 @@ public final class AppSearchSession implements Closeable {
}
@Override
- public void onSystemError(AppSearchResult result) {
- executor.execute(() -> sendSystemErrorToCallback(result, callback));
+ public void onSystemError(AppSearchResultParcel result) {
+ executor.execute(
+ () -> sendSystemErrorToCallback(result.getResult(), callback));
}
});
} catch (RemoteException e) {
@@ -492,8 +506,9 @@ public final class AppSearchSession implements Closeable {
/*systemUsage=*/ false,
mUserId,
new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
- executor.execute(() -> callback.accept(result));
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
+ executor.execute(() -> callback.accept(resultParcel.getResult()));
}
});
mIsMutated = true;
@@ -550,13 +565,14 @@ public final class AppSearchSession implements Closeable {
new ArrayList<>(request.getIds()), mUserId,
new IAppSearchBatchResultCallback.Stub() {
@Override
- public void onResult(AppSearchBatchResult result) {
- executor.execute(() -> callback.onResult(result));
+ public void onResult(AppSearchBatchResultParcel resultParcel) {
+ executor.execute(() -> callback.onResult(resultParcel.getResult()));
}
@Override
- public void onSystemError(AppSearchResult result) {
- executor.execute(() -> sendSystemErrorToCallback(result, callback));
+ public void onSystemError(AppSearchResultParcel resultParcel) {
+ executor.execute(() -> sendSystemErrorToCallback(
+ resultParcel.getResult(), callback));
}
});
mIsMutated = true;
@@ -598,8 +614,9 @@ public final class AppSearchSession implements Closeable {
mService.removeByQuery(mPackageName, mDatabaseName, queryExpression,
searchSpec.getBundle(), mUserId,
new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
- executor.execute(() -> callback.accept(result));
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
+ executor.execute(() -> callback.accept(resultParcel.getResult()));
}
});
mIsMutated = true;
@@ -629,15 +646,15 @@ public final class AppSearchSession implements Closeable {
mDatabaseName,
mUserId,
new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
executor.execute(() -> {
+ AppSearchResult<Bundle> result = resultParcel.getResult();
if (result.isSuccess()) {
- Bundle responseBundle = (Bundle) result.getResultValue();
- StorageInfo response =
- new StorageInfo(responseBundle);
+ StorageInfo response = new StorageInfo(result.getResultValue());
callback.accept(AppSearchResult.newSuccessfulResult(response));
} else {
- callback.accept(result);
+ callback.accept(AppSearchResult.newFailedResult(result));
}
});
}
@@ -686,13 +703,14 @@ public final class AppSearchSession implements Closeable {
request.getVersion(),
mUserId,
new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
executor.execute(() -> {
+ AppSearchResult<Bundle> result = resultParcel.getResult();
if (result.isSuccess()) {
try {
SetSchemaResponse setSchemaResponse =
- new SetSchemaResponse(
- (Bundle) result.getResultValue());
+ new SetSchemaResponse(result.getResultValue());
if (!request.isForceOverride()) {
// Throw exception if there is any deleted types or
// incompatible types. That's the only case we swallowed
@@ -707,7 +725,7 @@ public final class AppSearchSession implements Closeable {
callback.accept(AppSearchResult.throwableToFailedResult(t));
}
} else {
- callback.accept(result);
+ callback.accept(AppSearchResult.newFailedResult(result));
}
});
}
@@ -772,8 +790,9 @@ public final class AppSearchSession implements Closeable {
request.getVersion(),
mUserId,
new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
- setSchemaFuture.complete(result);
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
+ setSchemaFuture.complete(resultParcel.getResult());
}
});
AppSearchResult<Bundle> setSchemaResult = setSchemaFuture.get();
@@ -823,8 +842,8 @@ public final class AppSearchSession implements Closeable {
mUserId,
new IAppSearchResultCallback.Stub() {
@Override
- public void onResult(AppSearchResult result) {
- setSchema2Future.complete(result);
+ public void onResult(AppSearchResultParcel resultParcel) {
+ setSchema2Future.complete(resultParcel.getResult());
}
});
AppSearchResult<Bundle> setSchema2Result = setSchema2Future.get();
diff --git a/apex/appsearch/framework/java/android/app/appsearch/GlobalSearchSession.java b/apex/appsearch/framework/java/android/app/appsearch/GlobalSearchSession.java
index d49f47271055..7d246c20251b 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/GlobalSearchSession.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/GlobalSearchSession.java
@@ -16,10 +16,12 @@
package android.app.appsearch;
-
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.UserIdInt;
+import android.app.appsearch.aidl.AppSearchResultParcel;
+import android.app.appsearch.aidl.IAppSearchManager;
+import android.app.appsearch.aidl.IAppSearchResultCallback;
import android.os.RemoteException;
import android.util.Log;
@@ -71,13 +73,15 @@ public class GlobalSearchSession implements Closeable {
@NonNull Consumer<AppSearchResult<GlobalSearchSession>> callback) {
try {
mService.initialize(mUserId, new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
executor.execute(() -> {
+ AppSearchResult<Void> result = resultParcel.getResult();
if (result.isSuccess()) {
callback.accept(
AppSearchResult.newSuccessfulResult(GlobalSearchSession.this));
} else {
- callback.accept(result);
+ callback.accept(AppSearchResult.newFailedResult(result));
}
});
}
@@ -159,8 +163,9 @@ public class GlobalSearchSession implements Closeable {
/*systemUsage=*/ true,
mUserId,
new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
- executor.execute(() -> callback.accept(result));
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
+ executor.execute(() -> callback.accept(resultParcel.getResult()));
}
});
mIsMutated = true;
diff --git a/apex/appsearch/framework/java/android/app/appsearch/SearchResults.java b/apex/appsearch/framework/java/android/app/appsearch/SearchResults.java
index 531c98425288..43686724936a 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/SearchResults.java
+++ b/apex/appsearch/framework/java/android/app/appsearch/SearchResults.java
@@ -20,6 +20,9 @@ import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
+import android.app.appsearch.aidl.AppSearchResultParcel;
+import android.app.appsearch.aidl.IAppSearchManager;
+import android.app.appsearch.aidl.IAppSearchResultCallback;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;
@@ -139,18 +142,20 @@ public class SearchResults implements Closeable {
@NonNull @CallbackExecutor Executor executor,
@NonNull Consumer<AppSearchResult<List<SearchResult>>> callback) {
return new IAppSearchResultCallback.Stub() {
- public void onResult(AppSearchResult result) {
- executor.execute(() -> invokeCallback(result, callback));
+ @Override
+ public void onResult(AppSearchResultParcel resultParcel) {
+ executor.execute(() -> invokeCallback(resultParcel.getResult(), callback));
}
};
}
- private void invokeCallback(AppSearchResult result,
+ private void invokeCallback(
+ @NonNull AppSearchResult<Bundle> searchResultPageResult,
@NonNull Consumer<AppSearchResult<List<SearchResult>>> callback) {
- if (result.isSuccess()) {
+ if (searchResultPageResult.isSuccess()) {
try {
SearchResultPage searchResultPage =
- new SearchResultPage((Bundle) result.getResultValue());
+ new SearchResultPage(searchResultPageResult.getResultValue());
mNextPageToken = searchResultPage.getNextPageToken();
callback.accept(AppSearchResult.newSuccessfulResult(
searchResultPage.getResults()));
@@ -158,7 +163,7 @@ public class SearchResults implements Closeable {
callback.accept(AppSearchResult.throwableToFailedResult(t));
}
} else {
- callback.accept(result);
+ callback.accept(AppSearchResult.newFailedResult(searchResultPageResult));
}
}
}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.aidl b/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchBatchResultParcel.aidl
index 37ce990b97c4..89908cde582d 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.aidl
+++ b/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchBatchResultParcel.aidl
@@ -1,5 +1,5 @@
/**
- * Copyright 2020, The Android Open Source Project
+ * Copyright 2021, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.app.appsearch;
+package android.app.appsearch.aidl;
/** {@hide} */
-parcelable AppSearchResult<ValueType>; \ No newline at end of file
+parcelable AppSearchBatchResultParcel<ValueType>;
diff --git a/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchBatchResultParcel.java b/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchBatchResultParcel.java
new file mode 100644
index 000000000000..b0cc10c2f1c1
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchBatchResultParcel.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch.aidl;
+
+import android.annotation.NonNull;
+import android.app.appsearch.AppSearchBatchResult;
+import android.app.appsearch.AppSearchResult;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Parcelable wrapper around {@link AppSearchBatchResult}.
+ *
+ * <p>{@link AppSearchBatchResult} can contain any type of key and value, including non-parcelable
+ * values. For the specific case of sending {@link AppSearchBatchResult} across Binder, this class
+ * wraps an {@link AppSearchBatchResult} that has String keys and Parcelable values. It provides
+ * parcelability of the whole structure.
+ *
+ * @param <ValueType> The type of result object for successful calls. Must be a parcelable type.
+ * @hide
+ */
+public final class AppSearchBatchResultParcel<ValueType> implements Parcelable {
+ private final AppSearchBatchResult<String, ValueType> mResult;
+
+ /** Creates a new {@link AppSearchBatchResultParcel} from the given result. */
+ public AppSearchBatchResultParcel(@NonNull AppSearchBatchResult<String, ValueType> result) {
+ mResult = Objects.requireNonNull(result);
+ }
+
+ private AppSearchBatchResultParcel(@NonNull Parcel in) {
+ Bundle bundle = in.readBundle();
+ AppSearchBatchResult.Builder<String, ValueType> builder =
+ new AppSearchBatchResult.Builder<>();
+ for (String key : bundle.keySet()) {
+ AppSearchResultParcel<ValueType> resultParcel = bundle.getParcelable(key);
+ builder.setResult(key, resultParcel.getResult());
+ }
+ mResult = builder.build();
+ }
+
+ @NonNull
+ public AppSearchBatchResult<String, ValueType> getResult() {
+ return mResult;
+ }
+
+ /** @hide */
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ Bundle bundle = new Bundle();
+ for (Map.Entry<String, AppSearchResult<ValueType>> entry
+ : mResult.getAll().entrySet()) {
+ bundle.putParcelable(entry.getKey(), new AppSearchResultParcel<>(entry.getValue()));
+ }
+ dest.writeBundle(bundle);
+ }
+
+ /** @hide */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /** @hide */
+ @NonNull
+ public static final Creator<AppSearchBatchResultParcel<?>> CREATOR =
+ new Creator<AppSearchBatchResultParcel<?>>() {
+ @NonNull
+ @Override
+ public AppSearchBatchResultParcel<?> createFromParcel(@NonNull Parcel in) {
+ return new AppSearchBatchResultParcel<>(in);
+ }
+
+ @NonNull
+ @Override
+ public AppSearchBatchResultParcel<?>[] newArray(int size) {
+ return new AppSearchBatchResultParcel<?>[size];
+ }
+ };
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.aidl b/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchResultParcel.aidl
index 4686de8df268..4e35bd5d7262 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.aidl
+++ b/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchResultParcel.aidl
@@ -1,5 +1,5 @@
/**
- * Copyright 2020, The Android Open Source Project
+ * Copyright 2021, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.app.appsearch;
+package android.app.appsearch.aidl;
/** {@hide} */
-parcelable AppSearchBatchResult; \ No newline at end of file
+parcelable AppSearchResultParcel<ValueType>;
diff --git a/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchResultParcel.java b/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchResultParcel.java
new file mode 100644
index 000000000000..8b137d3bf926
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/aidl/AppSearchResultParcel.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch.aidl;
+
+import android.annotation.NonNull;
+import android.app.appsearch.AppSearchResult;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * Parcelable wrapper around {@link AppSearchResult}.
+ *
+ * <p>{@link AppSearchResult} can contain any value, including non-parcelable values. For the
+ * specific case of sending {@link AppSearchResult} across Binder, this class wraps an
+ * {@link AppSearchResult} that contains a parcelable type and provides parcelability of the whole
+ * structure.
+ *
+ * @param <ValueType> The type of result object for successful calls. Must be a parcelable type.
+ * @hide
+ */
+public final class AppSearchResultParcel<ValueType> implements Parcelable {
+ private final AppSearchResult<ValueType> mResult;
+
+ /** Creates a new {@link AppSearchResultParcel} from the given result. */
+ public AppSearchResultParcel(@NonNull AppSearchResult<ValueType> result) {
+ mResult = Objects.requireNonNull(result);
+ }
+
+ private AppSearchResultParcel(@NonNull Parcel in) {
+ int resultCode = in.readInt();
+ ValueType resultValue = (ValueType) in.readValue(/*loader=*/ null);
+ String errorMessage = in.readString();
+ if (resultCode == AppSearchResult.RESULT_OK) {
+ mResult = AppSearchResult.newSuccessfulResult(resultValue);
+ } else {
+ mResult = AppSearchResult.newFailedResult(resultCode, errorMessage);
+ }
+ }
+
+ @NonNull
+ public AppSearchResult<ValueType> getResult() {
+ return mResult;
+ }
+
+ /** @hide */
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(mResult.getResultCode());
+ if (mResult.isSuccess()) {
+ dest.writeValue(mResult.getResultValue());
+ } else {
+ dest.writeValue(null);
+ }
+ dest.writeString(mResult.getErrorMessage());
+ }
+
+ /** @hide */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /** @hide */
+ @NonNull
+ public static final Creator<AppSearchResultParcel<?>> CREATOR =
+ new Creator<AppSearchResultParcel<?>>() {
+ @NonNull
+ @Override
+ public AppSearchResultParcel<?> createFromParcel(@NonNull Parcel in) {
+ return new AppSearchResultParcel<>(in);
+ }
+
+ @NonNull
+ @Override
+ public AppSearchResultParcel<?>[] newArray(int size) {
+ return new AppSearchResultParcel<?>[size];
+ }
+ };
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchBatchResultCallback.aidl b/apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchBatchResultCallback.aidl
index 64b331ea374c..1fe19cc253e8 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchBatchResultCallback.aidl
+++ b/apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchBatchResultCallback.aidl
@@ -13,13 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.app.appsearch;
+package android.app.appsearch.aidl;
-import android.app.appsearch.AppSearchBatchResult;
-import android.app.appsearch.AppSearchResult;
+import android.app.appsearch.aidl.AppSearchBatchResultParcel;
+import android.app.appsearch.aidl.AppSearchResultParcel;
/** {@hide} */
oneway interface IAppSearchBatchResultCallback {
- void onResult(in AppSearchBatchResult result);
- void onSystemError(in AppSearchResult result);
+ void onResult(in AppSearchBatchResultParcel resultParcel);
+ void onSystemError(in AppSearchResultParcel resultParcel);
}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl b/apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchManager.aidl
index 507bd6884cde..6f7e82e8126c 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl
+++ b/apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchManager.aidl
@@ -13,12 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.app.appsearch;
+package android.app.appsearch.aidl;
import android.os.Bundle;
-import android.app.appsearch.IAppSearchBatchResultCallback;
-import android.app.appsearch.IAppSearchResultCallback;
+import android.app.appsearch.aidl.IAppSearchBatchResultCallback;
+import android.app.appsearch.aidl.IAppSearchResultCallback;
import android.os.ParcelFileDescriptor;
/** {@hide} */
@@ -200,7 +200,7 @@ interface IAppSearchManager {
* @param searchSpecBundle SearchSpec bundle.
* @param userId Id of the calling user.
* @param callback {@link IAppSearchResultCallback#onResult} will be called with an
- * {@link AppSearchResult}&lt;{@code null}&gt;.
+ * {@link AppSearchResult}&lt;{@code Void}&gt;.
*/
void writeQueryResultsToFile(
in String packageName,
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchResultCallback.aidl b/apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchResultCallback.aidl
index 299c9957974e..097f0d180395 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchResultCallback.aidl
+++ b/apex/appsearch/framework/java/android/app/appsearch/aidl/IAppSearchResultCallback.aidl
@@ -13,11 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.app.appsearch;
+package android.app.appsearch.aidl;
-import android.app.appsearch.AppSearchResult;
+import android.app.appsearch.aidl.AppSearchResultParcel;
/** {@hide} */
oneway interface IAppSearchResultCallback {
- void onResult(in AppSearchResult result);
+ void onResult(in AppSearchResultParcel resultParcel);
}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java b/apex/appsearch/framework/java/external/android/app/appsearch/AppSearchBatchResult.java
index 9ae0d622dfae..aca0fc07eb65 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java
+++ b/apex/appsearch/framework/java/external/android/app/appsearch/AppSearchBatchResult.java
@@ -13,37 +13,35 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package android.app.appsearch;
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.os.Parcel;
-import android.os.Parcelable;
import android.util.ArrayMap;
import com.android.internal.util.Preconditions;
-import java.util.Collections;
import java.util.Map;
import java.util.Objects;
/**
* Provides results for AppSearch batch operations which encompass multiple documents.
*
- * <p>Individual results of a batch operation are separated into two maps: one for successes and
- * one for failures. For successes, {@link #getSuccesses()} will return a map of keys to
- * instances of the value type. For failures, {@link #getFailures()} will return a map of keys to
- * {@link AppSearchResult} objects.
+ * <p>Individual results of a batch operation are separated into two maps: one for successes and one
+ * for failures. For successes, {@link #getSuccesses()} will return a map of keys to instances of
+ * the value type. For failures, {@link #getFailures()} will return a map of keys to {@link
+ * AppSearchResult} objects.
*
* <p>Alternatively, {@link #getAll()} returns a map of keys to {@link AppSearchResult} objects for
* both successes and failures.
*
+ * @param <KeyType> The type of the keys for which the results will be reported.
+ * @param <ValueType> The type of the result objects for successful results.
* @see AppSearchSession#put
* @see AppSearchSession#getByDocumentId
* @see AppSearchSession#remove
*/
-public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelable {
+public final class AppSearchBatchResult<KeyType, ValueType> {
@NonNull private final Map<KeyType, ValueType> mSuccesses;
@NonNull private final Map<KeyType, AppSearchResult<ValueType>> mFailures;
@NonNull private final Map<KeyType, AppSearchResult<ValueType>> mAll;
@@ -57,27 +55,6 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl
mAll = all;
}
- private AppSearchBatchResult(@NonNull Parcel in) {
- mAll = Collections.unmodifiableMap(in.readHashMap(/*loader=*/ null));
- Map<KeyType, ValueType> successes = new ArrayMap<>();
- Map<KeyType, AppSearchResult<ValueType>> failures = new ArrayMap<>();
- for (Map.Entry<KeyType, AppSearchResult<ValueType>> entry : mAll.entrySet()) {
- if (entry.getValue().isSuccess()) {
- successes.put(entry.getKey(), entry.getValue().getResultValue());
- } else {
- failures.put(entry.getKey(), entry.getValue());
- }
- }
- mSuccesses = Collections.unmodifiableMap(successes);
- mFailures = Collections.unmodifiableMap(failures);
- }
-
- /** @hide */
- @Override
- public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeMap(mAll);
- }
-
/** Returns {@code true} if this {@link AppSearchBatchResult} has no failures. */
public boolean isSuccess() {
return mFailures.isEmpty();
@@ -99,8 +76,8 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl
}
/**
- * Returns a {@link Map} of keys mapped to instances of {@link AppSearchResult} for all
- * failed individual results.
+ * Returns a {@link Map} of keys mapped to instances of {@link AppSearchResult} for all failed
+ * individual results.
*
* <p>The values of the {@link Map} will not be {@code null}.
*/
@@ -122,6 +99,7 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl
/**
* Asserts that this {@link AppSearchBatchResult} has no failures.
+ *
* @hide
*/
public void checkSuccess() {
@@ -136,33 +114,13 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl
return "{\n successes: " + mSuccesses + "\n failures: " + mFailures + "\n}";
}
- /** @hide */
- @Override
- public int describeContents() {
- return 0;
- }
-
- /** @hide */
- @NonNull
- public static final Creator<AppSearchBatchResult> CREATOR =
- new Creator<AppSearchBatchResult>() {
- @NonNull
- @Override
- public AppSearchBatchResult createFromParcel(@NonNull Parcel in) {
- return new AppSearchBatchResult(in);
- }
-
- @NonNull
- @Override
- public AppSearchBatchResult[] newArray(int size) {
- return new AppSearchBatchResult[size];
- }
- };
-
/**
* Builder for {@link AppSearchBatchResult} objects.
*
* <p>Once {@link #build} is called, the instance can no longer be used.
+ *
+ * @param <KeyType> The type of the keys for which the results will be reported.
+ * @param <ValueType> The type of the result objects for successful results.
*/
public static final class Builder<KeyType, ValueType> {
private final Map<KeyType, ValueType> mSuccesses = new ArrayMap<>();
@@ -177,7 +135,7 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl
*
* @throws IllegalStateException if the builder has already been used.
*/
- @SuppressWarnings("MissingGetterMatchingBuilder") // See getSuccesses
+ @SuppressWarnings("MissingGetterMatchingBuilder") // See getSuccesses
@NonNull
public Builder<KeyType, ValueType> setSuccess(
@NonNull KeyType key, @Nullable ValueType result) {
@@ -193,7 +151,7 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl
*
* @throws IllegalStateException if the builder has already been used.
*/
- @SuppressWarnings("MissingGetterMatchingBuilder") // See getFailures
+ @SuppressWarnings("MissingGetterMatchingBuilder") // See getFailures
@NonNull
public Builder<KeyType, ValueType> setFailure(
@NonNull KeyType key,
@@ -211,7 +169,7 @@ public final class AppSearchBatchResult<KeyType, ValueType> implements Parcelabl
*
* @throws IllegalStateException if the builder has already been used.
*/
- @SuppressWarnings("MissingGetterMatchingBuilder") // See getAll
+ @SuppressWarnings("MissingGetterMatchingBuilder") // See getAll
@NonNull
public Builder<KeyType, ValueType> setResult(
@NonNull KeyType key, @NonNull AppSearchResult<ValueType> result) {
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java b/apex/appsearch/framework/java/external/android/app/appsearch/AppSearchResult.java
index b06e21516cac..30c98b0c8866 100644
--- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
+++ b/apex/appsearch/framework/java/external/android/app/appsearch/AppSearchResult.java
@@ -13,15 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package android.app.appsearch;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.appsearch.exceptions.AppSearchException;
-import android.os.Parcel;
-import android.os.Parcelable;
import android.util.Log;
import com.android.internal.util.Preconditions;
@@ -36,24 +33,26 @@ import java.util.Objects;
*
* @param <ValueType> The type of result object for successful calls.
*/
-public final class AppSearchResult<ValueType> implements Parcelable {
+public final class AppSearchResult<ValueType> {
private static final String TAG = "AppSearchResult";
/**
* Result codes from {@link AppSearchSession} methods.
+ *
* @hide
*/
- @IntDef(value = {
- RESULT_OK,
- RESULT_UNKNOWN_ERROR,
- RESULT_INTERNAL_ERROR,
- RESULT_INVALID_ARGUMENT,
- RESULT_IO_ERROR,
- RESULT_OUT_OF_SPACE,
- RESULT_NOT_FOUND,
- RESULT_INVALID_SCHEMA,
- RESULT_SECURITY_ERROR,
- })
+ @IntDef(
+ value = {
+ RESULT_OK,
+ RESULT_UNKNOWN_ERROR,
+ RESULT_INTERNAL_ERROR,
+ RESULT_INVALID_ARGUMENT,
+ RESULT_IO_ERROR,
+ RESULT_OUT_OF_SPACE,
+ RESULT_NOT_FOUND,
+ RESULT_INVALID_SCHEMA,
+ RESULT_SECURITY_ERROR,
+ })
@Retention(RetentionPolicy.SOURCE)
public @interface ResultCode {}
@@ -109,20 +108,6 @@ public final class AppSearchResult<ValueType> implements Parcelable {
mErrorMessage = errorMessage;
}
- private AppSearchResult(@NonNull Parcel in) {
- mResultCode = in.readInt();
- mResultValue = (ValueType) in.readValue(/*loader=*/ null);
- mErrorMessage = in.readString();
- }
-
- /** @hide */
- @Override
- public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeInt(mResultCode);
- dest.writeValue(mResultValue);
- dest.writeString(mErrorMessage);
- }
-
/** Returns {@code true} if {@link #getResultCode} equals {@link AppSearchResult#RESULT_OK}. */
public boolean isSuccess() {
return getResultCode() == RESULT_OK;
@@ -154,8 +139,8 @@ public final class AppSearchResult<ValueType> implements Parcelable {
*
* <p>If {@link #isSuccess} is {@code true}, the error message is always {@code null}. The error
* message may be {@code null} even if {@link #isSuccess} is {@code false}. See the
- * documentation of the particular {@link AppSearchSession} call producing this
- * {@link AppSearchResult} for what is returned by {@link #getErrorMessage}.
+ * documentation of the particular {@link AppSearchSession} call producing this {@link
+ * AppSearchResult} for what is returned by {@link #getErrorMessage}.
*/
@Nullable
public String getErrorMessage() {
@@ -190,40 +175,14 @@ public final class AppSearchResult<ValueType> implements Parcelable {
return "[FAILURE(" + mResultCode + ")]: " + mErrorMessage;
}
- /** @hide */
- @Override
- public int describeContents() {
- return 0;
- }
-
- /** @hide */
- @NonNull
- public static final Creator<AppSearchResult> CREATOR = new Creator<AppSearchResult>() {
- @NonNull
- @Override
- public AppSearchResult createFromParcel(@NonNull Parcel in) {
- return new AppSearchResult(in);
- }
-
- @NonNull
- @Override
- public AppSearchResult[] newArray(int size) {
- return new AppSearchResult[size];
- }
- };
-
- /**
- * Creates a new successful {@link AppSearchResult}.
- */
+ /** Creates a new successful {@link AppSearchResult}. */
@NonNull
public static <ValueType> AppSearchResult<ValueType> newSuccessfulResult(
@Nullable ValueType value) {
return new AppSearchResult<>(RESULT_OK, value, /*errorMessage=*/ null);
}
- /**
- * Creates a new failed {@link AppSearchResult}.
- */
+ /** Creates a new failed {@link AppSearchResult}. */
@NonNull
public static <ValueType> AppSearchResult<ValueType> newFailedResult(
@ResultCode int resultCode, @Nullable String errorMessage) {
@@ -238,7 +197,8 @@ public final class AppSearchResult<ValueType> implements Parcelable {
@NonNull
public static <ValueType> AppSearchResult<ValueType> newFailedResult(
@NonNull AppSearchResult<?> otherFailedResult) {
- Preconditions.checkState(!otherFailedResult.isSuccess(),
+ Preconditions.checkState(
+ !otherFailedResult.isSuccess(),
"Cannot convert a success result to a failed result");
return AppSearchResult.newFailedResult(
otherFailedResult.getResultCode(), otherFailedResult.getErrorMessage());
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
index a4188a2733b8..0f42d8583e83 100644
--- a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
+++ b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
@@ -29,14 +29,16 @@ import android.app.appsearch.AppSearchResult;
import android.app.appsearch.AppSearchSchema;
import android.app.appsearch.GenericDocument;
import android.app.appsearch.GetSchemaResponse;
-import android.app.appsearch.IAppSearchBatchResultCallback;
-import android.app.appsearch.IAppSearchManager;
-import android.app.appsearch.IAppSearchResultCallback;
import android.app.appsearch.PackageIdentifier;
import android.app.appsearch.SearchResultPage;
import android.app.appsearch.SearchSpec;
import android.app.appsearch.SetSchemaResponse;
import android.app.appsearch.StorageInfo;
+import android.app.appsearch.aidl.AppSearchBatchResultParcel;
+import android.app.appsearch.aidl.AppSearchResultParcel;
+import android.app.appsearch.aidl.IAppSearchBatchResultCallback;
+import android.app.appsearch.aidl.IAppSearchManager;
+import android.app.appsearch.aidl.IAppSearchResultCallback;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -869,7 +871,7 @@ public class AppSearchManagerService extends SystemService {
private void invokeCallbackOnResult(
IAppSearchResultCallback callback, AppSearchResult<?> result) {
try {
- callback.onResult(result);
+ callback.onResult(new AppSearchResultParcel<>(result));
} catch (RemoteException e) {
Log.e(TAG, "Unable to send result to the callback", e);
}
@@ -877,9 +879,9 @@ public class AppSearchManagerService extends SystemService {
/** Invokes the {@link IAppSearchBatchResultCallback} with the result. */
private void invokeCallbackOnResult(
- IAppSearchBatchResultCallback callback, AppSearchBatchResult<?, ?> result) {
+ IAppSearchBatchResultCallback callback, AppSearchBatchResult<String, ?> result) {
try {
- callback.onResult(result);
+ callback.onResult(new AppSearchBatchResultParcel<>(result));
} catch (RemoteException e) {
Log.e(TAG, "Unable to send result to the callback", e);
}
@@ -891,8 +893,9 @@ public class AppSearchManagerService extends SystemService {
* <p>The throwable is convert to a {@link AppSearchResult};
*/
private void invokeCallbackOnError(IAppSearchResultCallback callback, Throwable throwable) {
+ AppSearchResult<?> result = throwableToFailedResult(throwable);
try {
- callback.onResult(throwableToFailedResult(throwable));
+ callback.onResult(new AppSearchResultParcel<>(result));
} catch (RemoteException e) {
Log.e(TAG, "Unable to send result to the callback", e);
}
@@ -905,8 +908,9 @@ public class AppSearchManagerService extends SystemService {
*/
private void invokeCallbackOnError(
@NonNull IAppSearchBatchResultCallback callback, @NonNull Throwable throwable) {
+ AppSearchResult<?> result = throwableToFailedResult(throwable);
try {
- callback.onSystemError(throwableToFailedResult(throwable));
+ callback.onSystemError(new AppSearchResultParcel<>(result));
} catch (RemoteException e) {
Log.e(TAG, "Unable to send error to the callback", e);
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index 358120664cea..4a09cf8b6c26 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -50,12 +50,14 @@ import android.app.appsearch.AppSearchBatchResult;
import android.app.appsearch.AppSearchManager;
import android.app.appsearch.AppSearchResult;
import android.app.appsearch.GenericDocument;
-import android.app.appsearch.IAppSearchBatchResultCallback;
-import android.app.appsearch.IAppSearchManager;
-import android.app.appsearch.IAppSearchResultCallback;
import android.app.appsearch.PackageIdentifier;
import android.app.appsearch.SearchResultPage;
import android.app.appsearch.SetSchemaResponse;
+import android.app.appsearch.aidl.AppSearchBatchResultParcel;
+import android.app.appsearch.aidl.AppSearchResultParcel;
+import android.app.appsearch.aidl.IAppSearchBatchResultCallback;
+import android.app.appsearch.aidl.IAppSearchManager;
+import android.app.appsearch.aidl.IAppSearchResultCallback;
import android.app.role.OnRoleHoldersChangedListener;
import android.app.usage.UsageStatsManagerInternal;
import android.content.ActivityNotFoundException;
@@ -675,7 +677,9 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
}
}
final SetSchemaResponse response = new SetSchemaResponse.Builder().build();
- callback.onResult(AppSearchResult.newSuccessfulResult(response.getBundle()));
+ callback.onResult(
+ new AppSearchResultParcel(
+ AppSearchResult.newSuccessfulResult(response.getBundle())));
}
@Override
@@ -711,7 +715,7 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
}
docMap.put(doc.getId(), doc);
}
- callback.onResult(builder.build());
+ callback.onResult(new AppSearchBatchResultParcel<>(builder.build()));
}
@Override
@@ -737,7 +741,7 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
}
}
}
- callback.onResult(builder.build());
+ callback.onResult(new AppSearchBatchResultParcel<>(builder.build()));
}
@Override
@@ -749,7 +753,8 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
final Bundle page = new Bundle();
page.putLong(SearchResultPage.NEXT_PAGE_TOKEN_FIELD, 1);
page.putParcelableArrayList(SearchResultPage.RESULTS_FIELD, new ArrayList<>());
- callback.onResult(AppSearchResult.newSuccessfulResult(page));
+ callback.onResult(
+ new AppSearchResultParcel<>(AppSearchResult.newSuccessfulResult(page)));
return;
}
final List<GenericDocument> documents = new ArrayList<>(mDocumentMap.get(key).values());
@@ -765,7 +770,8 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
resultBundles.add(resultBundle);
}
page.putParcelableArrayList(SearchResultPage.RESULTS_FIELD, resultBundles);
- callback.onResult(AppSearchResult.newSuccessfulResult(page));
+ callback.onResult(
+ new AppSearchResultParcel<>(AppSearchResult.newSuccessfulResult(page)));
}
@Override
@@ -780,7 +786,8 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
final Bundle page = new Bundle();
page.putLong(SearchResultPage.NEXT_PAGE_TOKEN_FIELD, 1);
page.putParcelableArrayList(SearchResultPage.RESULTS_FIELD, new ArrayList<>());
- callback.onResult(AppSearchResult.newSuccessfulResult(page));
+ callback.onResult(
+ new AppSearchResultParcel<>(AppSearchResult.newSuccessfulResult(page)));
}
@Override
@@ -835,7 +842,7 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
}
}
}
- callback.onResult(builder.build());
+ callback.onResult(new AppSearchBatchResultParcel<>(builder.build()));
}
@Override
@@ -844,11 +851,13 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
throws RemoteException {
final String key = getKey(userId, databaseName);
if (!mDocumentMap.containsKey(key)) {
- callback.onResult(AppSearchResult.newSuccessfulResult(null));
+ callback.onResult(
+ new AppSearchResultParcel<>(AppSearchResult.newSuccessfulResult(null)));
return;
}
mDocumentMap.get(key).clear();
- callback.onResult(AppSearchResult.newSuccessfulResult(null));
+ callback.onResult(
+ new AppSearchResultParcel<>(AppSearchResult.newSuccessfulResult(null)));
}
@Override
@@ -878,7 +887,8 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
}
private void ignore(IAppSearchResultCallback callback) throws RemoteException {
- callback.onResult(AppSearchResult.newSuccessfulResult(null));
+ callback.onResult(
+ new AppSearchResultParcel<>(AppSearchResult.newSuccessfulResult(null)));
}
}