diff options
author | Annie Meng <anniemeng@google.com> | 2019-01-14 23:43:16 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-01-14 23:43:16 +0000 |
commit | ca1b5b9f9a9d85b92135e273d4741b97435a250f (patch) | |
tree | 1a37e85efa8f18aac5a4d2794bfb35cd0cc4960c /services/robotests/src | |
parent | dbad904b0229a4df8f0ae43a0e62df0fa5ddee16 (diff) | |
parent | 99c350da2c2fea1ff0767d86a025dedce169fd15 (diff) |
Merge "[Multi-user] Convert key-value flow to use user id"
Diffstat (limited to 'services/robotests/src')
2 files changed, 77 insertions, 1 deletions
diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowAppBackupUtils.java b/services/robotests/src/com/android/server/testing/shadows/ShadowAppBackupUtils.java index 5fffb149fd96..aefc871d2639 100644 --- a/services/robotests/src/com/android/server/testing/shadows/ShadowAppBackupUtils.java +++ b/services/robotests/src/com/android/server/testing/shadows/ShadowAppBackupUtils.java @@ -54,7 +54,10 @@ public class ShadowAppBackupUtils { @Implementation protected static boolean appIsRunningAndEligibleForBackupWithTransport( - @Nullable TransportClient transportClient, String packageName, PackageManager pm) { + @Nullable TransportClient transportClient, + String packageName, + PackageManager pm, + int userId) { return sAppsRunningAndEligibleForBackupWithTransport.contains(packageName); } diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowApplicationPackageManager.java b/services/robotests/src/com/android/server/testing/shadows/ShadowApplicationPackageManager.java new file mode 100644 index 000000000000..dc322094add8 --- /dev/null +++ b/services/robotests/src/com/android/server/testing/shadows/ShadowApplicationPackageManager.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2019 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. + */ + +package com.android.server.testing.shadows; + +import static android.content.pm.PackageManager.NameNotFoundException; + +import android.app.ApplicationPackageManager; +import android.content.pm.PackageInfo; +import android.util.ArrayMap; + +import org.robolectric.annotation.Implements; +import org.robolectric.annotation.Resetter; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Extends {@link org.robolectric.shadows.ShadowApplicationPackageManager} to return the correct + * package in user-specific invocations. + */ +@Implements(value = ApplicationPackageManager.class) +public class ShadowApplicationPackageManager + extends org.robolectric.shadows.ShadowApplicationPackageManager { + private static final Map<String, PackageInfo> sPackageInfos = new ArrayMap<>(); + private static final List<PackageInfo> sInstalledPackages = new ArrayList<>(); + + /** + * Registers the package {@code packageName} to be returned when invoking {@link + * ApplicationPackageManager#getPackageInfoAsUser(String, int, int)} and {@link + * ApplicationPackageManager#getInstalledPackagesAsUser(int, int)}. + */ + public static void addInstalledPackage(String packageName, PackageInfo packageInfo) { + sPackageInfos.put(packageName, packageInfo); + sInstalledPackages.add(packageInfo); + } + + @Override + protected PackageInfo getPackageInfoAsUser(String packageName, int flags, int userId) + throws NameNotFoundException { + if (!sPackageInfos.containsKey(packageName)) { + throw new NameNotFoundException(packageName); + } + return sPackageInfos.get(packageName); + } + + @Override + protected List<PackageInfo> getInstalledPackagesAsUser(int flags, int userId) { + return sInstalledPackages; + } + + /** Clear package state. */ + @Resetter + public static void reset() { + sPackageInfos.clear(); + sInstalledPackages.clear(); + org.robolectric.shadows.ShadowApplicationPackageManager.reset(); + } +} |