Merge "Implement getStorageInfo." into sc-dev
This commit is contained in:
@@ -587,8 +587,28 @@ public final class AppSearchSession implements Closeable {
|
||||
Objects.requireNonNull(executor);
|
||||
Objects.requireNonNull(callback);
|
||||
Preconditions.checkState(!mIsClosed, "AppSearchSession has already been closed");
|
||||
// TODO(b/182909475): Implement getStorageInfo
|
||||
throw new UnsupportedOperationException();
|
||||
try {
|
||||
mService.getStorageInfo(
|
||||
mPackageName,
|
||||
mDatabaseName,
|
||||
mUserId,
|
||||
new IAppSearchResultCallback.Stub() {
|
||||
public void onResult(AppSearchResult result) {
|
||||
executor.execute(() -> {
|
||||
if (result.isSuccess()) {
|
||||
Bundle responseBundle = (Bundle) result.getResultValue();
|
||||
StorageInfo response =
|
||||
new StorageInfo(responseBundle);
|
||||
callback.accept(AppSearchResult.newSuccessfulResult(response));
|
||||
} else {
|
||||
callback.accept(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -306,6 +306,22 @@ interface IAppSearchManager {
|
||||
in int userId,
|
||||
in IAppSearchResultCallback callback);
|
||||
|
||||
/**
|
||||
* Gets the storage info.
|
||||
*
|
||||
* @param packageName The name of the package to get the storage info for.
|
||||
* @param databaseName The databaseName to get the storage info for.
|
||||
* @param userId Id of the calling user
|
||||
* @param callback {@link IAppSearchResultCallback#onResult} will be called with an
|
||||
* {@link AppSearchResult}<{@link Bundle}>, where the value is a
|
||||
* {@link StorageInfo}.
|
||||
*/
|
||||
void getStorageInfo(
|
||||
in String packageName,
|
||||
in String databaseName,
|
||||
in int userId,
|
||||
in IAppSearchResultCallback callback);
|
||||
|
||||
/**
|
||||
* Persists all update/delete requests to the disk.
|
||||
*
|
||||
|
||||
@@ -33,6 +33,7 @@ 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.content.Context;
|
||||
import android.content.pm.PackageManagerInternal;
|
||||
import android.os.Binder;
|
||||
@@ -609,6 +610,34 @@ public class AppSearchManagerService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getStorageInfo(
|
||||
@NonNull String packageName,
|
||||
@NonNull String databaseName,
|
||||
@UserIdInt int userId,
|
||||
@NonNull IAppSearchResultCallback callback) {
|
||||
Preconditions.checkNotNull(packageName);
|
||||
Preconditions.checkNotNull(databaseName);
|
||||
Preconditions.checkNotNull(callback);
|
||||
int callingUid = Binder.getCallingUid();
|
||||
int callingUserId = handleIncomingUser(userId, callingUid);
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
verifyUserUnlocked(callingUserId);
|
||||
verifyCallingPackage(callingUid, packageName);
|
||||
AppSearchImpl impl =
|
||||
mImplInstanceManager.getAppSearchImpl(callingUserId);
|
||||
StorageInfo storageInfo = impl.getStorageInfoForDatabase(packageName, databaseName);
|
||||
Bundle storageInfoBundle = storageInfo.getBundle();
|
||||
invokeCallbackOnResult(
|
||||
callback, AppSearchResult.newSuccessfulResult(storageInfoBundle));
|
||||
} catch (Throwable t) {
|
||||
invokeCallbackOnError(callback, t);
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(callingIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persistToDisk(@UserIdInt int userId) {
|
||||
int callingUid = Binder.getCallingUidOrThrow();
|
||||
|
||||
@@ -849,6 +849,12 @@ public abstract class BaseShortcutManagerTest extends InstrumentationTestCase {
|
||||
callback.onResult(AppSearchResult.newSuccessfulResult(null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getStorageInfo(String packageName, String databaseName, int userId,
|
||||
IAppSearchResultCallback callback) throws RemoteException {
|
||||
ignore(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persistToDisk(int userId) throws RemoteException {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user