diff options
author | 2020-01-28 23:30:15 +0000 | |
---|---|---|
committer | 2020-02-06 15:29:15 +0000 | |
commit | cfb64adb61442b51b48bd89c3338109539f8020a (patch) | |
tree | c1ad61f4e219b6751e468b2a4066938801e998f2 | |
parent | 2788bf12a94a9c7131bd16b83964abab8f5435e8 (diff) |
Use DocumentInfo.userId to get content resolver.
Test: atest DocumentsUIGoogleTests
Bug: 148264822
Change-Id: Iebb39751f236dc10169f2faddc809f029bc07aca
10 files changed, 26 insertions, 20 deletions
diff --git a/src/com/android/documentsui/CreateDirectoryFragment.java b/src/com/android/documentsui/CreateDirectoryFragment.java index 3bd344ff4..35854fb51 100644 --- a/src/com/android/documentsui/CreateDirectoryFragment.java +++ b/src/com/android/documentsui/CreateDirectoryFragment.java @@ -143,7 +143,7 @@ public class CreateDirectoryFragment extends DialogFragment { @Override protected DocumentInfo doInBackground(Void... params) { - final ContentResolver resolver = mActivity.getContentResolver(); + final ContentResolver resolver = mCwd.userId.getContentResolver(mActivity); ContentProviderClient client = null; try { client = DocumentsApplication.acquireUnstableProviderOrThrow( diff --git a/src/com/android/documentsui/DirectoryLoader.java b/src/com/android/documentsui/DirectoryLoader.java index 04928b1ca..1d7ccf60e 100644 --- a/src/com/android/documentsui/DirectoryLoader.java +++ b/src/com/android/documentsui/DirectoryLoader.java @@ -106,7 +106,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { mSignal = new CancellationSignal(); } - final ContentResolver resolver = getContext().getContentResolver(); + final ContentResolver resolver = mDoc.userId.getContentResolver(getContext()); final String authority = mUri.getAuthority(); final DirectoryResult result = new DirectoryResult(); @@ -235,6 +235,6 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> { FileUtils.closeQuietly(mResult); mResult = null; - getContext().getContentResolver().unregisterContentObserver(mObserver); + mDoc.userId.getContentResolver(getContext()).unregisterContentObserver(mObserver); } } diff --git a/src/com/android/documentsui/DocumentsAccess.java b/src/com/android/documentsui/DocumentsAccess.java index 6445a7c97..9108b15eb 100644 --- a/src/com/android/documentsui/DocumentsAccess.java +++ b/src/com/android/documentsui/DocumentsAccess.java @@ -140,7 +140,7 @@ public interface DocumentsAccess { @Override public Uri createDocument(DocumentInfo parentDoc, String mimeType, String displayName) { - final ContentResolver resolver = mContext.getContentResolver(); + final ContentResolver resolver = parentDoc.userId.getContentResolver(mContext); try (ContentProviderClient client = DocumentsApplication.acquireUnstableProviderOrThrow( resolver, parentDoc.derivedUri.getAuthority())) { return DocumentsContract.createDocument( diff --git a/src/com/android/documentsui/files/ActionHandler.java b/src/com/android/documentsui/files/ActionHandler.java index 9849a4e60..efa8ae68f 100644 --- a/src/com/android/documentsui/files/ActionHandler.java +++ b/src/com/android/documentsui/files/ActionHandler.java @@ -178,7 +178,7 @@ public class ActionHandler<T extends FragmentActivity & AbstractActionHandler.Co @Override public @Nullable DocumentInfo renameDocument(String name, DocumentInfo document) { - ContentResolver resolver = mActivity.getContentResolver(); + ContentResolver resolver = document.userId.getContentResolver(mActivity); ContentProviderClient client = null; try { diff --git a/src/com/android/documentsui/inspector/InspectorController.java b/src/com/android/documentsui/inspector/InspectorController.java index 3a9255b6f..4a886066e 100644 --- a/src/com/android/documentsui/inspector/InspectorController.java +++ b/src/com/android/documentsui/inspector/InspectorController.java @@ -187,6 +187,7 @@ public final class InspectorController { if (docInfo.isMetadataSupported()) { mLoader.getDocumentMetadata( docInfo.derivedUri, + docInfo.userId, (Bundle bundle) -> { onDocumentMetadataLoaded(docInfo, bundle); }); @@ -304,7 +305,7 @@ public final class InspectorController { * @param uri * @param callback */ - void getDocumentMetadata(Uri uri, Consumer<Bundle> callback); + void getDocumentMetadata(Uri uri, UserId userId, Consumer<Bundle> callback); } /** diff --git a/src/com/android/documentsui/inspector/MetadataLoader.java b/src/com/android/documentsui/inspector/MetadataLoader.java index 3d12d4e2c..f9e6b9ff7 100644 --- a/src/com/android/documentsui/inspector/MetadataLoader.java +++ b/src/com/android/documentsui/inspector/MetadataLoader.java @@ -15,39 +15,42 @@ */ package com.android.documentsui.inspector; +import android.content.ContentResolver; import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.provider.DocumentsContract; +import android.util.Log; + import androidx.annotation.Nullable; import androidx.loader.content.AsyncTaskLoader; -import android.util.Log; - import java.io.FileNotFoundException; /** - * Loads metadata from {@link DocumentsContract#getDocumentMetadata(android.content.ContentProviderClient, Uri, String[])} + * Loads metadata from + * {@link DocumentsContract#getDocumentMetadata(android.content.ContentProviderClient, + * Uri)} */ final class MetadataLoader extends AsyncTaskLoader<Bundle> { private static final String TAG = "MetadataLoader"; - private final Context mContext; private final Uri mUri; + private final ContentResolver mContentResolver; private @Nullable Bundle mMetadata; - MetadataLoader(Context context, Uri uri) { + MetadataLoader(Context context, Uri uri, ContentResolver contentResolver) { super(context); - mContext = context; mUri = uri; + mContentResolver = contentResolver; } @Override public Bundle loadInBackground() { try { - return DocumentsContract.getDocumentMetadata(mContext.getContentResolver(), mUri); + return DocumentsContract.getDocumentMetadata(mContentResolver, mUri); } catch (FileNotFoundException | RuntimeException e) { Log.e(TAG, "Failed to load metadata for doc: " + mUri, e); } diff --git a/src/com/android/documentsui/inspector/RuntimeDataSupplier.java b/src/com/android/documentsui/inspector/RuntimeDataSupplier.java index 01672ca92..e60836974 100644 --- a/src/com/android/documentsui/inspector/RuntimeDataSupplier.java +++ b/src/com/android/documentsui/inspector/RuntimeDataSupplier.java @@ -109,11 +109,11 @@ public class RuntimeDataSupplier implements DataSupplier { } @Override - public void getDocumentMetadata(Uri uri, Consumer<Bundle> callback) { + public void getDocumentMetadata(Uri uri, UserId userId, Consumer<Bundle> callback) { mMetadataCallbacks = new LoaderCallbacks<Bundle>() { @Override public Loader<Bundle> onCreateLoader(int id, Bundle unused) { - return new MetadataLoader(mContext, uri); + return new MetadataLoader(mContext, uri, userId.getContentResolver(mContext)); } @Override diff --git a/src/com/android/documentsui/services/CopyJob.java b/src/com/android/documentsui/services/CopyJob.java index c0ef0c971..6d46cd4a3 100644 --- a/src/com/android/documentsui/services/CopyJob.java +++ b/src/com/android/documentsui/services/CopyJob.java @@ -394,7 +394,8 @@ class CopyJob extends ResolvedResourcesJob { if (src.isVirtual()) { String[] streamTypes = null; try { - streamTypes = getContentResolver().getStreamTypes(src.derivedUri, "*/*"); + streamTypes = src.userId.getContentResolver(service).getStreamTypes(src.derivedUri, + "*/*"); } catch (RuntimeException e) { Metrics.logFileOperationFailure( appContext, MetricConsts.SUBFILEOP_OBTAIN_STREAM_TYPE, src.derivedUri); @@ -443,7 +444,8 @@ class CopyJob extends ResolvedResourcesJob { DocumentInfo dstInfo = null; try { - dstInfo = DocumentInfo.fromUri(getContentResolver(), dstUri, dest.userId); + dstInfo = DocumentInfo.fromUri(dest.userId.getContentResolver(service), dstUri, + dest.userId); } catch (FileNotFoundException | RuntimeException e) { Metrics.logFileOperationFailure( appContext, MetricConsts.SUBFILEOP_QUERY_DOCUMENT, dstUri); diff --git a/tests/unit/com/android/documentsui/inspector/DocumentLoaderTest.java b/tests/unit/com/android/documentsui/inspector/DocumentLoaderTest.java index c453ed2b6..fe97c2cb0 100644 --- a/tests/unit/com/android/documentsui/inspector/DocumentLoaderTest.java +++ b/tests/unit/com/android/documentsui/inspector/DocumentLoaderTest.java @@ -183,7 +183,7 @@ public class DocumentLoaderTest extends TestCase { InspectorProvider.AUTHORITY, InspectorProvider.TEST_JPEG); LatchedConsumer<Bundle> consumer = new LatchedConsumer<>(1); - mLoader.getDocumentMetadata(uri, consumer); + mLoader.getDocumentMetadata(uri, mUserId, consumer); mLoaderManager.getLoader(0).startLoading(); consumer.assertCalled(100, TimeUnit.MILLISECONDS); @@ -200,7 +200,7 @@ public class DocumentLoaderTest extends TestCase { InspectorProvider.AUTHORITY, InspectorProvider.INVALID_JPEG); LatchedConsumer<Bundle> consumer = new LatchedConsumer<>(1); - mLoader.getDocumentMetadata(uri, consumer); + mLoader.getDocumentMetadata(uri, mUserId, consumer); mLoaderManager.getLoader(0).startLoading(); consumer.assertCalled(100, TimeUnit.MILLISECONDS); diff --git a/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java b/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java index d98f955ef..d35a6dedd 100644 --- a/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java +++ b/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java @@ -420,7 +420,7 @@ public class InspectorControllerTest { } @Override - public void getDocumentMetadata(Uri uri, Consumer<Bundle> callback) { + public void getDocumentMetadata(Uri uri, UserId userId, Consumer<Bundle> callback) { callback.accept(mMetadata); } |