Merge "Revert "Implement a global maximum on number of shortcuts an app can publish"" into tm-dev
diff --git a/TEST_MAPPING b/TEST_MAPPING
index e178583..a48ce0c 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -15,6 +15,22 @@
       ]
     }
   ],
+  "presubmit-pm": [
+    {
+      "name": "PackageManagerServiceServerTests",
+      "options": [
+        {
+          "include-annotation": "android.platform.test.annotations.Presubmit"
+        },
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        },
+        {
+          "exclude-annotation": "org.junit.Ignore"
+        }
+      ]
+    }
+  ],
   "presubmit": [
     {
       "name": "ManagedProvisioningTests",
@@ -167,6 +183,20 @@
          "exclude-annotation": "org.junit.Ignore"
        }
      ]
+   },
+   {
+     "name": "PackageManagerServiceServerTests",
+     "options": [
+       {
+         "include-annotation": "android.platform.test.annotations.Presubmit"
+       },
+       {
+         "exclude-annotation": "androidx.test.filters.FlakyTest"
+       },
+       {
+         "exclude-annotation": "org.junit.Ignore"
+       }
+     ]
    }
  ]
 }
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index cb64173..9344d96 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -9134,8 +9134,9 @@
      */
     public int startProxyOpNoThrow(int op, @NonNull AttributionSource attributionSource,
             @Nullable String message, boolean skipProxyOperation) {
-        return startProxyOpNoThrow(op, attributionSource, message, skipProxyOperation,
-                ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_CHAIN_ID_NONE);
+        return startProxyOpNoThrow(attributionSource.getToken(), op, attributionSource, message,
+                skipProxyOperation, ATTRIBUTION_FLAGS_NONE, ATTRIBUTION_FLAGS_NONE,
+                ATTRIBUTION_CHAIN_ID_NONE);
     }
 
     /**
@@ -9147,7 +9148,8 @@
      *
      * @hide
      */
-    public int startProxyOpNoThrow(int op, @NonNull AttributionSource attributionSource,
+    public int startProxyOpNoThrow(@NonNull IBinder clientId, int op,
+            @NonNull AttributionSource attributionSource,
             @Nullable String message, boolean skipProxyOperation, @AttributionFlags
             int proxyAttributionFlags, @AttributionFlags int proxiedAttributionFlags,
             int attributionChainId) {
@@ -9165,7 +9167,7 @@
                 }
             }
 
-            SyncNotedAppOp syncOp = mService.startProxyOperation(op,
+            SyncNotedAppOp syncOp = mService.startProxyOperation(clientId, op,
                     attributionSource, false, collectionMode == COLLECT_ASYNC, message,
                     shouldCollectMessage, skipProxyOperation, proxyAttributionFlags,
                     proxiedAttributionFlags, attributionChainId);
@@ -9263,9 +9265,10 @@
      */
     public void finishProxyOp(@NonNull String op, int proxiedUid,
             @NonNull String proxiedPackageName, @Nullable String proxiedAttributionTag) {
-        finishProxyOp(op, new AttributionSource(mContext.getAttributionSource(),
+        IBinder token = mContext.getAttributionSource().getToken();
+        finishProxyOp(token, op, new AttributionSource(mContext.getAttributionSource(),
                 new AttributionSource(proxiedUid, proxiedPackageName,  proxiedAttributionTag,
-                        mContext.getAttributionSource().getToken())), /*skipProxyOperation*/ false);
+                        token)), /*skipProxyOperation*/ false);
     }
 
     /**
@@ -9280,10 +9283,11 @@
      *
      * @hide
      */
