diff options
author | 2023-02-13 14:44:16 +0000 | |
---|---|---|
committer | 2023-02-17 18:20:24 +0000 | |
commit | 0ec406570d05cfe01db6da72b15b1282cfb794e6 (patch) | |
tree | d199a9896936488ebf46cdb97567c0ad15603891 /test-mock | |
parent | 4526d3fb6fc9672e0d1cbbd620292a7af421cb02 (diff) |
Added a new api ContentProvider#getTypeAnonymous
- When an app is unable to acquire IContentProvider in contentResolver#getType,
they can only call getTypeAnonymous via activityManagerService.
- default getTypeUnchecked returns getType (to ensure less breaking)
- getType calls are protected by readPermission.
- updated logging of getType calls without readPermisison.
Bug: b/161370118
Test: Build, manual test and logging
Change-Id: Ia5fe69061de36ed70d93b30754d68b63ad791c83
Diffstat (limited to 'test-mock')
-rw-r--r-- | test-mock/src/android/test/mock/MockContentProvider.java | 27 | ||||
-rw-r--r-- | test-mock/src/android/test/mock/MockIContentProvider.java | 20 |
2 files changed, 42 insertions, 5 deletions
diff --git a/test-mock/src/android/test/mock/MockContentProvider.java b/test-mock/src/android/test/mock/MockContentProvider.java index 7be42f4f36f5..7f084f896e3f 100644 --- a/test-mock/src/android/test/mock/MockContentProvider.java +++ b/test-mock/src/android/test/mock/MockContentProvider.java @@ -80,16 +80,22 @@ public class MockContentProvider extends ContentProvider { } @Override - public String getType(Uri url) throws RemoteException { + public String getType(@NonNull AttributionSource attributionSource, + Uri url) throws RemoteException { return MockContentProvider.this.getType(url); } @Override - public void getTypeAsync(Uri uri, RemoteCallback callback) throws RemoteException { + public void getTypeAsync(@NonNull AttributionSource attributionSource, + Uri uri, RemoteCallback callback) throws RemoteException { MockContentProvider.this.getTypeAsync(uri, callback); } @Override + public void getTypeAnonymousAsync(Uri uri, RemoteCallback callback) throws RemoteException { + MockContentProvider.this.getTypeAnonymousAsync(uri, callback); + } + @Override public Uri insert(@NonNull AttributionSource attributionSource, Uri url, ContentValues initialValues, Bundle extras) throws RemoteException { return MockContentProvider.this.insert(url, initialValues, extras); @@ -247,6 +253,23 @@ public class MockContentProvider extends ContentProvider { } @Override + public String getTypeAnonymous(Uri uri) { + throw new UnsupportedOperationException("unimplemented mock method"); + } + + /** + * @hide + */ + @SuppressWarnings("deprecation") + public void getTypeAnonymousAsync(Uri uri, RemoteCallback remoteCallback) { + AsyncTask.SERIAL_EXECUTOR.execute(() -> { + final Bundle bundle = new Bundle(); + bundle.putString(ContentResolver.REMOTE_CALLBACK_RESULT, getTypeAnonymous(uri)); + remoteCallback.sendResult(bundle); + }); + } + + @Override public Uri insert(Uri uri, ContentValues values) { throw new UnsupportedOperationException("unimplemented mock method"); } diff --git a/test-mock/src/android/test/mock/MockIContentProvider.java b/test-mock/src/android/test/mock/MockIContentProvider.java index b81c70704d79..bb2996a2cb40 100644 --- a/test-mock/src/android/test/mock/MockIContentProvider.java +++ b/test-mock/src/android/test/mock/MockIContentProvider.java @@ -61,16 +61,30 @@ public class MockIContentProvider implements IContentProvider { } @Override - public String getType(Uri url) { + public String getType(@NonNull AttributionSource attributionSource, Uri url) { throw new UnsupportedOperationException("unimplemented mock method"); } @Override @SuppressWarnings("deprecation") - public void getTypeAsync(Uri uri, RemoteCallback remoteCallback) { + public void getTypeAsync(@NonNull AttributionSource attributionSource, + Uri uri, RemoteCallback remoteCallback) { AsyncTask.SERIAL_EXECUTOR.execute(() -> { final Bundle bundle = new Bundle(); - bundle.putString(ContentResolver.REMOTE_CALLBACK_RESULT, getType(uri)); + bundle.putString(ContentResolver.REMOTE_CALLBACK_RESULT, getType(attributionSource, + uri)); + remoteCallback.sendResult(bundle); + }); + } + public String getTypeAnonymous(Uri url) { + throw new UnsupportedOperationException("unimplemented mock method"); + } + @Override + @SuppressWarnings("deprecation") + public void getTypeAnonymousAsync(Uri uri, RemoteCallback remoteCallback) { + AsyncTask.SERIAL_EXECUTOR.execute(() -> { + final Bundle bundle = new Bundle(); + bundle.putString(ContentResolver.REMOTE_CALLBACK_RESULT, getTypeAnonymous(uri)); remoteCallback.sendResult(bundle); }); } |