diff options
author | Annie Meng <anniemeng@google.com> | 2019-01-12 16:48:00 +0000 |
---|---|---|
committer | Annie Meng <anniemeng@google.com> | 2019-01-14 18:05:10 +0000 |
commit | 99c350da2c2fea1ff0767d86a025dedce169fd15 (patch) | |
tree | d21ed7e8381b4bfb27f3991c325573740996883d /services/robotests/src | |
parent | 3596cfa9bcc7a0a2c7c89a9cd212815eeb456112 (diff) |
[Multi-user] Convert key-value flow to use user id
Change paths that key-value backup/restore flow goes through to use
user id.
Bug: 121198605
Bug: 121198606
Test: 1) atest RunBackupFrameworksServicesRoboTests
2) atest $(find \
frameworks/base/services/tests/servicestests/src/com/android/server/backup \
-name '*Test.java')
3) adb shell bmgr backupnow [kv package]
Change-Id: Ie192391561f8e03f623c4d86914b3787ff2c0f88
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(); + } +} |