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

Commit 711941c6 authored by Nicolas Geoffray's avatar Nicolas Geoffray Committed by Gerrit Code Review
Browse files

Merge "Attach SharedLibraryInfo to a Package."

parents 78d2038c 103454f0
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -6317,6 +6317,7 @@ public class PackageParser {
        public ArrayList<String> usesOptionalLibraries = null;
        @UnsupportedAppUsage
        public String[] usesLibraryFiles = null;
        public ArrayList<SharedLibraryInfo> usesLibraryInfos = null;

        public ArrayList<ActivityIntentInfo> preferredActivityFilters = null;

@@ -6846,6 +6847,8 @@ public class PackageParser {
            internStringArrayList(usesOptionalLibraries);
            usesLibraryFiles = dest.readStringArray();

            usesLibraryInfos = dest.createTypedArrayList(SharedLibraryInfo.CREATOR);

            final int libCount = dest.readInt();
            if (libCount > 0) {
                usesStaticLibraries = new ArrayList<>(libCount);
@@ -6996,6 +6999,7 @@ public class PackageParser {
            dest.writeStringList(usesLibraries);
            dest.writeStringList(usesOptionalLibraries);
            dest.writeStringArray(usesLibraryFiles);
            dest.writeTypedList(usesLibraryInfos);

            if (ArrayUtils.isEmpty(usesStaticLibraries)) {
                dest.writeInt(-1);
@@ -7456,6 +7460,10 @@ public class PackageParser {
                && p.usesLibraryFiles != null) {
            return true;
        }
        if ((flags & PackageManager.GET_SHARED_LIBRARY_FILES) != 0
                && p.usesLibraryInfos != null) {
            return true;
        }
        if (p.staticSharedLibName != null) {
            return true;
        }
+34 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.content.pm;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;

@@ -69,6 +70,8 @@ public final class SharedLibraryInfo implements Parcelable {
     */
    public static final int VERSION_UNDEFINED = -1;

    private final String mPath;
    private final String mPackageName;
    private final String mName;

    private final long mVersion;
@@ -87,8 +90,10 @@ public final class SharedLibraryInfo implements Parcelable {
     *
     * @hide
     */
    public SharedLibraryInfo(String name, long version, int type,
    public SharedLibraryInfo(String path, String packageName, String name, long version, int type,
            VersionedPackage declaringPackage, List<VersionedPackage> dependentPackages) {
        mPath = path;
        mPackageName = packageName;
        mName = name;
        mVersion = version;
        mType = type;
@@ -97,8 +102,8 @@ public final class SharedLibraryInfo implements Parcelable {
    }

    private SharedLibraryInfo(Parcel parcel) {
        this(parcel.readString(), parcel.readLong(), parcel.readInt(),
                parcel.readParcelable(null), parcel.readArrayList(null));
        this(parcel.readString(), parcel.readString(), parcel.readString(), parcel.readLong(),
                parcel.readInt(), parcel.readParcelable(null), parcel.readArrayList(null));
    }

    /**
@@ -120,6 +125,30 @@ public final class SharedLibraryInfo implements Parcelable {
        return mName;
    }

    /**
     * If the shared library is a jar file, returns the path of that jar. Null otherwise.
     * Only libraries with TYPE_BUILTIN are in jar files.
     *
     * @return The path.
     *
     * @hide
     */
    public @Nullable String getPath() {
        return mPath;
    }

    /**
     * If the shared library is an apk, returns the package name. Null otherwise.
     * Only libraries with TYPE_DYNAMIC or TYPE_STATIC are in apks.
     *
     * @return The package name.
     *
     * @hide
     */
    public @Nullable String getPackageName() {
        return mPackageName;
    }

    /**
     * @deprecated Use {@link #getLongVersion()} instead.
     */
@@ -196,6 +225,8 @@ public final class SharedLibraryInfo implements Parcelable {

    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeString(mPath);
        parcel.writeString(mPackageName);
        parcel.writeString(mName);
        parcel.writeLong(mVersion);
        parcel.writeInt(mType);
+120 −118

File changed.

Preview size limit exceeded, changes collapsed.

+4 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.pm.InstrumentationInfo;
import android.content.pm.PackageParser;
import android.content.pm.ProviderInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.Signature;
import android.os.Bundle;
import android.os.Parcel;
@@ -487,6 +488,9 @@ public class PackageParserTest {

        pkg.usesLibraryFiles = new String[] { "foo13"};

        pkg.usesLibraryInfos = new ArrayList<>();
        pkg.usesLibraryInfos.add(new SharedLibraryInfo(null, null, null, 0L, 0, null, null));

        pkg.mOriginalPackages = new ArrayList<>();
        pkg.mOriginalPackages.add("foo14");