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

Commit 23c36dbe authored by kholoud mohamed's avatar kholoud mohamed
Browse files

Exposed some testAPIs in ActivityManager

- Added the following testAPIs to replace the usage
of adb shell commands in tests:
* stopUser and ACTION_USER_STOPPED
* waitForBroadcastIdle

- Changed the documentation for switchUser to correctly
reflect that it accepts CREATE_USERS

Test: verfied that tests can access the APIs
Bug: 181030374
Change-Id: I92b92471a18cf97a118d3f1946d6e06c277a76f1
parent 51755dc6
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -407,7 +407,7 @@ package android.app {
    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public static void setPersistentVrThread(int);
    method @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) public static void setPersistentVrThread(int);
    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public boolean startProfile(@NonNull android.os.UserHandle);
    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public boolean startProfile(@NonNull android.os.UserHandle);
    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public boolean stopProfile(@NonNull android.os.UserHandle);
    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public boolean stopProfile(@NonNull android.os.UserHandle);
    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean switchUser(@NonNull android.os.UserHandle);
    method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean switchUser(@NonNull android.os.UserHandle);
  }
  }
  public static interface ActivityManager.OnUidImportanceListener {
  public static interface ActivityManager.OnUidImportanceListener {
+6 −0
Original line number Original line Diff line number Diff line
@@ -104,7 +104,9 @@ package android.app {
    method @RequiresPermission(android.Manifest.permission.RESET_APP_ERRORS) public void resetAppErrors();
    method @RequiresPermission(android.Manifest.permission.RESET_APP_ERRORS) public void resetAppErrors();
    method public static void resumeAppSwitches() throws android.os.RemoteException;
    method public static void resumeAppSwitches() throws android.os.RemoteException;
    method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public void scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int);
    method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public void scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int);
    method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public boolean stopUser(int, boolean);
    method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public boolean updateMccMncConfiguration(@NonNull String, @NonNull String);
    method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public boolean updateMccMncConfiguration(@NonNull String, @NonNull String);
    method @RequiresPermission(android.Manifest.permission.DUMP) public void waitForBroadcastIdle();
    field public static final long DROP_CLOSE_SYSTEM_DIALOGS = 174664120L; // 0xa6929b8L
    field public static final long DROP_CLOSE_SYSTEM_DIALOGS = 174664120L; // 0xa6929b8L
    field public static final long LOCK_DOWN_CLOSE_SYSTEM_DIALOGS = 174664365L; // 0xa692aadL
    field public static final long LOCK_DOWN_CLOSE_SYSTEM_DIALOGS = 174664365L; // 0xa692aadL
    field public static final int PROCESS_CAPABILITY_ALL = 15; // 0xf
    field public static final int PROCESS_CAPABILITY_ALL = 15; // 0xf
@@ -709,6 +711,10 @@ package android.content {
    method public int getDisplayId();
    method public int getDisplayId();
  }
  }


  public class Intent implements java.lang.Cloneable android.os.Parcelable {
    field public static final String ACTION_USER_STOPPED = "android.intent.action.USER_STOPPED";
  }

  public class SyncAdapterType implements android.os.Parcelable {
  public class SyncAdapterType implements android.os.Parcelable {
    method @Nullable public String getPackageName();
    method @Nullable public String getPackageName();
  }
  }
+37 −1
Original line number Original line Diff line number Diff line
@@ -31,6 +31,7 @@ import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.annotation.TestApi;
import android.annotation.UserIdInt;
import android.compat.annotation.ChangeId;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.compat.annotation.UnsupportedAppUsage;
@@ -4048,7 +4049,8 @@ public class ActivityManager {
     * @hide
     * @hide
     */
     */
    @SystemApi
    @SystemApi
    @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
    @RequiresPermission(anyOf = {android.Manifest.permission.MANAGE_USERS,
            android.Manifest.permission.CREATE_USERS})
    public boolean switchUser(@NonNull UserHandle user) {
    public boolean switchUser(@NonNull UserHandle user) {
        if (user == null) {
        if (user == null) {
            throw new IllegalArgumentException("UserHandle cannot be null.");
            throw new IllegalArgumentException("UserHandle cannot be null.");
@@ -4144,6 +4146,25 @@ public class ActivityManager {
        }
        }
    }
    }


    /**
     * Stops the given {@code userId}.
     *
     * @hide
     */
    @TestApi
    @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
    public boolean stopUser(@UserIdInt int userId, boolean force) {
        if (userId == UserHandle.USER_SYSTEM) {
            return false;
        }
        try {
            return USER_OP_SUCCESS == getService().stopUser(
                    userId, force, /* callback= */ null);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /** {@hide} */
    /** {@hide} */
    public static final int FLAG_OR_STOPPED = 1 << 0;
    public static final int FLAG_OR_STOPPED = 1 << 0;
    /** {@hide} */
    /** {@hide} */
@@ -4810,6 +4831,21 @@ public class ActivityManager {
        }
        }
    }
    }


    /**
     * Blocks until all broadcast queues become idle.
     *
     * @hide
     */
    @TestApi
    @RequiresPermission(android.Manifest.permission.DUMP)
    public void waitForBroadcastIdle() {
        try {
            getService().waitForBroadcastIdle();
        } catch (RemoteException e) {
            e.rethrowFromSystemServer();
        }
    }

    /**
    /**
     * A subset of immutable pending intent information suitable for caching on the client side.
     * A subset of immutable pending intent information suitable for caching on the client side.
     *
     *
+3 −0
Original line number Original line Diff line number Diff line
@@ -709,4 +709,7 @@ interface IActivityManager {
    ParceledListSlice queryIntentComponentsForIntentSender(in IIntentSender sender, int matchFlags);
    ParceledListSlice queryIntentComponentsForIntentSender(in IIntentSender sender, int matchFlags);


    int getUidProcessCapabilities(int uid, in String callingPackage);
    int getUidProcessCapabilities(int uid, in String callingPackage);

    /** Blocks until all broadcast queues become idle. */
    void waitForBroadcastIdle();
}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SuppressLint;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.app.AppGlobals;
import android.app.AppGlobals;
import android.compat.annotation.UnsupportedAppUsage;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.pm.ActivityInfo;
import android.content.pm.ActivityInfo;
@@ -3771,6 +3772,7 @@ public class Intent implements Parcelable, Cloneable {
     * has just been stopped (which is no longer running).
     * has just been stopped (which is no longer running).
     * @hide
     * @hide
     */
     */
    @TestApi
    public static final String ACTION_USER_STOPPED =
    public static final String ACTION_USER_STOPPED =
            "android.intent.action.USER_STOPPED";
            "android.intent.action.USER_STOPPED";


Loading