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

Commit ba014ace authored by Alex Kershaw's avatar Alex Kershaw
Browse files

Add TestApi to get UserHandle from URI.

I've added this to ContentProvider since it's where all of the existing
hidden logic where userinfo = userid lives.

Bug: 136249261
Test: atest CtsProviderTestCases:android.provider.cts.DocumentsContractTest
Change-Id: I3a815f2c8dd738140aec6937ce0d3b763bf49fba
parent 177318a0
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -742,6 +742,10 @@ package android.content {
    field @Nullable public final android.util.ArraySet<android.content.ComponentName> whitelistedComponents;
  }

  public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
    method @NonNull public static android.os.UserHandle getUserHandleFromUri(@NonNull android.net.Uri);
  }

  public class ContentProviderClient implements java.lang.AutoCloseable {
    method @RequiresPermission(android.Manifest.permission.REMOVE_TASKS) public void setDetectNotResponding(long);
  }
+11 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static android.os.Trace.TRACE_TAG_DATABASE;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.app.AppOpsManager;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.pm.PackageManager;
@@ -2525,6 +2526,16 @@ public abstract class ContentProvider implements ContentInterface, ComponentCall
        return getUserIdFromUri(uri, UserHandle.USER_CURRENT);
    }

    /**
     * Returns the user associated with the given URI.
     *
     * @hide
     */
    @TestApi
    public @NonNull static UserHandle getUserHandleFromUri(@NonNull Uri uri) {
        return UserHandle.of(getUserIdFromUri(uri, Process.myUserHandle().getIdentifier()));
    }

    /**
     * Removes userId part from authority string. Expects format:
     * userId@some.authority