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

Commit 50d173de authored by Will Burr's avatar Will Burr
Browse files

Dropbox report: append SdkSandbox-Library tags

For SDK sandbox dropbox reports, append the SDK libraries that are
depended by the client application.

Fixes: 239937059
Test: atest SdkSandboxMetricsHostTest
Test: (manual) adb shell dumpsys dropbox
Change-Id: I3c89705ef51dc55c9f8b86d7e7dea53c6b532bcd
parent 36e1d426
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -258,8 +258,10 @@ import android.content.pm.ProviderInfo;
import android.content.pm.ProviderInfoList;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.TestUtilityService;
import android.content.pm.UserInfo;
import android.content.pm.VersionedPackage;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -9042,9 +9044,11 @@ public class ActivityManagerService extends IActivityManager.Stub
            if (process.isSdkSandbox) {
                final String clientPackage = process.sdkSandboxClientAppPackage;
                try {
                    final PackageInfo pi = pm.getPackageInfo(clientPackage, 0, callingUserId);
                    final PackageInfo pi = pm.getPackageInfo(clientPackage,
                            PackageManager.GET_SHARED_LIBRARY_FILES, callingUserId);
                    if (pi != null) {
                        appendSdkSandboxClientPackageHeader(sb, pi);
                        appendSdkSandboxLibraryHeaders(sb, pi);
                    } else {
                        Slog.e(TAG,
                                "PackageInfo is null for SDK sandbox client: " + clientPackage);
@@ -9069,6 +9073,23 @@ public class ActivityManagerService extends IActivityManager.Stub
        sb.append("\n");
    }
    private void appendSdkSandboxLibraryHeaders(StringBuilder sb,
            PackageInfo clientPackageInfo) {
        final ApplicationInfo info = clientPackageInfo.applicationInfo;
        final List<SharedLibraryInfo> sharedLibraries = info.getSharedLibraryInfos();
        for (int j = 0, size = sharedLibraries.size(); j < size; j++) {
            final SharedLibraryInfo sharedLibrary = sharedLibraries.get(j);
            if (!sharedLibrary.isSdk()) {
                continue;
            }
            sb.append("SdkSandbox-Library: ").append(sharedLibrary.getPackageName());
            final VersionedPackage versionedPackage = sharedLibrary.getDeclaringPackage();
            sb.append(" v").append(versionedPackage.getLongVersionCode());
            sb.append("\n");
        }
    }
    private static String processClass(ProcessRecord process) {
        if (process == null || process.getPid() == MY_PID) {
            return "system_server";