Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1befe9d8 authored by Alex Kershaw's avatar Alex Kershaw
Browse files

Add system API for building document URI with user ID.

This is required for the direct tabbed DocsUI experience that doesn't
involve the up-front disambig (that always only has one app in it).

Bug: 145895146
Bug: 147900456
Test: atest CtsProviderTestCases:android.provider.cts.DocumentsContractTest
Change-Id: Ic44b592382d880cdd76df2885ca8c52b1b697697
parent 658b4ca4
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -9,6 +9,10 @@ package android.app {

package android.provider {

  public final class DocumentsContract {
    method @NonNull public static android.net.Uri buildDocumentUriAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
  }

  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
    field public static final String COMMON_CRITERIA_MODE = "common_criteria_mode";
  }
+18 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.provider;

import static android.annotation.SystemApi.Client.MODULE_APPS;

import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull;
import static com.android.internal.util.Preconditions.checkCollectionNotEmpty;

@@ -24,6 +26,7 @@ import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ContentInterface;
import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@@ -47,6 +50,7 @@ import android.os.ParcelFileDescriptor.OnCloseListener;
import android.os.Parcelable;
import android.os.ParcelableException;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Log;

import com.android.internal.util.Preconditions;
@@ -945,6 +949,20 @@ public final class DocumentsContract {
        return getBaseDocumentUriBuilder(authority).appendPath(documentId).build();
    }

    /**
     * Builds URI as described in {@link #buildDocumentUri(String, String)}, but such that it will
     * be associated with the given user.
     *
     * @hide
     */
    @SystemApi(client = MODULE_APPS)
    @NonNull
    public static Uri buildDocumentUriAsUser(
            @NonNull String authority, @NonNull String documentId, @NonNull UserHandle user) {
        return ContentProvider.maybeAddUserId(
                buildDocumentUri(authority, documentId), user.getIdentifier());
    }

    /** {@hide} */
    public static Uri buildBaseDocumentUri(String authority) {
        return getBaseDocumentUriBuilder(authority).build();