diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 15 | ||||
| -rw-r--r-- | core/java/android/app/IActivityManager.aidl | 6 | ||||
| -rw-r--r-- | core/java/android/content/pm/IPackageManager.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageManager.java | 15 | ||||
| -rw-r--r-- | core/java/android/view/IWindowManager.aidl | 6 | ||||
| -rw-r--r-- | core/java/android/view/WindowManager.java | 11 | ||||
| -rw-r--r-- | core/java/android/view/WindowManagerImpl.java | 9 |
7 files changed, 64 insertions, 0 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 70ca49d67930..e75d2f60bb87 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -4796,4 +4796,19 @@ public class ActivityManager { throw e.rethrowFromSystemServer(); } } + + /** + * Holds the AM lock for the specified amount of milliseconds. + * This is intended for use by the tests that need to imitate lock contention. + * @hide + */ + @TestApi + @RequiresPermission(android.Manifest.permission.INJECT_EVENTS) + public void holdLock(int durationMs) { + try { + getService().holdLock(durationMs); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } } diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index 95bbebecd66e..1a4db4e541cc 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -696,4 +696,10 @@ interface IActivityManager { * @param enable set it to true to enable the app freezer, false to disable it. */ boolean enableAppFreezer(in boolean enable); + + /** + * Holds the AM lock for the specified amount of milliseconds. + * This is intended for use by the tests that need to imitate lock contention. + */ + void holdLock(in int durationMs); } diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 24282365a8c7..ba894ae72017 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -795,4 +795,6 @@ interface IPackageManager { boolean isAutoRevokeWhitelisted(String packageName); void grantImplicitAccess(int queryingUid, String visibleAuthority); + + void holdLock(in int durationMs); } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 4eec56c0d87b..79e23b37be05 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -8305,4 +8305,19 @@ public abstract class PackageManager { public static void uncorkPackageInfoCache() { PropertyInvalidatedCache.uncorkInvalidations(PermissionManager.CACHE_KEY_PACKAGE_INFO); } + + /** + * Holds the PM lock for the specified amount of milliseconds. + * Intended for use by the tests that need to imitate lock contention. + * @hide + */ + @TestApi + @RequiresPermission(android.Manifest.permission.INJECT_EVENTS) + public void holdLock(int durationMs) { + try { + ActivityThread.getPackageManager().holdLock(durationMs); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } } diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index 5836538bde99..daab70ae336f 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -752,4 +752,10 @@ interface IWindowManager */ void requestScrollCapture(int displayId, IBinder behindClient, int taskId, IScrollCaptureController controller); + + /** + * Holds the WM lock for the specified amount of milliseconds. + * Intended for use by the tests that need to imitate lock contention. + */ + void holdLock(in int durationMs); } diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index 0d62da6bc8e3..e96e98b437a1 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -3994,4 +3994,15 @@ public interface WindowManager extends ViewManager { } } } + + /** + * Holds the WM lock for the specified amount of milliseconds. + * Intended for use by the tests that need to imitate lock contention. + * @hide + */ + @TestApi + @RequiresPermission(android.Manifest.permission.INJECT_EVENTS) + default void holdLock(int durationMs) { + throw new UnsupportedOperationException(); + } } diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java index f57ee65948c0..59e022645544 100644 --- a/core/java/android/view/WindowManagerImpl.java +++ b/core/java/android/view/WindowManagerImpl.java @@ -281,4 +281,13 @@ public final class WindowManagerImpl implements WindowManager { throw e.rethrowFromSystemServer(); } } + + @Override + public void holdLock(int durationMs) { + try { + WindowManagerGlobal.getWindowManagerService().holdLock(durationMs); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } } |
