diff options
author | kholoud mohamed <kholoudm@google.com> | 2021-02-16 16:48:24 +0000 |
---|---|---|
committer | kholoud mohamed <kholoudm@google.com> | 2021-02-16 16:55:04 +0000 |
commit | d308f2de304e99a66c8dce1fc5aaf21ec3ff0617 (patch) | |
tree | 9cf05640c3588031ad415c8eb8ccae4361106a32 | |
parent | e1891e1e03de7a94bed9ac3765217a13345ea2ad (diff) |
Added some testAPIs in ContentSuggestionsManager
Added the following testAPIs to replace the usage
of adb shell commands in tests:
* resetTemporaryService
* setTemporaryService
* setDefaultServiceEnabled
Bug: 180328483
Test: atest MixedProfileOwnerTest#testDisallowContentSuggestions_allowed
using the new test APIs
Change-Id: I021784d12dd784a5cef4e2c70b2fa82ca85f03f0
4 files changed, 99 insertions, 0 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt index e39b2b856661..283d59e8be57 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -545,6 +545,16 @@ package android.app.blob { } +package android.app.contentsuggestions { + + public final class ContentSuggestionsManager { + method @RequiresPermission(android.Manifest.permission.MANAGE_CONTENT_SUGGESTIONS) public void resetTemporaryService(int); + method @RequiresPermission(android.Manifest.permission.MANAGE_CONTENT_SUGGESTIONS) public void setDefaultServiceEnabled(int, boolean); + method @RequiresPermission(android.Manifest.permission.MANAGE_CONTENT_SUGGESTIONS) public void setTemporaryService(int, @NonNull String, int); + } + +} + package android.app.prediction { public final class AppPredictor { diff --git a/core/java/android/app/contentsuggestions/ContentSuggestionsManager.java b/core/java/android/app/contentsuggestions/ContentSuggestionsManager.java index b3f9e31abaa4..33f83026ba0f 100644 --- a/core/java/android/app/contentsuggestions/ContentSuggestionsManager.java +++ b/core/java/android/app/contentsuggestions/ContentSuggestionsManager.java @@ -19,7 +19,9 @@ package android.app.contentsuggestions; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresPermission; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.annotation.UserIdInt; import android.graphics.Bitmap; import android.os.Binder; @@ -220,6 +222,72 @@ public final class ContentSuggestionsManager { } /** + * Resets the temporary service implementation to the default component. + * + * @hide + */ + @TestApi + @RequiresPermission(android.Manifest.permission.MANAGE_CONTENT_SUGGESTIONS) + public void resetTemporaryService(@UserIdInt int userId) { + if (mService == null) { + Log.e(TAG, "resetTemporaryService called, but no ContentSuggestionsManager " + + "configured"); + return; + } + try { + mService.resetTemporaryService(userId); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Temporarily sets the service implementation. + * + * @param userId user Id to set the temporary service on. + * @param serviceName name of the new component + * @param duration how long the change will be valid (the service will be automatically reset + * to the default component after this timeout expires). + * + * @hide + */ + @TestApi + @RequiresPermission(android.Manifest.permission.MANAGE_CONTENT_SUGGESTIONS) + public void setTemporaryService( + @UserIdInt int userId, @NonNull String serviceName, int duration) { + if (mService == null) { + Log.e(TAG, "setTemporaryService called, but no ContentSuggestionsManager " + + "configured"); + return; + } + try { + mService.setTemporaryService(userId, serviceName, duration); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Sets whether the default service should be used. + * + * @hide + */ + @TestApi + @RequiresPermission(android.Manifest.permission.MANAGE_CONTENT_SUGGESTIONS) + public void setDefaultServiceEnabled(@UserIdInt int userId, boolean enabled) { + if (mService == null) { + Log.e(TAG, "setDefaultServiceEnabled called, but no ContentSuggestionsManager " + + "configured"); + return; + } + try { + mService.setDefaultServiceEnabled(userId, enabled); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** * Callback to receive content selections from * {@link #suggestContentSelections(SelectionsRequest, Executor, SelectionsCallback)}. */ diff --git a/core/java/android/app/contentsuggestions/IContentSuggestionsManager.aidl b/core/java/android/app/contentsuggestions/IContentSuggestionsManager.aidl index 8e6338babf22..9350eeb0ee66 100644 --- a/core/java/android/app/contentsuggestions/IContentSuggestionsManager.aidl +++ b/core/java/android/app/contentsuggestions/IContentSuggestionsManager.aidl @@ -45,4 +45,7 @@ oneway interface IContentSuggestionsManager { in IClassificationsCallback callback); void notifyInteraction(int userId, in String requestId, in Bundle interaction); void isEnabled(int userId, in IResultReceiver receiver); + void resetTemporaryService(int userId); + void setTemporaryService(int userId, in String serviceName, int duration); + void setDefaultServiceEnabled(int userId, boolean enabled); } diff --git a/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java b/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java index 00c91fee845e..57c643bb08a1 100644 --- a/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java +++ b/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java @@ -21,6 +21,7 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UserIdInt; import android.app.contentsuggestions.ClassificationsRequest; import android.app.contentsuggestions.ContentSuggestionsManager; import android.app.contentsuggestions.IClassificationsCallback; @@ -253,6 +254,23 @@ public class ContentSuggestionsManagerService extends receiver.send(isDisabled ? 0 : 1, null); } + @Override + public void resetTemporaryService(@UserIdInt int userId) { + ContentSuggestionsManagerService.this.resetTemporaryService(userId); + } + + @Override + public void setTemporaryService( + @UserIdInt int userId, @NonNull String serviceName, int duration) { + ContentSuggestionsManagerService.this.setTemporaryService( + userId, serviceName, duration); + } + + @Override + public void setDefaultServiceEnabled(@UserIdInt int userId, boolean enabled) { + ContentSuggestionsManagerService.this.setDefaultServiceEnabled(userId, enabled); + } + public void onShellCommand(@Nullable FileDescriptor in, @Nullable FileDescriptor out, @Nullable FileDescriptor err, @NonNull String[] args, @Nullable ShellCallback callback, |