summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kelvin Kwan <kelvinkwan@google.com> 2020-01-28 23:30:15 +0000
committer Kelvin Kwan <kelvinkwan@google.com> 2020-02-06 15:29:15 +0000
commitcfb64adb61442b51b48bd89c3338109539f8020a (patch)
treec1ad61f4e219b6751e468b2a4066938801e998f2
parent2788bf12a94a9c7131bd16b83964abab8f5435e8 (diff)
Use DocumentInfo.userId to get content resolver.
Test: atest DocumentsUIGoogleTests Bug: 148264822 Change-Id: Iebb39751f236dc10169f2faddc809f029bc07aca
-rw-r--r--src/com/android/documentsui/CreateDirectoryFragment.java2
-rw-r--r--src/com/android/documentsui/DirectoryLoader.java4
-rw-r--r--src/com/android/documentsui/DocumentsAccess.java2
-rw-r--r--src/com/android/documentsui/files/ActionHandler.java2
-rw-r--r--src/com/android/documentsui/inspector/InspectorController.java3
-rw-r--r--src/com/android/documentsui/inspector/MetadataLoader.java17
-rw-r--r--src/com/android/documentsui/inspector/RuntimeDataSupplier.java4
-rw-r--r--src/com/android/documentsui/services/CopyJob.java6
-rw-r--r--tests/unit/com/android/documentsui/inspector/DocumentLoaderTest.java4
-rw-r--r--tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java2
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);
}