-    public void finishProxyOp(@NonNull String op, @NonNull AttributionSource attributionSource,
-            boolean skipProxyOperation) {
+    public void finishProxyOp(@NonNull IBinder clientId, @NonNull String op,
+            @NonNull AttributionSource attributionSource, boolean skipProxyOperation) {
         try {
-            mService.finishProxyOperation(strOpToOp(op), attributionSource, skipProxyOperation);
+            mService.finishProxyOperation(clientId, strOpToOp(op), attributionSource,
+                    skipProxyOperation);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/app/AppOpsManagerInternal.java b/core/java/android/app/AppOpsManagerInternal.java
index 4d6e4ae..43023fe 100644
--- a/core/java/android/app/AppOpsManagerInternal.java
+++ b/core/java/android/app/AppOpsManagerInternal.java
@@ -26,13 +26,11 @@
 import android.util.SparseIntArray;
 
 import com.android.internal.app.IAppOpsCallback;
-import com.android.internal.util.function.DecFunction;
 import com.android.internal.util.function.HeptFunction;
 import com.android.internal.util.function.HexFunction;
 import com.android.internal.util.function.QuadFunction;
 import com.android.internal.util.function.QuintConsumer;
 import com.android.internal.util.function.QuintFunction;
-import com.android.internal.util.function.TriFunction;
 import com.android.internal.util.function.UndecFunction;
 
 /**
@@ -135,6 +133,7 @@
         /**
          * Allows overriding start proxy operation behavior.
          *
+         * @param clientId The client calling start, represented by an IBinder
          * @param code The op code to start.
          * @param attributionSource The permission identity of the caller.
          * @param startIfModeDefault Whether to start the op of the mode is default.
@@ -148,11 +147,12 @@
          * @param superImpl The super implementation.
          * @return The app op note result.
          */
-        SyncNotedAppOp startProxyOperation(int code, @NonNull AttributionSource attributionSource,
-                boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message,
-                boolean shouldCollectMessage, boolean skipProxyOperation, @AttributionFlags
-                int proxyAttributionFlags, @AttributionFlags int proxiedAttributionFlags,
-                int attributionChainId, @NonNull DecFunction<Integer, AttributionSource, Boolean,
+        SyncNotedAppOp startProxyOperation(@NonNull IBinder clientId, int code,
+                @NonNull AttributionSource attributionSource, boolean startIfModeDefault,
+                boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage,
+                boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags,
+                @AttributionFlags int proxiedAttributionFlags, int attributionChainId,
+                @NonNull UndecFunction<IBinder, Integer, AttributionSource, Boolean,
                         Boolean, String, Boolean, Boolean, Integer, Integer, Integer,
                         SyncNotedAppOp> superImpl);
 
@@ -176,10 +176,15 @@
          *
          * @param code The op code to finish.
          * @param attributionSource The permission identity of the caller.
+         * @param skipProxyOperation Whether to skip the proxy in the proxy/proxied operation
+         * @param clientId The client calling finishProxyOperation
+         * @param superImpl The "standard" implementation to potentially call
          */
-        void finishProxyOperation(int code, @NonNull AttributionSource attributionSource,
+        void finishProxyOperation(@NonNull IBinder clientId, int code,
+                @NonNull AttributionSource attributionSource,
                 boolean skipProxyOperation,
-                @NonNull TriFunction<Integer, AttributionSource, Boolean, Void> superImpl);
+                @NonNull QuadFunction<IBinder, Integer, AttributionSource, Boolean,
+                        Void> superImpl);
     }
 
     /**
diff --git a/core/java/android/os/WorkSource.java b/core/java/android/os/WorkSource.java
index e899f77..65528e3 100644
--- a/core/java/android/os/WorkSource.java
+++ b/core/java/android/os/WorkSource.java
@@ -128,7 +128,7 @@
         mNames = in.createStringArray();
 
         int numChains = in.readInt();
-        if (numChains > 0) {
+        if (numChains >= 0) {
             mChains = new ArrayList<>(numChains);
             in.readParcelableList(mChains, WorkChain.class.getClassLoader(), android.os.WorkSource.WorkChain.class);
         } else {
diff --git a/core/java/android/service/quicksettings/Tile.java b/core/java/android/service/quicksettings/Tile.java
index 40c0ac0..d1a8eba 100644
--- a/core/java/android/service/quicksettings/Tile.java
+++ b/core/java/android/service/quicksettings/Tile.java
@@ -39,8 +39,8 @@
 
     /**
      * An unavailable state indicates that for some reason this tile is not currently
-     * available to the user for some reason, and will have no click action.  The tile's
-     * icon will be tinted differently to reflect this state.
+     * available to the user, and will have no click action.  The tile's icon will be
+     * tinted differently to reflect this state.
      */
     public static final int STATE_UNAVAILABLE = 0;
 
diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl
index 30da4b4..88447da 100644
--- a/core/java/com/android/internal/app/IAppOpsService.aidl
+++ b/core/java/com/android/internal/app/IAppOpsService.aidl
@@ -58,11 +58,12 @@
     SyncNotedAppOp noteProxyOperation(int code, in AttributionSource attributionSource,
             boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage,
             boolean skipProxyOperation);
-    SyncNotedAppOp startProxyOperation(int code, in AttributionSource attributionSource,
-            boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message,
-            boolean shouldCollectMessage, boolean skipProxyOperation, int proxyAttributionFlags,
-            int proxiedAttributionFlags, int attributionChainId);
-    void finishProxyOperation(int code, in AttributionSource attributionSource,
+    SyncNotedAppOp startProxyOperation(IBinder clientId, int code,
+            in AttributionSource attributionSource, boolean startIfModeDefault,
+            boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage,
+            boolean skipProxyOperation, int proxyAttributionFlags, int proxiedAttributionFlags,
+            int attributionChainId);
+    void finishProxyOperation(IBinder clientId, int code, in AttributionSource attributionSource,
             boolean skipProxyOperation);
 
     // Remaining methods are only used in Java.
diff --git a/packages/SystemUI/src/com/android/systemui/media/ColorSchemeTransition.kt b/packages/SystemUI/src/com/android/systemui/media/ColorSchemeTransition.kt
index f1d5e94..258db2d 100644
--- a/packages/SystemUI/src/com/android/systemui/media/ColorSchemeTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/ColorSchemeTransition.kt
@@ -37,7 +37,7 @@
  * is triggered.
  */
 interface ColorTransition {
-    fun updateColorScheme(scheme: ColorScheme?)
+    fun updateColorScheme(scheme: ColorScheme?): Boolean
 }
 
 /**
@@ -67,14 +67,16 @@
         applyColor(currentColor)
     }
 
-    override fun updateColorScheme(scheme: ColorScheme?) {
+    override fun updateColorScheme(scheme: ColorScheme?): Boolean {
         val newTargetColor = if (scheme == null) defaultColor else extractColor(scheme)
         if (newTargetColor != targetColor) {
             sourceColor = currentColor
             targetColor = newTargetColor
             valueAnimator.cancel()
             valueAnimator.start()
+            return true
         }
+        return false
     }
 
     init {
@@ -235,9 +237,11 @@
         return Utils.getColorAttr(context, id).defaultColor
     }
 
-    fun updateColorScheme(colorScheme: ColorScheme?, enableGradient: Boolean) {
+    fun updateColorScheme(colorScheme: ColorScheme?, enableGradient: Boolean): Boolean {
         isGradientEnabled = enableGradient
-        colorTransitions.forEach { it.updateColorScheme(colorScheme) }
+        var anyChanged = false
+        colorTransitions.forEach { anyChanged = it.updateColorScheme(colorScheme) || anyChanged }
         colorScheme?.let { mediaViewHolder.gutsViewHolder.colorScheme = colorScheme }
+        return anyChanged
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
index 1597845..37be0b3 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
@@ -673,10 +673,15 @@
                 }
                 mArtworkBoundId = reqId;
 
+                // Transition Colors to current color scheme
+                boolean colorSchemeChanged = mColorSchemeTransition
+                        .updateColorScheme(colorScheme, isArtworkBound);
+
                 // Bind the album view to the artwork or a transition drawable
                 ImageView albumView = mMediaViewHolder.getAlbumView();
                 albumView.setPadding(0, 0, 0, 0);
-                if (updateBackground || (!mIsArtworkBound && isArtworkBound)) {
+                if (updateBackground || colorSchemeChanged
+                        || (!mIsArtworkBound && isArtworkBound)) {
                     if (mPrevArtwork == null) {
                         albumView.setImageDrawable(artwork);
                     } else {
@@ -699,9 +704,6 @@
                     mIsArtworkBound = isArtworkBound;
                 }
 
-                // Transition Colors to current color scheme
-                mColorSchemeTransition.updateColorScheme(colorScheme, mIsArtworkBound);
-
                 // App icon - use notification icon
                 ImageView appIconView = mMediaViewHolder.getAppIcon();
                 appIconView.clearColorFilter();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
index 6f4579b..6cf2e66 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
@@ -577,14 +577,20 @@
 
     @Test
     fun bindAlbumView_bitmapInLaterStates_setAfterExecutors() {
-        val bmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)
-        val canvas = Canvas(bmp)
-        canvas.drawColor(Color.RED)
-        val albumArt = Icon.createWithBitmap(bmp)
+        val redBmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)
+        val redCanvas = Canvas(redBmp)
+        redCanvas.drawColor(Color.RED)
+        val redArt = Icon.createWithBitmap(redBmp)
+
+        val greenBmp = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888)
+        val greenCanvas = Canvas(greenBmp)
+        greenCanvas.drawColor(Color.GREEN)
+        val greenArt = Icon.createWithBitmap(greenBmp)
 
         val state0 = mediaData.copy(artwork = null)
-        val state1 = mediaData.copy(artwork = albumArt)
-        val state2 = mediaData.copy(artwork = albumArt)
+        val state1 = mediaData.copy(artwork = redArt)
+        val state2 = mediaData.copy(artwork = redArt)
+        val state3 = mediaData.copy(artwork = greenArt)
         player.attachPlayer(viewHolder)
 
         // First binding sets (empty) drawable
@@ -613,6 +619,12 @@
         bgExecutor.runAllReady()
         mainExecutor.runAllReady()
         verify(albumView, times(2)).setImageDrawable(any(Drawable::class.java))
+
+        // Fourth binding to new image runs transition due to color scheme change
+        player.bindPlayer(state3, PACKAGE)
+        bgExecutor.runAllReady()
+        mainExecutor.runAllReady()
+        verify(albumView, times(3)).setImageDrawable(any(Drawable::class.java))
     }
 
     @Test
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index fb9d60a..6113d2e 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -368,12 +368,10 @@
 import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.MemInfoReader;
 import com.android.internal.util.Preconditions;
-import com.android.internal.util.function.DecFunction;
 import com.android.internal.util.function.HeptFunction;
 import com.android.internal.util.function.HexFunction;
 import com.android.internal.util.function.QuadFunction;
 import com.android.internal.util.function.QuintFunction;
-import com.android.internal.util.function.TriFunction;
 import com.android.internal.util.function.UndecFunction;
 import com.android.server.AlarmManagerInternal;
 import com.android.server.DeviceIdleInternal;
@@ -18280,19 +18278,20 @@
         }
 
         @Override
-        public SyncNotedAppOp startProxyOperation(int code,
+        public SyncNotedAppOp startProxyOperation(@NonNull IBinder clientId, int code,
                 @NonNull AttributionSource attributionSource, boolean startIfModeDefault,
                 boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage,
                 boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags,
                 @AttributionFlags int proxiedAttributionFlags, int attributionChainId,
-                @NonNull DecFunction<Integer, AttributionSource, Boolean, Boolean, String, Boolean,
-                        Boolean, Integer, Integer, Integer, SyncNotedAppOp> superImpl) {
+                @NonNull UndecFunction<IBinder, Integer, AttributionSource,
+                        Boolean, Boolean, String, Boolean, Boolean, Integer, Integer, Integer,
+                        SyncNotedAppOp> superImpl) {
             if (attributionSource.getUid() == mTargetUid && isTargetOp(code)) {
                 final int shellUid = UserHandle.getUid(UserHandle.getUserId(
                         attributionSource.getUid()), Process.SHELL_UID);
                 final long identity = Binder.clearCallingIdentity();
                 try {
-                    return superImpl.apply(code, new AttributionSource(shellUid,
+                    return superImpl.apply(clientId, code, new AttributionSource(shellUid,
                             "com.android.shell", attributionSource.getAttributionTag(),
                             attributionSource.getToken(), attributionSource.getNext()),
                             startIfModeDefault, shouldCollectAsyncNotedOp, message,
@@ -18302,21 +18301,22 @@
                     Binder.restoreCallingIdentity(identity);
                 }
             }
-            return superImpl.apply(code, attributionSource, startIfModeDefault,
+            return superImpl.apply(clientId, code, attributionSource, startIfModeDefault,
                     shouldCollectAsyncNotedOp, message, shouldCollectMessage, skipProxyOperation,
                     proxyAttributionFlags, proxiedAttributionFlags, attributionChainId);
         }
 
         @Override
-        public void finishProxyOperation(int code, @NonNull AttributionSource attributionSource,
-                boolean skipProxyOperation, @NonNull TriFunction<Integer, AttributionSource,
-                        Boolean, Void> superImpl) {
+        public void finishProxyOperation(@NonNull IBinder clientId, int code,
+                @NonNull AttributionSource attributionSource, boolean skipProxyOperation,
+                @NonNull QuadFunction<IBinder, Integer, AttributionSource, Boolean,
+                        Void> superImpl) {
             if (attributionSource.getUid() == mTargetUid && isTargetOp(code)) {
                 final int shellUid = UserHandle.getUid(UserHandle.getUserId(
                         attributionSource.getUid()), Process.SHELL_UID);
                 final long identity = Binder.clearCallingIdentity();
                 try {
-                    superImpl.apply(code, new AttributionSource(shellUid,
+                    superImpl.apply(clientId, code, new AttributionSource(shellUid,
                             "com.android.shell", attributionSource.getAttributionTag(),
                             attributionSource.getToken(), attributionSource.getNext()),
                             skipProxyOperation);
@@ -18324,7 +18324,7 @@
                     Binder.restoreCallingIdentity(identity);
                 }
             }
-            superImpl.apply(code, attributionSource, skipProxyOperation);
+            superImpl.apply(clientId, code, attributionSource, skipProxyOperation);
         }
 
         private boolean isTargetOp(int code) {
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index b56654f..3b30c8f 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -3863,18 +3863,18 @@
     }
 
     @Override
-    public SyncNotedAppOp startProxyOperation(int code,
+    public SyncNotedAppOp startProxyOperation(@NonNull IBinder clientId, int code,
             @NonNull AttributionSource attributionSource, boolean startIfModeDefault,
             boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage,
             boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags,
             @AttributionFlags int proxiedAttributionFlags, int attributionChainId) {
-        return mCheckOpsDelegateDispatcher.startProxyOperation(code, attributionSource,
+        return mCheckOpsDelegateDispatcher.startProxyOperation(clientId, code, attributionSource,
                 startIfModeDefault, shouldCollectAsyncNotedOp, message, shouldCollectMessage,
                 skipProxyOperation, proxyAttributionFlags, proxiedAttributionFlags,
                 attributionChainId);
     }
 
-    private SyncNotedAppOp startProxyOperationImpl(int code,
+    private SyncNotedAppOp startProxyOperationImpl(@NonNull IBinder clientId, int code,
             @NonNull AttributionSource attributionSource,
             boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message,
             boolean shouldCollectMessage, boolean skipProxyOperation, @AttributionFlags
@@ -3883,11 +3883,9 @@
         final int proxyUid = attributionSource.getUid();
         final String proxyPackageName = attributionSource.getPackageName();
         final String proxyAttributionTag = attributionSource.getAttributionTag();
-        final IBinder proxyToken = attributionSource.getToken();
         final int proxiedUid = attributionSource.getNextUid();
         final String proxiedPackageName = attributionSource.getNextPackageName();
         final String proxiedAttributionTag = attributionSource.getNextAttributionTag();
-        final IBinder proxiedToken = attributionSource.getNextToken();
 
         verifyIncomingProxyUid(attributionSource);
         verifyIncomingOp(code);
@@ -3926,7 +3924,7 @@
 
         if (!skipProxyOperation) {
             // Test if the proxied operation will succeed before starting the proxy operation
-            final SyncNotedAppOp testProxiedOp = startOperationUnchecked(proxiedToken, code,
+            final SyncNotedAppOp testProxiedOp = startOperationUnchecked(clientId, code,
                     proxiedUid, resolvedProxiedPackageName, proxiedAttributionTag, proxyUid,
                     resolvedProxyPackageName, proxyAttributionTag, proxiedFlags, startIfModeDefault,
                     shouldCollectAsyncNotedOp, message, shouldCollectMessage,
@@ -3938,7 +3936,7 @@
             final int proxyFlags = isProxyTrusted ? AppOpsManager.OP_FLAG_TRUSTED_PROXY
                     : AppOpsManager.OP_FLAG_UNTRUSTED_PROXY;
 
-            final SyncNotedAppOp proxyAppOp = startOperationUnchecked(proxyToken, code, proxyUid,
+            final SyncNotedAppOp proxyAppOp = startOperationUnchecked(clientId, code, proxyUid,
                     resolvedProxyPackageName, proxyAttributionTag, Process.INVALID_UID, null, null,
                     proxyFlags, startIfModeDefault, !isProxyTrusted, "proxy " + message,
                     shouldCollectMessage, proxyAttributionFlags, attributionChainId,
@@ -3948,7 +3946,7 @@
             }
         }
 
-        return startOperationUnchecked(proxiedToken, code, proxiedUid, resolvedProxiedPackageName,
+        return startOperationUnchecked(clientId, code, proxiedUid, resolvedProxiedPackageName,
                 proxiedAttributionTag, proxyUid, resolvedProxyPackageName, proxyAttributionTag,
                 proxiedFlags, startIfModeDefault, shouldCollectAsyncNotedOp, message,
                 shouldCollectMessage, proxiedAttributionFlags, attributionChainId,
@@ -4089,22 +4087,20 @@
     }
 
     @Override
-    public void finishProxyOperation(int code, @NonNull AttributionSource attributionSource,
-            boolean skipProxyOperation) {
-        mCheckOpsDelegateDispatcher.finishProxyOperation(code, attributionSource,
+    public void finishProxyOperation(@NonNull IBinder clientId, int code,
+            @NonNull AttributionSource attributionSource, boolean skipProxyOperation) {
+        mCheckOpsDelegateDispatcher.finishProxyOperation(clientId, code, attributionSource,
                 skipProxyOperation);
     }
 
-    private Void finishProxyOperationImpl(int code, @NonNull AttributionSource attributionSource,
-            boolean skipProxyOperation) {
+    private Void finishProxyOperationImpl(IBinder clientId, int code,
+            @NonNull AttributionSource attributionSource, boolean skipProxyOperation) {
         final int proxyUid = attributionSource.getUid();
         final String proxyPackageName = attributionSource.getPackageName();
         final String proxyAttributionTag = attributionSource.getAttributionTag();
-        final IBinder proxyToken = attributionSource.getToken();
         final int proxiedUid = attributionSource.getNextUid();
         final String proxiedPackageName = attributionSource.getNextPackageName();
         final String proxiedAttributionTag = attributionSource.getNextAttributionTag();
-        final IBinder proxiedToken = attributionSource.getNextToken();
 
         skipProxyOperation = skipProxyOperation
                 && isCallerAndAttributionTrusted(attributionSource);
@@ -4121,7 +4117,7 @@
         }
 
         if (!skipProxyOperation) {
-            finishOperationUnchecked(proxyToken, code, proxyUid, resolvedProxyPackageName,
+            finishOperationUnchecked(clientId, code, proxyUid, resolvedProxyPackageName,
                     proxyAttributionTag);
         }
 
@@ -4131,7 +4127,7 @@
             return null;
         }
 
-        finishOperationUnchecked(proxiedToken, code, proxiedUid, resolvedProxiedPackageName,
+        finishOperationUnchecked(clientId, code, proxiedUid, resolvedProxiedPackageName,
                 proxiedAttributionTag);
 
         return null;
@@ -7725,42 +7721,42 @@
                     attributionFlags, attributionChainId, AppOpsService.this::startOperationImpl);
         }
 
-        public SyncNotedAppOp startProxyOperation(int code,
+        public SyncNotedAppOp startProxyOperation(@NonNull IBinder clientId, int code,
                 @NonNull AttributionSource attributionSource, boolean startIfModeDefault,
                 boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage,
                 boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags,
                 @AttributionFlags int proxiedAttributionFlags, int attributionChainId) {
             if (mPolicy != null) {
                 if (mCheckOpsDelegate != null) {
-                    return mPolicy.startProxyOperation(code, attributionSource,
+                    return mPolicy.startProxyOperation(clientId, code, attributionSource,
                             startIfModeDefault, shouldCollectAsyncNotedOp, message,
                             shouldCollectMessage, skipProxyOperation, proxyAttributionFlags,
                             proxiedAttributionFlags, attributionChainId,
                             this::startDelegateProxyOperationImpl);
                 } else {
-                    return mPolicy.startProxyOperation(code, attributionSource,
+                    return mPolicy.startProxyOperation(clientId, code, attributionSource,
                             startIfModeDefault, shouldCollectAsyncNotedOp, message,
                             shouldCollectMessage, skipProxyOperation, proxyAttributionFlags,
                             proxiedAttributionFlags, attributionChainId,
                             AppOpsService.this::startProxyOperationImpl);
                 }
             } else if (mCheckOpsDelegate != null) {
-                return startDelegateProxyOperationImpl(code, attributionSource,
+                return startDelegateProxyOperationImpl(clientId, code, attributionSource,
                         startIfModeDefault, shouldCollectAsyncNotedOp, message,
                         shouldCollectMessage, skipProxyOperation, proxyAttributionFlags,
                         proxiedAttributionFlags, attributionChainId);
             }
-            return startProxyOperationImpl(code, attributionSource, startIfModeDefault,
+            return startProxyOperationImpl(clientId, code, attributionSource, startIfModeDefault,
                     shouldCollectAsyncNotedOp, message, shouldCollectMessage, skipProxyOperation,
                     proxyAttributionFlags, proxiedAttributionFlags, attributionChainId);
         }
 
-        private SyncNotedAppOp startDelegateProxyOperationImpl(int code,
+        private SyncNotedAppOp startDelegateProxyOperationImpl(@NonNull IBinder clientId, int code,
                 @NonNull AttributionSource attributionSource, boolean startIfModeDefault,
                 boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage,
                 boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags,
                 @AttributionFlags int proxiedAttributionFlsgs, int attributionChainId) {
-            return mCheckOpsDelegate.startProxyOperation(code, attributionSource,
+            return mCheckOpsDelegate.startProxyOperation(clientId, code, attributionSource,
                     startIfModeDefault, shouldCollectAsyncNotedOp, message, shouldCollectMessage,
                     skipProxyOperation, proxyAttributionFlags, proxiedAttributionFlsgs,
                     attributionChainId, AppOpsService.this::startProxyOperationImpl);
@@ -7789,27 +7785,28 @@
                     AppOpsService.this::finishOperationImpl);
         }
 
-        public void finishProxyOperation(int code,
+        public void finishProxyOperation(@NonNull IBinder clientId, int code,
                 @NonNull AttributionSource attributionSource, boolean skipProxyOperation) {
             if (mPolicy != null) {
                 if (mCheckOpsDelegate != null) {
-                    mPolicy.finishProxyOperation(code, attributionSource,
+                    mPolicy.finishProxyOperation(clientId, code, attributionSource,
                             skipProxyOperation, this::finishDelegateProxyOperationImpl);
                 } else {
-                    mPolicy.finishProxyOperation(code, attributionSource,
+                    mPolicy.finishProxyOperation(clientId, code, attributionSource,
                             skipProxyOperation, AppOpsService.this::finishProxyOperationImpl);
                 }
             } else if (mCheckOpsDelegate != null) {
-                finishDelegateProxyOperationImpl(code, attributionSource, skipProxyOperation);
+                finishDelegateProxyOperationImpl(clientId, code, attributionSource,
+                        skipProxyOperation);
             } else {
-                finishProxyOperationImpl(code, attributionSource, skipProxyOperation);
+                finishProxyOperationImpl(clientId, code, attributionSource, skipProxyOperation);
             }
         }
 
-        private Void finishDelegateProxyOperationImpl(int code,
+        private Void finishDelegateProxyOperationImpl(@NonNull IBinder clientId, int code,
                 @NonNull AttributionSource attributionSource, boolean skipProxyOperation) {
-            mCheckOpsDelegate.finishProxyOperation(code, attributionSource, skipProxyOperation,
-                    AppOpsService.this::finishProxyOperationImpl);
+            mCheckOpsDelegate.finishProxyOperation(clientId, code, attributionSource,
+                    skipProxyOperation, AppOpsService.this::finishProxyOperationImpl);
             return null;
         }
     }
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index b3ba20b..2c81b21 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -1099,7 +1099,7 @@
                     if (resolvedPackageName == null) {
                         return;
                     }
-                    appOpsManager.finishOp(accessorSource.getToken(), op,
+                    appOpsManager.finishOp(attributionSourceState.token, op,
                             accessorSource.getUid(), resolvedPackageName,
                             accessorSource.getAttributionTag());
                 } else {
@@ -1108,8 +1108,9 @@
                     if (resolvedAttributionSource.getPackageName() == null) {
                         return;
                     }
-                    appOpsManager.finishProxyOp(AppOpsManager.opToPublicName(op),
-                            resolvedAttributionSource, skipCurrentFinish);
+                    appOpsManager.finishProxyOp(attributionSourceState.token,
+                            AppOpsManager.opToPublicName(op), resolvedAttributionSource,
+                            skipCurrentFinish);
                 }
 
                 if (next == null || next.getNext() == null) {
@@ -1219,10 +1220,11 @@
                         && next.getNext() == null);
                 final boolean selfAccess = singleReceiverFromDatasource || next == null;
 
-                final int opMode = performOpTransaction(context, op, current, message,
-                        forDataDelivery, /*startDataDelivery*/ false, skipCurrentChecks,
-                        selfAccess, singleReceiverFromDatasource, AppOpsManager.OP_NONE,
-                        AppOpsManager.ATTRIBUTION_FLAGS_NONE, AppOpsManager.ATTRIBUTION_FLAGS_NONE,
+                final int opMode = performOpTransaction(context, attributionSource.getToken(), op,
+                        current, message, forDataDelivery, /*startDataDelivery*/ false,
+                        skipCurrentChecks, selfAccess, singleReceiverFromDatasource,
+                        AppOpsManager.OP_NONE, AppOpsManager.ATTRIBUTION_FLAGS_NONE,
+                        AppOpsManager.ATTRIBUTION_FLAGS_NONE,
                         AppOpsManager.ATTRIBUTION_CHAIN_ID_NONE);
 
                 switch (opMode) {
@@ -1325,10 +1327,10 @@
                         attributionSource, next, fromDatasource, startDataDelivery, selfAccess,
                         isLinkTrusted) : ATTRIBUTION_FLAGS_NONE;
 
-                final int opMode = performOpTransaction(context, op, current, message,
-                        forDataDelivery, startDataDelivery, skipCurrentChecks, selfAccess,
-                        singleReceiverFromDatasource, attributedOp, proxyAttributionFlags,
-                        proxiedAttributionFlags, attributionChainId);
+                final int opMode = performOpTransaction(context, attributionSource.getToken(), op,
+                        current, message, forDataDelivery, startDataDelivery, skipCurrentChecks,
+                        selfAccess, singleReceiverFromDatasource, attributedOp,
+                        proxyAttributionFlags, proxiedAttributionFlags, attributionChainId);
 
                 switch (opMode) {
                     case AppOpsManager.MODE_ERRORED: {
@@ -1473,8 +1475,8 @@
                         attributionSource, next, /*fromDatasource*/ false, startDataDelivery,
                         selfAccess, isLinkTrusted) : ATTRIBUTION_FLAGS_NONE;
 
-                final int opMode = performOpTransaction(context, op, current, message,
-                        forDataDelivery, startDataDelivery, skipCurrentChecks, selfAccess,
+                final int opMode = performOpTransaction(context, current.getToken(), op, current,
+                        message, forDataDelivery, startDataDelivery, skipCurrentChecks, selfAccess,
                         /*fromDatasource*/ false, AppOpsManager.OP_NONE, proxyAttributionFlags,
                         proxiedAttributionFlags, attributionChainId);
 
@@ -1496,7 +1498,8 @@
         }
 
         @SuppressWarnings("ConstantConditions")
-        private static int performOpTransaction(@NonNull Context context, int op,
+        private static int performOpTransaction(@NonNull Context context,
+                @NonNull IBinder chainStartToken, int op,
                 @NonNull AttributionSource attributionSource, @Nullable String message,
                 boolean forDataDelivery, boolean startDataDelivery, boolean skipProxyOperation,
                 boolean selfAccess, boolean singleReceiverFromDatasource, int attributedOp,
@@ -1558,7 +1561,7 @@
                 if (selfAccess) {
                     try {
                         startedOpResult = appOpsManager.startOpNoThrow(
-                                resolvedAttributionSource.getToken(), startedOp,
+                                chainStartToken, startedOp,
                                 resolvedAttributionSource.getUid(),
                                 resolvedAttributionSource.getPackageName(),
                                 /*startIfModeDefault*/ false,
@@ -1569,14 +1572,14 @@
                                 + " platform defined runtime permission "
                                 + AppOpsManager.opToPermission(op) + " while not having "
                                 + Manifest.permission.UPDATE_APP_OPS_STATS);
-                        startedOpResult = appOpsManager.startProxyOpNoThrow(attributedOp,
-                                attributionSource, message, skipProxyOperation,
+                        startedOpResult = appOpsManager.startProxyOpNoThrow(chainStartToken,
+                                attributedOp, attributionSource, message, skipProxyOperation,
                                 proxyAttributionFlags, proxiedAttributionFlags, attributionChainId);
                     }
                 } else {
                     try {
-                        startedOpResult = appOpsManager.startProxyOpNoThrow(startedOp,
-                                resolvedAttributionSource, message, skipProxyOperation,
+                        startedOpResult = appOpsManager.startProxyOpNoThrow(chainStartToken,
+                                startedOp, resolvedAttributionSource, message, skipProxyOperation,
                                 proxyAttributionFlags, proxiedAttributionFlags, attributionChainId);
                     } catch (SecurityException e) {
                         //TODO 195339480: remove
diff --git a/services/core/java/com/android/server/policy/AppOpsPolicy.java b/services/core/java/com/android/server/policy/AppOpsPolicy.java
index ebd9126..b26c1b9 100644
--- a/services/core/java/com/android/server/policy/AppOpsPolicy.java
+++ b/services/core/java/com/android/server/policy/AppOpsPolicy.java
@@ -45,13 +45,11 @@
 import android.util.SparseArray;
 
 import com.android.internal.annotations.GuardedBy;
-import com.android.internal.util.function.DecFunction;
 import com.android.internal.util.function.HeptFunction;
 import com.android.internal.util.function.HexFunction;
 import com.android.internal.util.function.QuadFunction;
 import com.android.internal.util.function.QuintConsumer;
 import com.android.internal.util.function.QuintFunction;
-import com.android.internal.util.function.TriFunction;
 import com.android.internal.util.function.UndecFunction;
 import com.android.server.LocalServices;
 
@@ -256,14 +254,14 @@
     }
 
     @Override
-    public SyncNotedAppOp startProxyOperation(int code,
+    public SyncNotedAppOp startProxyOperation(@NonNull IBinder clientId, int code,
             @NonNull AttributionSource attributionSource, boolean startIfModeDefault,
             boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage,
             boolean skipProxyOperation, @AttributionFlags int proxyAttributionFlags,
             @AttributionFlags int proxiedAttributionFlags, int attributionChainId,
-            @NonNull DecFunction<Integer, AttributionSource, Boolean, Boolean, String, Boolean,
-                    Boolean, Integer, Integer, Integer, SyncNotedAppOp> superImpl) {
-        return superImpl.apply(resolveDatasourceOp(code, attributionSource.getUid(),
+            @NonNull UndecFunction<IBinder, Integer, AttributionSource, Boolean, Boolean, String,
+                    Boolean, Boolean, Integer, Integer, Integer, SyncNotedAppOp> superImpl) {
+        return superImpl.apply(clientId, resolveDatasourceOp(code, attributionSource.getUid(),
                 attributionSource.getPackageName(), attributionSource.getAttributionTag()),
                 attributionSource, startIfModeDefault, shouldCollectAsyncNotedOp, message,
                 shouldCollectMessage, skipProxyOperation, proxyAttributionFlags,
@@ -279,10 +277,10 @@
     }
 
     @Override
-    public void finishProxyOperation(int code, @NonNull AttributionSource attributionSource,
-            boolean skipProxyOperation, @NonNull TriFunction<Integer, AttributionSource,
-            Boolean, Void> superImpl) {
-        superImpl.apply(resolveDatasourceOp(code, attributionSource.getUid(),
+    public void finishProxyOperation(@NonNull IBinder clientId, int code,
+            @NonNull AttributionSource attributionSource, boolean skipProxyOperation,
+            @NonNull QuadFunction<IBinder, Integer, AttributionSource, Boolean, Void> superImpl) {
+        superImpl.apply(clientId, resolveDatasourceOp(code, attributionSource.getUid(),
                 attributionSource.getPackageName(), attributionSource.getAttributionTag()),
                 attributionSource, skipProxyOperation);
     }
diff --git a/services/tests/PackageManagerServiceTests/TEST_MAPPING b/services/tests/PackageManagerServiceTests/TEST_MAPPING
index af0008c..fe27a37 100644
--- a/services/tests/PackageManagerServiceTests/TEST_MAPPING
+++ b/services/tests/PackageManagerServiceTests/TEST_MAPPING
@@ -2,11 +2,45 @@
   "presubmit": [
     {
       "name": "AppEnumerationInternalTests"
+    },
+    {
+      "name": "PackageManagerServiceServerTests",
+      "options": [
+        {
+          "include-filter": "com.android.server.pm."
+        },
+        {
+          "include-annotation": "android.platform.test.annotations.Presubmit"
+        },
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        },
+        {
+          "exclude-annotation": "org.junit.Ignore"
+        }
+      ]
     }
   ],
   "postsubmit": [
     {
       "name": "PackageManagerServiceHostTests"
+    },
+    {
+      "name": "PackageManagerServiceServerTests",
+      "options": [
+        {
+          "include-filter": "com.android.server.pm."
+        },
+        {
+          "include-annotation": "android.platform.test.annotations.Postsubmit"
+        },
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        },
+        {
+          "exclude-annotation": "org.junit.Ignore"
+        }
+      ]
     }
   ],
   "imports": [
diff --git a/services/tests/servicestests/apks/Android.bp b/services/tests/PackageManagerServiceTests/apks/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/Android.bp
diff --git a/services/tests/servicestests/apks/OWNERS b/services/tests/PackageManagerServiceTests/apks/OWNERS
similarity index 100%
rename from services/tests/servicestests/apks/OWNERS
rename to services/tests/PackageManagerServiceTests/apks/OWNERS
diff --git a/services/tests/servicestests/apks/install-split-base/Android.bp b/services/tests/PackageManagerServiceTests/apks/install-split-base/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install-split-base/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install-split-base/Android.bp
diff --git a/services/tests/servicestests/apks/install-split-base/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install-split-base/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install-split-base/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install-split-base/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install-split-base/src/com/google/android/dexapis/splitapp/BaseActivity.java b/services/tests/PackageManagerServiceTests/apks/install-split-base/src/com/google/android/dexapis/splitapp/BaseActivity.java
similarity index 100%
rename from services/tests/servicestests/apks/install-split-base/src/com/google/android/dexapis/splitapp/BaseActivity.java
rename to services/tests/PackageManagerServiceTests/apks/install-split-base/src/com/google/android/dexapis/splitapp/BaseActivity.java
diff --git a/services/tests/servicestests/apks/install-split-feature-a/Android.bp b/services/tests/PackageManagerServiceTests/apks/install-split-feature-a/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install-split-feature-a/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install-split-feature-a/Android.bp
diff --git a/services/tests/servicestests/apks/install-split-feature-a/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install-split-feature-a/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install-split-feature-a/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install-split-feature-a/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install-split-feature-a/src/com/google/android/dexapis/splitapp/feature_a/FeatureAActivity.java b/services/tests/PackageManagerServiceTests/apks/install-split-feature-a/src/com/google/android/dexapis/splitapp/feature_a/FeatureAActivity.java
similarity index 100%
rename from services/tests/servicestests/apks/install-split-feature-a/src/com/google/android/dexapis/splitapp/feature_a/FeatureAActivity.java
rename to services/tests/PackageManagerServiceTests/apks/install-split-feature-a/src/com/google/android/dexapis/splitapp/feature_a/FeatureAActivity.java
diff --git a/services/tests/servicestests/apks/install/Android.bp b/services/tests/PackageManagerServiceTests/apks/install/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install/Android.bp
diff --git a/services/tests/servicestests/apks/install/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_bad_dex/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_bad_dex/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_bad_dex/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_bad_dex/Android.bp
diff --git a/services/tests/servicestests/apks/install_bad_dex/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_bad_dex/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_bad_dex/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_bad_dex/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_bad_dex/classes.dex b/services/tests/PackageManagerServiceTests/apks/install_bad_dex/classes.dex
similarity index 100%
rename from services/tests/servicestests/apks/install_bad_dex/classes.dex
rename to services/tests/PackageManagerServiceTests/apks/install_bad_dex/classes.dex
diff --git a/services/tests/servicestests/apks/install_bad_dex/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_bad_dex/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_bad_dex/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_bad_dex/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_bad_dex/src/com/android/frameworks/coretests/TestActivity.java b/services/tests/PackageManagerServiceTests/apks/install_bad_dex/src/com/android/frameworks/coretests/TestActivity.java
similarity index 100%
rename from services/tests/servicestests/apks/install_bad_dex/src/com/android/frameworks/coretests/TestActivity.java
rename to services/tests/PackageManagerServiceTests/apks/install_bad_dex/src/com/android/frameworks/coretests/TestActivity.java
diff --git a/services/tests/servicestests/apks/install_complete_package_info/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_complete_package_info/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_complete_package_info/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_complete_package_info/Android.bp
diff --git a/services/tests/servicestests/apks/install_complete_package_info/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_complete_package_info/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_complete_package_info/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_complete_package_info/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestActivity.java b/services/tests/PackageManagerServiceTests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestActivity.java
similarity index 100%
rename from services/tests/servicestests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestActivity.java
rename to services/tests/PackageManagerServiceTests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestActivity.java
diff --git a/services/tests/servicestests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestProvider.java b/services/tests/PackageManagerServiceTests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestProvider.java
similarity index 100%
rename from services/tests/servicestests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestProvider.java
rename to services/tests/PackageManagerServiceTests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestProvider.java
diff --git a/services/tests/servicestests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestReceiver.java b/services/tests/PackageManagerServiceTests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestReceiver.java
similarity index 100%
rename from services/tests/servicestests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestReceiver.java
rename to services/tests/PackageManagerServiceTests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestReceiver.java
diff --git a/services/tests/servicestests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestService.java b/services/tests/PackageManagerServiceTests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestService.java
similarity index 100%
rename from services/tests/servicestests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestService.java
rename to services/tests/PackageManagerServiceTests/apks/install_complete_package_info/src/com/android/frameworks/coretests/TestService.java
diff --git a/services/tests/servicestests/apks/install_decl_perm/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_decl_perm/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_decl_perm/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_decl_perm/Android.bp
diff --git a/services/tests/servicestests/apks/install_decl_perm/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_decl_perm/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_decl_perm/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_decl_perm/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_decl_perm/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_decl_perm/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_decl_perm/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_decl_perm/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_intent_filters/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_intent_filters/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_intent_filters/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_intent_filters/Android.bp
diff --git a/services/tests/servicestests/apks/install_intent_filters/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_intent_filters/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_intent_filters/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_intent_filters/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_intent_filters/src/com/android/frameworks/servicestests/TestActivity.java b/services/tests/PackageManagerServiceTests/apks/install_intent_filters/src/com/android/frameworks/servicestests/TestActivity.java
similarity index 100%
rename from services/tests/servicestests/apks/install_intent_filters/src/com/android/frameworks/servicestests/TestActivity.java
rename to services/tests/PackageManagerServiceTests/apks/install_intent_filters/src/com/android/frameworks/servicestests/TestActivity.java
diff --git a/services/tests/servicestests/apks/install_loc_auto/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_loc_auto/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_auto/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_loc_auto/Android.bp
diff --git a/services/tests/servicestests/apks/install_loc_auto/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_loc_auto/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_auto/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_loc_auto/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_loc_auto/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_loc_auto/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_auto/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_loc_auto/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_loc_internal/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_loc_internal/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_internal/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_loc_internal/Android.bp
diff --git a/services/tests/servicestests/apks/install_loc_internal/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_loc_internal/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_internal/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_loc_internal/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_loc_internal/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_loc_internal/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_internal/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_loc_internal/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_loc_sdcard/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_loc_sdcard/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_sdcard/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_loc_sdcard/Android.bp
diff --git a/services/tests/servicestests/apks/install_loc_sdcard/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_loc_sdcard/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_sdcard/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_loc_sdcard/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_loc_sdcard/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_loc_sdcard/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_sdcard/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_loc_sdcard/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_loc_unspecified/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_loc_unspecified/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_unspecified/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_loc_unspecified/Android.bp
diff --git a/services/tests/servicestests/apks/install_loc_unspecified/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_loc_unspecified/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_unspecified/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_loc_unspecified/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_loc_unspecified/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_loc_unspecified/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_loc_unspecified/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_loc_unspecified/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_use_perm_good/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_use_perm_good/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_use_perm_good/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_use_perm_good/Android.bp
diff --git a/services/tests/servicestests/apks/install_use_perm_good/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_use_perm_good/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_use_perm_good/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_use_perm_good/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_use_perm_good/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_use_perm_good/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_use_perm_good/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_use_perm_good/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_uses_feature/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_uses_feature/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_feature/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_uses_feature/Android.bp
diff --git a/services/tests/servicestests/apks/install_uses_feature/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_feature/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_feature/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_feature/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/install_uses_feature/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_feature/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_feature/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_feature/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/Android.bp b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/Android.bp
similarity index 82%
rename from services/tests/servicestests/apks/install_uses_sdk/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/Android.bp
index a51293d..9f96256 100644
--- a/services/tests/servicestests/apks/install_uses_sdk/Android.bp
+++ b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/Android.bp
@@ -38,12 +38,24 @@
 }
 
 android_test_helper_app {
+    name: "FrameworksServicesTests_install_uses_sdk_r1000",
+    defaults: ["FrameworksServicesTests_apks_defaults"],
+    manifest: "AndroidManifest-r1000.xml",
+}
+
+android_test_helper_app {
     name: "FrameworksServicesTests_install_uses_sdk_r0_s0",
     defaults: ["FrameworksServicesTests_apks_defaults"],
     manifest: "AndroidManifest-r0-s0.xml",
 }
 
 android_test_helper_app {
+    name: "FrameworksServicesTests_install_uses_sdk_r0_s1000",
+    defaults: ["FrameworksServicesTests_apks_defaults"],
+    manifest: "AndroidManifest-r0-s1000.xml",
+}
+
+android_test_helper_app {
     name: "FrameworksServicesTests_install_uses_sdk_r0_s5",
     defaults: ["FrameworksServicesTests_apks_defaults"],
     manifest: "AndroidManifest-r0-s5.xml",
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-0.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-0.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-0.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-0.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-q0-r0.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-q0-r0.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-q0-r0.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-q0-r0.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-q0.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-q0.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-q0.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-q0.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r-none.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r-none.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r-none.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r-none.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0-s0.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r0-s0.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0-s0.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r0-s0.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0-s5.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r0-s1000.xml
similarity index 100%
copy from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0-s5.xml
copy to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r0-s1000.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0-s5.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r0-s5.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0-s5.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r0-s5.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r0.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r0.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r0.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r5.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r1000.xml
similarity index 100%
copy from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r5.xml
copy to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r1000.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r5.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r5.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/AndroidManifest-r5.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/AndroidManifest-r5.xml
diff --git a/services/tests/servicestests/apks/install_uses_sdk/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/install_uses_sdk/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/install_uses_sdk/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/install_uses_sdk/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/keyset/Android.bp b/services/tests/PackageManagerServiceTests/apks/keyset/Android.bp
similarity index 100%
rename from services/tests/servicestests/apks/keyset/Android.bp
rename to services/tests/PackageManagerServiceTests/apks/keyset/Android.bp
diff --git a/services/tests/servicestests/apks/keyset/api_test/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/keyset/api_test/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/api_test/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/api_test/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/keyset/permDef/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/keyset/permDef/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/permDef/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/permDef/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/keyset/permUse/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/keyset/permUse/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/permUse/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/permUse/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/keyset/res/values/strings.xml b/services/tests/PackageManagerServiceTests/apks/keyset/res/values/strings.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/res/values/strings.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/res/values/strings.xml
diff --git a/services/tests/servicestests/apks/keyset/uA/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/keyset/uA/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/uA/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/uA/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/keyset/uAB/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/keyset/uAB/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/uAB/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/uAB/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/keyset/uAuB/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/keyset/uAuB/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/uAuB/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/uAuB/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/keyset/uB/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/keyset/uB/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/uB/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/uB/AndroidManifest.xml
diff --git a/services/tests/servicestests/apks/keyset/uNone/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/apks/keyset/uNone/AndroidManifest.xml
similarity index 100%
rename from services/tests/servicestests/apks/keyset/uNone/AndroidManifest.xml
rename to services/tests/PackageManagerServiceTests/apks/keyset/uNone/AndroidManifest.xml
diff --git a/services/tests/PackageManagerServiceTests/server/Android.bp b/services/tests/PackageManagerServiceTests/server/Android.bp
new file mode 100644
index 0000000..f1edd96
--- /dev/null
+++ b/services/tests/PackageManagerServiceTests/server/Android.bp
@@ -0,0 +1,160 @@
+//########################################################################
+// Build PackageManagerServiceServerTests package
+//########################################################################
+
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_base_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["frameworks_base_license"],
+}
+
+android_test {
+    name: "PackageManagerServiceServerTests",
+
+    // Include all test java files.
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.kt",
+    ],
+    static_libs: [
+        "frameworks-base-testutils",
+        "services.accessibility",
+        "services.appwidget",
+        "services.autofill",
+        "services.backup",
+        "services.companion",
+        "services.core",
+        "services.devicepolicy",
+        "services.net",
+        "services.people",
+        "services.usage",
+        "guava",
+        "guava-android-testlib",
+        "androidx.test.core",
+        "androidx.test.ext.truth",
+        "androidx.test.runner",
+        "androidx.test.rules",
+        "cts-wm-util",
+        "platform-compat-test-rules",
+        "mockito-target-minus-junit4",
+        "platform-test-annotations",
+        "ShortcutManagerTestUtils",
+        "truth-prebuilt",
+        "testables",
+        "ub-uiautomator",
+        "platformprotosnano",
+        "framework-protos",
+        "hamcrest-library",
+        "servicestests-core-utils",
+        "servicestests-dpm-utils",
+        "servicestests-utils",
+        "service-permission.impl",
+        "testng",
+        "truth-prebuilt",
+        "junit",
+        "junit-params",
+        "platform-compat-test-rules",
+        "ActivityContext",
+        "coretests-aidl",
+    ],
+
+    libs: [
+        "android.hardware.power-V1-java",
+        "android.hardware.tv.cec-V1.0-java",
+        "android.hardware.vibrator-V2-java",
+        "android.hidl.manager-V1.0-java",
+        "android.test.mock",
+        "android.test.base",
+        "android.test.runner",
+    ],
+
+    platform_apis: true,
+
+    test_suites: [
+        "device-tests",
+        "automotive-tests",
+    ],
+
+    certificate: "platform",
+
+    // These are not normally accessible from apps so they must be explicitly included.
+    jni_libs: [
+        "libbase",
+        "libbinder",
+        "libc++",
+        "libcutils",
+        "liblog",
+        "liblzma",
+        "libnativehelper",
+        "libpsi",
+        "libui",
+        "libunwindstack",
+        "libutils",
+        "netd_aidl_interface-V5-cpp",
+    ],
+
+    dxflags: ["--multi-dex"],
+
+    java_resources: [
+        ":PackageParserTestApp1",
+        ":PackageParserTestApp2",
+        ":PackageParserTestApp3",
+        ":PackageParserTestApp4",
+        ":PackageParserTestApp5",
+    ],
+    resource_zips: [":PackageManagerServiceServerTests_apks_as_resources"],
+}
+
+// Rules to copy all the test apks to the intermediate raw resource directory
+java_genrule {
+    name: "PackageManagerServiceServerTests_apks_as_resources",
+    srcs: [
+        ":FrameworksServicesTests_install",
+        ":FrameworksServicesTests_install_bad_dex",
+        ":FrameworksServicesTests_install_complete_package_info",
+        ":FrameworksServicesTests_install_decl_perm",
+        ":FrameworksServicesTests_install_intent_filters",
+        ":FrameworksServicesTests_install_loc_auto",
+        ":FrameworksServicesTests_install_loc_internal",
+        ":FrameworksServicesTests_install_loc_sdcard",
+        ":FrameworksServicesTests_install_loc_unspecified",
+        ":FrameworksServicesTests_install_use_perm_good",
+        ":FrameworksServicesTests_install_uses_feature",
+        ":FrameworksServicesTests_install_uses_sdk_0",
+        ":FrameworksServicesTests_install_uses_sdk_q0",
+        ":FrameworksServicesTests_install_uses_sdk_q0_r0",
+        ":FrameworksServicesTests_install_uses_sdk_r0",
+        ":FrameworksServicesTests_install_uses_sdk_r5",
+        ":FrameworksServicesTests_install_uses_sdk_r1000",
+        ":FrameworksServicesTests_install_uses_sdk_r_none",
+        ":FrameworksServicesTests_install_uses_sdk_r0_s0",
+        ":FrameworksServicesTests_install_uses_sdk_r0_s5",
+        ":FrameworksServicesTests_install_uses_sdk_r0_s1000",
+        ":FrameworksServicesTests_keyset_permdef_sa_unone",
+        ":FrameworksServicesTests_keyset_permuse_sa_ua_ub",
+        ":FrameworksServicesTests_keyset_permuse_sb_ua_ub",
+        ":FrameworksServicesTests_keyset_sa_ua",
+        ":FrameworksServicesTests_keyset_sa_ua_ub",
+        ":FrameworksServicesTests_keyset_sa_uab",
+        ":FrameworksServicesTests_keyset_sa_ub",
+        ":FrameworksServicesTests_keyset_sa_unone",
+        ":FrameworksServicesTests_keyset_sab_ua",
+        ":FrameworksServicesTests_keyset_sau_ub",
+        ":FrameworksServicesTests_keyset_sb_ua",
+        ":FrameworksServicesTests_keyset_sb_ub",
+        ":FrameworksServicesTests_keyset_splat_api",
+        ":FrameworksServicesTests_keyset_splata_api",
+    ],
+    out: ["PackageManagerServiceServerTests_apks_as_resources.res.zip"],
+    tools: ["soong_zip"],
+
+    cmd: "mkdir -p $(genDir)/res/raw && " +
+        "for i in $(in); do " +
+        "  x=$${i##*FrameworksCoreTests_}; cp $$i $(genDir)/res/raw/$${x%.apk};" +
+        "  x=$${i##*FrameworksServicesTests_}; cp $$i $(genDir)/res/raw/$${x%.apk};" +
+        "done && " +
+        "$(location soong_zip) -o $(out) -C $(genDir)/res -D $(genDir)/res",
+}
diff --git a/services/tests/PackageManagerServiceTests/server/AndroidManifest.xml b/services/tests/PackageManagerServiceTests/server/AndroidManifest.xml
new file mode 100644
index 0000000..c383197
--- /dev/null
+++ b/services/tests/PackageManagerServiceTests/server/AndroidManifest.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+     package="com.android.server.pm.test.service.server">
+
+    <uses-permission android:name="android.permission.READ_LOGS"/>
+    <uses-permission android:name="android.permission.ACCESS_VR_MANAGER"/>
+    <uses-permission android:name="android.permission.ACCOUNT_MANAGER"/>
+    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
+    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
+    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
+    <uses-permission android:name="android.permission.MANAGE_APP_TOKENS"/>
+    <uses-permission android:name="android.permission.WAKE_LOCK"/>
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
+    <uses-permission android:name="android.permission.REAL_GET_TASKS"/>
+    <uses-permission android:name="android.permission.GET_DETAILED_TASKS"/>
+    <uses-permission android:name="android.permission.REORDER_TASKS"/>
+    <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY"/>
+    <uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY"/>
+    <uses-permission android:name="android.permission.OBSERVE_NETWORK_POLICY"/>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+    <uses-permission android:name="android.permission.MANAGE_USERS"/>
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
+    <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS"/>
+    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
+    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.PACKET_KEEPALIVE_OFFLOAD"/>
+    <uses-permission android:name="android.permission.GET_INTENT_SENDER_INTENT"/>
+    <uses-permission android:name="android.permission.MANAGE_ACTIVITY_TASKS"/>
+    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
+    <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
+    <uses-permission android:name="android.permission.DELETE_PACKAGES"/>
+    <uses-permission android:name="android.permission.GET_APP_OPS_STATS"/>
+    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS"/>
+    <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES"/>
+    <uses-permission android:name="android.permission.DEVICE_POWER"/>
+    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
+    <uses-permission android:name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST"/>
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
+    <uses-permission android:name="android.permission.STATUS_BAR"/>
+    <uses-permission android:name="android.permission.STATUS_BAR_SERVICE"/>
+    <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER"/>
+    <uses-permission android:name="android.permission.READ_FRAME_BUFFER"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.STORAGE_INTERNAL"/>
+    <uses-permission android:name="android.permission.WATCH_APPOPS"/>
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
+    <uses-permission android:name="android.permission.SUSPEND_APPS"/>
+    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
+    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
+    <uses-permission android:name="android.permission.CONTROL_KEYGUARD"/>
+    <uses-permission android:name="android.permission.MANAGE_BIND_INSTANT_SERVICE"/>
+    <uses-permission android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS"/>
+    <uses-permission android:name="android.permission.CONTROL_DISPLAY_BRIGHTNESS"/>
+    <uses-permission android:name="android.permission.CONFIGURE_DISPLAY_BRIGHTNESS"/>
+    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
+    <uses-permission android:name="android.permission.WRITE_DEVICE_CONFIG"/>
+    <uses-permission android:name="android.permission.HARDWARE_TEST"/>
+    <uses-permission android:name="android.permission.BLUETOOTH"/>
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
+    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE"/>
+    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
+    <uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
+    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
+    <uses-permission android:name="android.permission.DUMP"/>
+    <uses-permission android:name="android.permission.READ_DREAM_STATE"/>
+    <uses-permission android:name="android.permission.READ_DREAM_SUPPRESSION"/>
+    <uses-permission android:name="android.permission.WRITE_DREAM_STATE"/>
+    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
+    <uses-permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE"/>
+    <uses-permission android:name="android.permission.MEDIA_RESOURCE_OVERRIDE_PID"/>
+    <uses-permission android:name="android.permission.VIBRATE"/>
+    <uses-permission android:name="android.permission.ACCESS_VIBRATOR_STATE"/>
+    <uses-permission android:name="android.permission.VIBRATE_ALWAYS_ON"/>
+    <uses-permission android:name="android.permission.CONTROL_DEVICE_STATE"/>
+    <uses-permission android:name="android.permission.READ_PROJECTION_STATE"/>
+    <uses-permission android:name="android.permission.KILL_UID"/>
+    <uses-permission android:name="android.permission.MAINLINE_NETWORK_STACK"/>
+    <uses-permission
+        android:name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD"/>
+    <uses-permission android:name="android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY" />
+    <uses-permission android:name="android.permission.READ_NEARBY_STREAMING_POLICY" />
+    <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
+    <uses-permission android:name="android.permission.PACKAGE_VERIFICATION_AGENT" />
+    <uses-permission android:name="android.permission.OBSERVE_ROLE_HOLDERS" />
+    <uses-permission android:name="android.permission.BATTERY_STATS" />
+
+    <!-- Uses API introduced in O (26) -->
+    <uses-sdk android:minSdkVersion="1" android:targetSdkVersion="26"/>
+
+    <application android:testOnly="true" android:debuggable="true">
+        <uses-library android:name="android.test.runner"/>
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+         android:targetPackage="com.android.server.pm.test.service.server"
+         android:label="Package Manager Service Tests"/>
+
+    <key-sets>
+        <key-set android:name="A" >
+            <public-key android:name="keyA"
+                        android:value="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsMpNthdOxud7roPDZMMomOqXgJJdRfIWpkKEqmC61Mv+Nf6QY3TorEwJeghjSmqj7IbBKrtvfQq4E2XJO1HuspmQO4Ng2gvn+r+6EwNfKc9k55d6s+27SR867jKurBbHNtZMG+tjL1yH4r+tNzcuJCsgyAFqLmxFdcxEwzNvREyRpoYc5RDR0mmTwkMCUhJ6CId1EYEKiCEdNzxv+fWPEb21u+/MWpleGCILs8kglRVb2q/WOzAAvGr4FY5plfaE6N+lr7+UschQ+aMi1+uqewo2o0qPFVmZP5hnwj55K4UMzu/NhhDqQQsX4cSGES1KgHo5MTqRqZjN/I7emw5pFQIDAQAB"/>
+        </key-set>
+        <upgrade-key-set android:name="A"/>
+    </key-sets>
+</manifest>
diff --git a/services/tests/PackageManagerServiceTests/server/AndroidTest.xml b/services/tests/PackageManagerServiceTests/server/AndroidTest.xml
new file mode 100644
index 0000000..869d60e
--- /dev/null
+++ b/services/tests/PackageManagerServiceTests/server/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Runs Frameworks Services Tests.">
+    <option name="test-suite-tag" value="apct" />
+    <option name="test-suite-tag" value="apct-instrumentation" />
+
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="install-arg" value="-t" />
+        <option name="test-file-name" value="PackageManagerServiceServerTests.apk" />
+    </target_preparer>
+
+    <option name="test-tag" value="PackageManagerServiceServerTests" />
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.android.server.pm.test.service.server" />
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+        <option name="hidden-api-checks" value="false"/>
+        <option name="exclude-annotation" value="androidx.test.filters.FlakyTest" />
+    </test>
+</configuration>
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256-lineage-2-signers b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256-lineage-2-signers
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256-lineage-2-signers
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256-lineage-2-signers
Binary files differ
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256-lineage-3-signers b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256-lineage-3-signers
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256-lineage-3-signers
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256-lineage-3-signers
Binary files differ
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256.pk8 b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256.pk8
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256.pk8
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256.pk8
Binary files differ
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256.x509.der b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256.x509.der
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256.x509.der
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256.x509.der
Binary files differ
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256_2.pk8 b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256_2.pk8
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256_2.pk8
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256_2.pk8
Binary files differ
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256_2.x509.der b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256_2.x509.der
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256_2.x509.der
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256_2.x509.der
Binary files differ
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256_3.pk8 b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256_3.pk8
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256_3.pk8
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256_3.pk8
Binary files differ
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256_3.x509.der b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256_3.x509.der
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/certs/ec-p256_3.x509.der
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/certs/ec-p256_3.x509.der
Binary files differ
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/README b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/README
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/README
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/README
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-extra-cert-tag.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-extra-cert-tag.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-extra-cert-tag.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-extra-cert-tag.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-invalid-cert-index.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-invalid-cert-index.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-invalid-cert-index.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-invalid-cert-index.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-invalid-cert-key.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-invalid-cert-key.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-invalid-cert-key.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-invalid-cert-key.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-invalid-public-key-cert-key.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-invalid-public-key-cert-key.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-invalid-public-key-cert-key.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-invalid-public-key-cert-key.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-invalid-tag.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-invalid-tag.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-invalid-tag.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-invalid-tag.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-cert-index.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-cert-index.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-cert-index.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-cert-index.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-cert-key.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-cert-key.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-cert-key.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-cert-key.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-cert-tag.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-cert-tag.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-cert-tag.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-cert-tag.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-scheme-version.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-scheme-version.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-scheme-version.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-scheme-version.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-sigs-count.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-sigs-count.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-missing-sigs-count.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-missing-sigs-count.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-previous-cert.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-previous-cert.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer-previous-cert.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer-previous-cert.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/one-signer.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/one-signer.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage-invalid-pastSigs-count.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage-invalid-pastSigs-count.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage-invalid-pastSigs-count.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage-invalid-pastSigs-count.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-pastSigs-cert-tag.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-pastSigs-cert-tag.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-pastSigs-cert-tag.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-pastSigs-cert-tag.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-pastSigs-count.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-pastSigs-count.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-pastSigs-count.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-pastSigs-count.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-scheme-version.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-scheme-version.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-scheme-version.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage-missing-scheme-version.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/three-signers-in-lineage.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/three-signers-in-lineage.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-invalid-certs-flags.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-invalid-certs-flags.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-invalid-certs-flags.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-invalid-certs-flags.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-invalid-pastSigs-cert-index.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-invalid-pastSigs-cert-index.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-invalid-pastSigs-cert-index.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-invalid-pastSigs-cert-index.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-missing-certs-flags.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-missing-certs-flags.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-missing-certs-flags.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-missing-certs-flags.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-missing-pastSigs-cert-index.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-missing-pastSigs-cert-index.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-missing-pastSigs-cert-index.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-missing-pastSigs-cert-index.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-multiple-pastSigs-tags.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-multiple-pastSigs-tags.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-multiple-pastSigs-tags.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-multiple-pastSigs-tags.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-no-caps.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-no-caps.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-no-caps.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-no-caps.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-undefined-pastSigs-index.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-undefined-pastSigs-index.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage-undefined-pastSigs-index.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage-undefined-pastSigs-index.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-in-lineage.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-in-lineage.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-v1v2-missing-cert-tag.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-v1v2-missing-cert-tag.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-v1v2-missing-cert-tag.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-v1v2-missing-cert-tag.xml
diff --git a/services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-v1v2.xml b/services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-v1v2.xml
similarity index 100%
rename from services/tests/servicestests/assets/PackageSignaturesTest/xml/two-signers-v1v2.xml
rename to services/tests/PackageManagerServiceTests/server/assets/PackageSignaturesTest/xml/two-signers-v1v2.xml
diff --git a/services/tests/servicestests/res/raw/PackageParsingTestAppEmptyActionSdkQ.apk b/services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppEmptyActionSdkQ.apk
similarity index 100%
rename from services/tests/servicestests/res/raw/PackageParsingTestAppEmptyActionSdkQ.apk
rename to services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppEmptyActionSdkQ.apk
Binary files differ
diff --git a/services/tests/servicestests/res/raw/PackageParsingTestAppEmptyActionSdkR.apk b/services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppEmptyActionSdkR.apk
similarity index 100%
rename from services/tests/servicestests/res/raw/PackageParsingTestAppEmptyActionSdkR.apk
rename to services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppEmptyActionSdkR.apk
Binary files differ
diff --git a/services/tests/servicestests/res/raw/PackageParsingTestAppEmptyCategorySdkQ.apk b/services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppEmptyCategorySdkQ.apk
similarity index 100%
rename from services/tests/servicestests/res/raw/PackageParsingTestAppEmptyCategorySdkQ.apk
rename to services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppEmptyCategorySdkQ.apk
Binary files differ
diff --git a/services/tests/servicestests/res/raw/PackageParsingTestAppEmptyCategorySdkR.apk b/services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppEmptyCategorySdkR.apk
similarity index 100%
rename from services/tests/servicestests/res/raw/PackageParsingTestAppEmptyCategorySdkR.apk
rename to services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppEmptyCategorySdkR.apk
Binary files differ
diff --git a/services/tests/servicestests/res/raw/PackageParsingTestAppMissingAppSdkQ.apk b/services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppMissingAppSdkQ.apk
similarity index 100%
rename from services/tests/servicestests/res/raw/PackageParsingTestAppMissingAppSdkQ.apk
rename to services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppMissingAppSdkQ.apk
Binary files differ
diff --git a/services/tests/servicestests/res/raw/PackageParsingTestAppMissingAppSdkR.apk b/services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppMissingAppSdkR.apk
similarity index 100%
rename from services/tests/servicestests/res/raw/PackageParsingTestAppMissingAppSdkR.apk
rename to services/tests/PackageManagerServiceTests/server/res/raw/PackageParsingTestAppMissingAppSdkR.apk
Binary files differ
diff --git a/services/tests/servicestests/res/raw/com_android_tzdata.apex b/services/tests/PackageManagerServiceTests/server/res/raw/com_android_tzdata.apex
similarity index 100%
rename from services/tests/servicestests/res/raw/com_android_tzdata.apex
rename to services/tests/PackageManagerServiceTests/server/res/raw/com_android_tzdata.apex
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_cert1 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert1
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_cert1
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert1
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_cert1_cert2 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert1_cert2
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_cert1_cert2
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert1_cert2
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_cert2 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert2
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_cert2
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert2
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_cert3 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert3
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_cert3
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert3
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_cert3_cert4 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert3_cert4
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_cert3_cert4
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert3_cert4
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_cert5 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert5
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_cert5
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert5
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_cert5_rotated_cert6 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert5_rotated_cert6
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_cert5_rotated_cert6
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert5_rotated_cert6
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_cert6 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert6
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_cert6
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_cert6
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app1_unsigned b/services/tests/PackageManagerServiceTests/server/res/raw/install_app1_unsigned
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app1_unsigned
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app1_unsigned
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app2_cert1 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert1
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app2_cert1
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert1
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app2_cert1_cert2 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert1_cert2
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app2_cert1_cert2
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert1_cert2
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app2_cert2 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert2
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app2_cert2
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert2
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app2_cert3 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert3
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app2_cert3
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert3
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app2_cert5_rotated_cert6 b/services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert5_rotated_cert6
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app2_cert5_rotated_cert6
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app2_cert5_rotated_cert6
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_app2_unsigned b/services/tests/PackageManagerServiceTests/server/res/raw/install_app2_unsigned
similarity index 100%
rename from services/tests/servicestests/res/raw/install_app2_unsigned
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_app2_unsigned
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_shared1_cert1 b/services/tests/PackageManagerServiceTests/server/res/raw/install_shared1_cert1
similarity index 100%
rename from services/tests/servicestests/res/raw/install_shared1_cert1
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_shared1_cert1
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_shared1_cert1_cert2 b/services/tests/PackageManagerServiceTests/server/res/raw/install_shared1_cert1_cert2
similarity index 100%
rename from services/tests/servicestests/res/raw/install_shared1_cert1_cert2
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_shared1_cert1_cert2
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_shared1_cert2 b/services/tests/PackageManagerServiceTests/server/res/raw/install_shared1_cert2
similarity index 100%
rename from services/tests/servicestests/res/raw/install_shared1_cert2
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_shared1_cert2
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_shared1_unsigned b/services/tests/PackageManagerServiceTests/server/res/raw/install_shared1_unsigned
similarity index 100%
rename from services/tests/servicestests/res/raw/install_shared1_unsigned
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_shared1_unsigned
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_shared2_cert1 b/services/tests/PackageManagerServiceTests/server/res/raw/install_shared2_cert1
similarity index 100%
rename from services/tests/servicestests/res/raw/install_shared2_cert1
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_shared2_cert1
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_shared2_cert1_cert2 b/services/tests/PackageManagerServiceTests/server/res/raw/install_shared2_cert1_cert2
similarity index 100%
rename from services/tests/servicestests/res/raw/install_shared2_cert1_cert2
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_shared2_cert1_cert2
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_shared2_cert2 b/services/tests/PackageManagerServiceTests/server/res/raw/install_shared2_cert2
similarity index 100%
rename from services/tests/servicestests/res/raw/install_shared2_cert2
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_shared2_cert2
Binary files differ
diff --git a/services/tests/servicestests/res/raw/install_shared2_unsigned b/services/tests/PackageManagerServiceTests/server/res/raw/install_shared2_unsigned
similarity index 100%
rename from services/tests/servicestests/res/raw/install_shared2_unsigned
rename to services/tests/PackageManagerServiceTests/server/res/raw/install_shared2_unsigned
Binary files differ
diff --git a/services/tests/PackageManagerServiceTests/server/res/values/values.xml b/services/tests/PackageManagerServiceTests/server/res/values/values.xml
new file mode 100644
index 0000000..79c6653
--- /dev/null
+++ b/services/tests/PackageManagerServiceTests/server/res/values/values.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="module_1_name" translatable="false">module_1_name</string>
+    <string name="module_2_name" translatable="false">module_2_name</string>
+</resources>
diff --git a/services/tests/servicestests/res/xml/unparseable_metadata1.xml b/services/tests/PackageManagerServiceTests/server/res/xml/unparseable_metadata1.xml
similarity index 100%
rename from services/tests/servicestests/res/xml/unparseable_metadata1.xml
rename to services/tests/PackageManagerServiceTests/server/res/xml/unparseable_metadata1.xml
diff --git a/services/tests/servicestests/res/xml/unparseable_metadata2.xml b/services/tests/PackageManagerServiceTests/server/res/xml/unparseable_metadata2.xml
similarity index 100%
rename from services/tests/servicestests/res/xml/unparseable_metadata2.xml
rename to services/tests/PackageManagerServiceTests/server/res/xml/unparseable_metadata2.xml
diff --git a/services/tests/servicestests/res/xml/well_formed_metadata.xml b/services/tests/PackageManagerServiceTests/server/res/xml/well_formed_metadata.xml
similarity index 100%
rename from services/tests/servicestests/res/xml/well_formed_metadata.xml
rename to services/tests/PackageManagerServiceTests/server/res/xml/well_formed_metadata.xml
diff --git a/services/tests/servicestests/src/com/android/server/pm/AppsFilterImplTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/AppsFilterImplTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/AppsFilterImplTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/AppsFilterImplTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/BundleUtilsTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/BundleUtilsTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/BundleUtilsTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/BundleUtilsTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/CompatibilityModeTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/CompatibilityModeTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/CompatibilityModeTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/CompatibilityModeTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/CrossProfileAppsServiceImplTest.java
similarity index 96%
rename from services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/CrossProfileAppsServiceImplTest.java
index ce322f7..129efc6 100644
--- a/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/CrossProfileAppsServiceImplTest.java
@@ -38,6 +38,7 @@
 import android.content.pm.PackageManagerInternal;
 import android.content.pm.PermissionInfo;
 import android.content.pm.ResolveInfo;
+import android.os.Binder;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.UserHandle;
@@ -47,7 +48,6 @@
 import android.platform.test.annotations.Presubmit;
 import android.util.SparseArray;
 
-import com.android.activitycontext.ActivityContext;
 import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
 import com.android.internal.util.FunctionalUtils.ThrowingSupplier;
 import com.android.server.LocalServices;
@@ -66,7 +66,7 @@
 
 /**
  * Build/Install/Run:
- * atest FrameworksServicesTests:com.android.server.pm.CrossProfileAppsServiceImplTest
+ * atest PackageManagerServiceServerTests:com.android.server.pm.CrossProfileAppsServiceImplTest
  */
 @Presubmit
 @RunWith(MockitoJUnitRunner.class)
@@ -611,34 +611,23 @@
         mTestInjector.setCallingUserId(PROFILE_OF_PRIMARY_USER);
 
         Bundle options = ActivityOptions.makeOpenCrossProfileAppsAnimation().toBundle();
-        IBinder result = ActivityContext.getWithContext(activity -> {
-            try {
-                IBinder targetTask = activity.getActivityToken();
-                mCrossProfileAppsServiceImpl.startActivityAsUser(
-                        mIApplicationThread,
-                        PACKAGE_ONE,
-                        FEATURE_ID,
-                        ACTIVITY_COMPONENT,
-                        UserHandle.of(PRIMARY_USER).getIdentifier(),
-                        true,
-                        targetTask,
-                        options);
-                return targetTask;
-            } catch (Exception re) {
-                return null;
-            }
-        });
-        if (result == null) {
-            throw new Exception();
-        }
-
+        Binder targetTask = new Binder();
+        mCrossProfileAppsServiceImpl.startActivityAsUser(
+                mIApplicationThread,
+                PACKAGE_ONE,
+                FEATURE_ID,
+                ACTIVITY_COMPONENT,
+                UserHandle.of(PRIMARY_USER).getIdentifier(),
+                true,
+                targetTask,
+                options);
         verify(mActivityTaskManagerInternal)
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         eq(PACKAGE_ONE),
                         eq(FEATURE_ID),
                         any(Intent.class),
-                        eq(result),
+                        eq(targetTask),
                         anyInt(),
                         eq(options),
                         eq(PRIMARY_USER));
diff --git a/services/tests/servicestests/src/com/android/server/pm/InstallerTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/InstallerTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/InstallerTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/InstallerTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/KeySetManagerServiceTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/KeySetManagerServiceTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/KeySetManagerServiceTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/KeySetManagerServiceTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/KeySetStrings.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/KeySetStrings.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/KeySetStrings.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/KeySetStrings.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/KeySetUtils.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/KeySetUtils.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/KeySetUtils.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/KeySetUtils.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/ModuleInfoProviderTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/ModuleInfoProviderTest.java
similarity index 98%
rename from services/tests/servicestests/src/com/android/server/pm/ModuleInfoProviderTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/ModuleInfoProviderTest.java
index 9ea7907..ad58507 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ModuleInfoProviderTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/ModuleInfoProviderTest.java
@@ -24,7 +24,7 @@
 import android.platform.test.annotations.Presubmit;
 import android.test.InstrumentationTestCase;
 
-import com.android.frameworks.servicestests.R;
+import com.android.server.pm.test.service.server.R;
 
 import org.mockito.Mock;
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageInstallerSessionTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageInstallerSessionTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/PackageInstallerSessionTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageInstallerSessionTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageManagerServiceTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageManagerServiceTest.java
similarity index 99%
rename from services/tests/servicestests/src/com/android/server/pm/PackageManagerServiceTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageManagerServiceTest.java
index 1877d45..b82ffb4 100644
--- a/services/tests/servicestests/src/com/android/server/pm/PackageManagerServiceTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageManagerServiceTest.java
@@ -66,8 +66,6 @@
 import java.util.regex.Pattern;
 
 // atest PackageManagerServiceTest
-// runtest -c com.android.server.pm.PackageManagerServiceTest frameworks-services
-// bit FrameworksServicesTests:com.android.server.pm.PackageManagerServiceTest
 @Postsubmit
 @RunWith(AndroidJUnit4.class)
 public class PackageManagerServiceTest {
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageManagerSettingsTests.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageManagerSettingsTests.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageManagerTests.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageManagerTests.java
similarity index 99%
rename from services/tests/servicestests/src/com/android/server/pm/PackageManagerTests.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageManagerTests.java
index 869ac88..d288d41 100644
--- a/services/tests/servicestests/src/com/android/server/pm/PackageManagerTests.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageManagerTests.java
@@ -69,7 +69,7 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.filters.Suppress;
 
-import com.android.frameworks.servicestests.R;
+import com.android.server.pm.test.service.server.R;
 import com.android.internal.content.InstallLocationUtils;
 import com.android.server.pm.pkg.parsing.ParsingPackage;
 import com.android.server.pm.pkg.parsing.ParsingPackageUtils;
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageParserTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageParserTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageSignaturesTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageSignaturesTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/PackageSignaturesTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageSignaturesTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageUserStateTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageUserStateTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/PackageUserStateTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageUserStateTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageVerificationStateTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageVerificationStateTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/PackageVerificationStateTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PackageVerificationStateTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/ParallelPackageParserTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/ParallelPackageParserTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/ParallelPackageParserTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/ParallelPackageParserTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/PreferredComponentTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/PreferredComponentTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/PreferredComponentTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/PreferredComponentTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/RestrictionsSetTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/RestrictionsSetTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/RestrictionsSetTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/RestrictionsSetTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/ScanRequestBuilder.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/ScanRequestBuilder.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/ScanRequestBuilder.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/ScanRequestBuilder.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/ScanTests.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/ScanTests.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/ScanTests.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/ScanTests.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserDataPreparerTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/UserDataPreparerTest.java
similarity index 96%
rename from services/tests/servicestests/src/com/android/server/pm/UserDataPreparerTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/UserDataPreparerTest.java
index c489cf0..2d09ef7 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserDataPreparerTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/UserDataPreparerTest.java
@@ -46,15 +46,7 @@
 import java.util.Arrays;
 import java.util.Collections;
 
-/**
- * <p>Run with:<pre>
- * m FrameworksServicesTests &&
- * adb install \
- * -r out/target/product/hammerhead/data/app/FrameworksServicesTests/FrameworksServicesTests.apk &&
- * adb shell am instrument -e class com.android.server.pm.UserDataPreparerTest \
- * -w com.android.frameworks.servicestests/androidx.test.runner.AndroidJUnitRunner
- * </pre>
- */
+// atest PackageManagerServiceTest:com.android.server.pm.UserDataPreparerTest
 @RunWith(AndroidJUnit4.class)
 @Presubmit
 @SmallTest
diff --git a/services/tests/servicestests/src/com/android/server/pm/WatchedIntentHandlingTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/WatchedIntentHandlingTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/WatchedIntentHandlingTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/WatchedIntentHandlingTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/PackageParserLegacyCoreTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/PackageParserLegacyCoreTest.java
similarity index 99%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/PackageParserLegacyCoreTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/PackageParserLegacyCoreTest.java
index 07cca0c..c6a6340 100644
--- a/services/tests/servicestests/src/com/android/server/pm/parsing/PackageParserLegacyCoreTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/PackageParserLegacyCoreTest.java
@@ -42,7 +42,7 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.frameworks.servicestests.R;
+import com.android.server.pm.test.service.server.R;
 import com.android.internal.util.ArrayUtils;
 import com.android.server.pm.PackageManagerException;
 import com.android.server.pm.parsing.pkg.AndroidPackage;
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/PackageParsingDeferErrorTest.kt b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/PackageParsingDeferErrorTest.kt
similarity index 97%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/PackageParsingDeferErrorTest.kt
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/PackageParsingDeferErrorTest.kt
index bb094ba..d8cc5aa 100644
--- a/services/tests/servicestests/src/com/android/server/pm/parsing/PackageParsingDeferErrorTest.kt
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/PackageParsingDeferErrorTest.kt
@@ -23,7 +23,8 @@
 import android.content.pm.parsing.result.ParseResult
 import android.platform.test.annotations.Presubmit
 import androidx.test.InstrumentationRegistry
-import com.android.frameworks.servicestests.R
+import com.android.server.pm.parsing.pkg.ParsedPackage
+import com.android.server.pm.test.service.server.R
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
 import org.junit.Rule
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/SystemPartitionParseTest.kt b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/SystemPartitionParseTest.kt
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/SystemPartitionParseTest.kt
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/SystemPartitionParseTest.kt
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidHidlUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/AndroidHidlUpdaterTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidHidlUpdaterTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/AndroidHidlUpdaterTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/AndroidNetIpSecIkeUpdaterTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdaterTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/AndroidNetIpSecIkeUpdaterTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidTestBaseUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/AndroidTestBaseUpdaterTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidTestBaseUpdaterTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/AndroidTestBaseUpdaterTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidTestRunnerSplitUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/AndroidTestRunnerSplitUpdaterTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/AndroidTestRunnerSplitUpdaterTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/AndroidTestRunnerSplitUpdaterTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/ApexSharedLibraryUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/ApexSharedLibraryUpdaterTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/ApexSharedLibraryUpdaterTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/ApexSharedLibraryUpdaterTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/ComGoogleAndroidMapsUpdaterTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdaterTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/ComGoogleAndroidMapsUpdaterTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/OptionalClassRunner.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/OptionalClassRunner.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/OptionalClassRunner.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/OptionalClassRunner.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/OrgApacheHttpLegacyUpdaterTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdaterTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/OrgApacheHttpLegacyUpdaterTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageBackwardCompatibilityTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/PackageBackwardCompatibilityTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageBackwardCompatibilityTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/PackageBackwardCompatibilityTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageSharedLibraryUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/PackageSharedLibraryUpdaterTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageSharedLibraryUpdaterTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/PackageSharedLibraryUpdaterTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/RemoveUnnecessaryAndroidTestBaseLibraryTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/RemoveUnnecessaryAndroidTestBaseLibraryTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/RemoveUnnecessaryAndroidTestBaseLibraryTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/RemoveUnnecessaryAndroidTestBaseLibraryTest.java
diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/library/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/pm/parsing/library/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/parsing/library/RemoveUnnecessaryOrgApacheHttpLegacyLibraryTest.java
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/utils/OWNERS b/services/tests/PackageManagerServiceTests/server/src/com/android/server/utils/OWNERS
new file mode 100644
index 0000000..1853220
--- /dev/null
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/utils/OWNERS
@@ -0,0 +1,4 @@
+per-file WatchableTester.java = file:/services/core/java/com/android/server/pm/OWNERS
+per-file WatchableTester.java = shombert@google.com
+per-file WatcherTest.java = file:/services/core/java/com/android/server/pm/OWNERS
+per-file WatcherTest.java = shombert@google.com
diff --git a/services/tests/servicestests/src/com/android/server/utils/WatchableTester.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/utils/WatchableTester.java
similarity index 100%
rename from services/tests/servicestests/src/com/android/server/utils/WatchableTester.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/utils/WatchableTester.java
diff --git a/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/utils/WatcherTest.java
similarity index 99%
rename from services/tests/servicestests/src/com/android/server/utils/WatcherTest.java
rename to services/tests/PackageManagerServiceTests/server/src/com/android/server/utils/WatcherTest.java
index 37c95f7..74d491d 100644
--- a/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/utils/WatcherTest.java
@@ -44,7 +44,7 @@
  * {@link WatchedSparseBooleanArray}.
  *
  * Build/Install/Run:
- *  atest FrameworksServicesTests:WatcherTest
+ *  atest PackageManagerServiceTest:WatcherTest
  */
 @SmallTest
 public class WatcherTest {
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index 16df5de..d622a80 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -55,7 +55,6 @@
         "hamcrest-library",
         "servicestests-utils",
         "service-jobscheduler",
-        "service-permission.impl",
         // TODO: remove once Android migrates to JUnit 4.12,
         // which provides assertThrows
         "testng",
@@ -107,17 +106,12 @@
     ],
 
     java_resources: [
-        ":PackageParserTestApp1",
-        ":PackageParserTestApp2",
-        ":PackageParserTestApp3",
-        ":PackageParserTestApp4",
-        ":PackageParserTestApp5",
-        ":apex.test",
-        ":test.rebootless_apex_v1",
-        ":test.rebootless_apex_v2",
         ":com.android.apex.cts.shim.v1_prebuilt",
         ":com.android.apex.cts.shim.v2_different_certificate_prebuilt",
         ":com.android.apex.cts.shim.v2_unsigned_apk_container_prebuilt",
+        ":apex.test",
+        ":test.rebootless_apex_v1",
+        ":test.rebootless_apex_v2",
     ],
     resource_zips: [":FrameworksServicesTests_apks_as_resources"],
 }
@@ -127,6 +121,7 @@
     srcs: [
         "src/com/android/server/pm/PackageSettingBuilder.java",
         "src/com/android/server/am/DeviceConfigSession.java",
+        "src/com/android/server/pm/parsing/TestPackageParser2.kt",
     ],
     static_libs: [
         "services.core",
@@ -135,6 +130,33 @@
 }
 
 java_library {
+    name: "servicestests-dpm-utils",
+    srcs: [
+        "src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java",
+        "src/com/android/server/devicepolicy/DevicePolicyManagerTestable.java",
+        "src/com/android/server/devicepolicy/DpmMockContext.java",
+        "src/com/android/server/devicepolicy/DpmTestBase.java",
+        "src/com/android/server/devicepolicy/DpmTestUtils.java",
+        "src/com/android/server/devicepolicy/DummyDeviceAdmins.java",
+        "src/com/android/server/devicepolicy/MockSystemServices.java",
+        "src/com/android/server/devicepolicy/MockUtils.java",
+    ],
+    libs: [
+        "android.test.mock",
+        "android.test.base",
+        "mockito-target-minus-junit4",
+    ],
+    static_libs: [
+        "frameworks-base-testutils",
+        "androidx.test.core",
+        "androidx.test.ext.truth",
+        "androidx.test.rules",
+        "services.core",
+        "services.devicepolicy",
+    ],
+}
+
+java_library {
     name: "servicestests-utils",
     srcs: [
         "utils/**/*.java",
@@ -177,41 +199,8 @@
 java_genrule {
     name: "FrameworksServicesTests_apks_as_resources",
     srcs: [
-        ":FrameworksServicesTests_install",
-        ":FrameworksServicesTests_install_bad_dex",
-        ":FrameworksServicesTests_install_complete_package_info",
-        ":FrameworksServicesTests_install_decl_perm",
-        ":FrameworksServicesTests_install_intent_filters",
-        ":FrameworksServicesTests_install_loc_auto",
-        ":FrameworksServicesTests_install_loc_internal",
-        ":FrameworksServicesTests_install_loc_sdcard",
-        ":FrameworksServicesTests_install_loc_unspecified",
         ":FrameworksServicesTests_install_split_base",
         ":FrameworksServicesTests_install_split_feature_a",
-        ":FrameworksServicesTests_install_use_perm_good",
-        ":FrameworksServicesTests_install_uses_feature",
-        ":FrameworksServicesTests_install_uses_sdk_0",
-        ":FrameworksServicesTests_install_uses_sdk_q0",
-        ":FrameworksServicesTests_install_uses_sdk_q0_r0",
-        ":FrameworksServicesTests_install_uses_sdk_r0",
-        ":FrameworksServicesTests_install_uses_sdk_r5",
-        ":FrameworksServicesTests_install_uses_sdk_r_none",
-        ":FrameworksServicesTests_install_uses_sdk_r0_s0",
-        ":FrameworksServicesTests_install_uses_sdk_r0_s5",
-        ":FrameworksServicesTests_keyset_permdef_sa_unone",
-        ":FrameworksServicesTests_keyset_permuse_sa_ua_ub",
-        ":FrameworksServicesTests_keyset_permuse_sb_ua_ub",
-        ":FrameworksServicesTests_keyset_sa_ua",
-        ":FrameworksServicesTests_keyset_sa_ua_ub",
-        ":FrameworksServicesTests_keyset_sa_uab",
-        ":FrameworksServicesTests_keyset_sa_ub",
-        ":FrameworksServicesTests_keyset_sa_unone",
-        ":FrameworksServicesTests_keyset_sab_ua",
-        ":FrameworksServicesTests_keyset_sau_ub",
-        ":FrameworksServicesTests_keyset_sb_ua",
-        ":FrameworksServicesTests_keyset_sb_ub",
-        ":FrameworksServicesTests_keyset_splat_api",
-        ":FrameworksServicesTests_keyset_splata_api",
     ],
     out: ["FrameworkServicesTests_apks_as_resources.res.zip"],
     tools: ["soong_zip"],
diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml
index 0afb182..6c03cb9 100644
--- a/services/tests/servicestests/AndroidManifest.xml
+++ b/services/tests/servicestests/AndroidManifest.xml
@@ -287,11 +287,4 @@
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
          android:targetPackage="com.android.frameworks.servicestests"
          android:label="Frameworks Services Tests"/>
-    <key-sets>
-        <key-set android:name="A" >
-            <public-key android:name="keyA"
-                android:value="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsMpNthdOxud7roPDZMMomOqXgJJdRfIWpkKEqmC61Mv+Nf6QY3TorEwJeghjSmqj7IbBKrtvfQq4E2XJO1HuspmQO4Ng2gvn+r+6EwNfKc9k55d6s+27SR867jKurBbHNtZMG+tjL1yH4r+tNzcuJCsgyAFqLmxFdcxEwzNvREyRpoYc5RDR0mmTwkMCUhJ6CId1EYEKiCEdNzxv+fWPEb21u+/MWpleGCILs8kglRVb2q/WOzAAvGr4FY5plfaE6N+lr7+UschQ+aMi1+uqewo2o0qPFVmZP5hnwj55K4UMzu/NhhDqQQsX4cSGES1KgHo5MTqRqZjN/I7emw5pFQIDAQAB"/>
-        </key-set>
-        <upgrade-key-set android:name="A"/>
-    </key-sets>
 </manifest>
diff --git a/services/tests/servicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java
index bccd8a0b..bc8670f 100644
--- a/services/tests/servicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java
@@ -37,6 +37,7 @@
 import android.content.pm.PackageManager;
 import android.platform.test.annotations.Presubmit;
 
+import androidx.test.filters.FlakyTest;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.server.backup.internal.LifecycleOperationStorage;
@@ -172,6 +173,7 @@
     }
 
     @Test
+    @FlakyTest
     public void testAgentDisconnected_cancelsCurrentOperations() throws Exception {
         when(mOperationStorage.operationTokensForPackage(eq("com.android.foo"))).thenReturn(
                 ImmutableSet.of(123, 456, 789)
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java
index c771998..9a73dd3a 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceTestable.java
@@ -35,6 +35,7 @@
 import android.net.IIpConnectivityMetrics;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Environment;
 import android.os.Looper;
 import android.os.PowerManagerInternal;
 import android.os.UserHandle;
@@ -57,6 +58,7 @@
 import com.android.server.pm.UserManagerInternal;
 import com.android.server.wm.ActivityTaskManagerInternal;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.Map;
 
@@ -443,7 +445,7 @@
         @Override
         public TransferOwnershipMetadataManager newTransferOwnershipMetadataManager() {
             return new TransferOwnershipMetadataManager(
-                    new TransferOwnershipMetadataManagerTest.MockInjector());
+                    new TransferOwnershipMetadataManagerMockInjector());
         }
 
         @Override
@@ -496,4 +498,12 @@
             return context;
         }
     }
+
+    static class TransferOwnershipMetadataManagerMockInjector extends
+            TransferOwnershipMetadataManager.Injector {
+        @Override
+        public File getOwnerTransferMetadataDir() {
+            return Environment.getExternalStorageDirectory();
+        }
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index 388170b..7e50332 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -132,7 +132,6 @@
 import android.os.Process;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.platform.test.annotations.FlakyTest;
 import android.platform.test.annotations.Presubmit;
 import android.provider.Settings;
 import android.security.KeyChain;
@@ -144,6 +143,7 @@
 import android.util.Log;
 import android.util.Pair;
 
+import androidx.test.filters.FlakyTest;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.R;
@@ -4782,6 +4782,7 @@
     }
 
     @Test
+    @FlakyTest(bugId = 260145949)
     public void testLockTaskPolicyForProfileOwner() throws Exception {
         mockPolicyExemptApps();
         mockVendorPolicyExemptApps();
@@ -4817,6 +4818,7 @@
     }
 
     @Test
+    @FlakyTest(bugId = 260145949)
     public void testLockTaskFeatures_IllegalArgumentException() throws Exception {
         // Setup a device owner.
         mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
@@ -7812,6 +7814,7 @@
     }
 
     @Test
+    @FlakyTest(bugId = 260145949)
     public void testSetLockTaskFeatures_financeDo_validLockTaskFeatures_lockTaskFeaturesSet()
             throws Exception {
         int validLockTaskFeatures = LOCK_TASK_FEATURE_SYSTEM_INFO | LOCK_TASK_FEATURE_KEYGUARD
@@ -7827,6 +7830,7 @@
     }
 
     @Test
+    @FlakyTest(bugId = 260145949)
     public void testSetLockTaskFeatures_financeDo_invalidLockTaskFeatures_throwsException()
             throws Exception {
         int invalidLockTaskFeatures = LOCK_TASK_FEATURE_NONE | LOCK_TASK_FEATURE_OVERVIEW
@@ -7843,6 +7847,7 @@
     }
 
     @Test
+    @FlakyTest(bugId = 260145949)
     public void testIsUninstallBlocked_financeDo_success() throws Exception {
         String packageName = "com.android.foo.package";
         setDeviceOwner();
@@ -7943,6 +7948,7 @@
     }
 
     @Test
+    @FlakyTest(bugId = 260145949)
     public void testSetLockTaskPackages_financeDo_success() throws Exception {
         String[] packages = {"com.android.foo.package"};
         mockEmptyPolicyExemptApps();
diff --git a/services/tests/servicestests/src/com/android/server/utils/OWNERS b/services/tests/servicestests/src/com/android/server/utils/OWNERS
index 1853220..5e24828 100644
--- a/services/tests/servicestests/src/com/android/server/utils/OWNERS
+++ b/services/tests/servicestests/src/com/android/server/utils/OWNERS
@@ -1,4 +1,2 @@
-per-file WatchableTester.java = file:/services/core/java/com/android/server/pm/OWNERS
-per-file WatchableTester.java = shombert@google.com
-per-file WatcherTest.java = file:/services/core/java/com/android/server/pm/OWNERS
-per-file WatcherTest.java = shombert@google.com
+per-file EventLoggerTest.java = file:/platform/frameworks/av:/media/janitors/media_solutions_OWNERS
+per-file EventLoggerTest.java = jmtrivi@google.com