Loading apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java +22 −2 Original line number Diff line number Diff line Loading @@ -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(); } } /** Loading apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl +16 −0 Original line number Diff line number Diff line Loading @@ -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. * Loading apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java +29 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java +6 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading
apex/appsearch/framework/java/android/app/appsearch/AppSearchSession.java +22 −2 Original line number Diff line number Diff line Loading @@ -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(); } } /** Loading
apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl +16 −0 Original line number Diff line number Diff line Loading @@ -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. * Loading
apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java +29 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading
services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java +6 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading