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

Commit 7b328130 authored by Bryce Lee's avatar Bryce Lee Committed by Android (Google) Code Review
Browse files

Merge changes I0f51e8ba,I7d44b2ca,I8720c199,I7edfec1b into main

* changes:
  Transition to Glanceable Hub on dream exit.
  Dream Wake Redirection Introduction.
  Improve DreamService testability.
  Add PackageItemInfo Attribute extraction to PackageManager.
parents e2577bc6 50442834
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ import android.content.pm.parsing.ApkLiteParseUtils;
import android.content.res.ApkAssets;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -118,9 +119,11 @@ import android.system.StructStat;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.AttributeSet;
import android.util.LauncherIcons;
import android.util.Log;
import android.util.Slog;
import android.util.Xml;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.Immutable;
@@ -132,6 +135,9 @@ import dalvik.system.VMRuntime;

import libcore.util.EmptyArray;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -4090,4 +4096,38 @@ public class ApplicationPackageManager extends PackageManager {
            }
        }
    }

    @Override
    public TypedArray extractPackageItemInfoAttributes(PackageItemInfo info, String name,
            String rootTag, int[] attributes) {
        if (info == null || info.metaData == null) {
            return null;
        }

        try (XmlResourceParser parser = info.loadXmlMetaData(this, name)) {
            if (parser == null) {
                Log.w(TAG, "No " + name + " metadata");
                return null;
            }

            final AttributeSet attrs = Xml.asAttributeSet(parser);
            while (true) {
                final int type = parser.next();
                if (type == XmlPullParser.END_DOCUMENT || type == XmlPullParser.START_TAG) {
                    break;
                }
            }

            if (!TextUtils.equals(parser.getName(), rootTag)) {
                Log.w(TAG, "Metadata does not start with " + name + " tag");
                return null;
            }

            return getResourcesForApplication(info.getApplicationInfo())
                    .obtainAttributes(attrs, attributes);
        } catch (PackageManager.NameNotFoundException | IOException | XmlPullParserException e) {
            Log.e(TAG, "Error parsing: " + info.packageName, e);
            return null;
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -2700,7 +2700,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
    /**
     * @hide
     */
    @Override protected ApplicationInfo getApplicationInfo() {
    @Override public ApplicationInfo getApplicationInfo() {
        return this;
    }

+1 −1
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ public class ComponentInfo extends PackageItemInfo {
    /**
     * @hide
     */
    @Override protected ApplicationInfo getApplicationInfo() {
    @Override public ApplicationInfo getApplicationInfo() {
        return applicationInfo;
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -511,7 +511,7 @@ public class PackageItemInfo {
     *
     * @hide
     */
    protected ApplicationInfo getApplicationInfo() {
    public ApplicationInfo getApplicationInfo() {
        return null;
    }

+14 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import android.content.pm.dex.ArtManager;
import android.content.pm.verify.domain.DomainVerificationManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.Rect;
import android.graphics.drawable.AdaptiveIconDrawable;
@@ -11743,4 +11744,17 @@ public abstract class PackageManager {
        throw new UnsupportedOperationException(
                "parseAndroidManifest not implemented in subclass");
    }

    /**
     * @param info    The {@link ServiceInfo} to pull the attributes from.
     * @param name    The name of the Xml metadata where the attributes are stored.
     * @param rootTag The root tag of the attributes.
     * @return A {@link TypedArray} of attributes if successful, {@code null} otherwise.
     * @hide
     */
    public TypedArray extractPackageItemInfoAttributes(PackageItemInfo info, String name,
            String rootTag, int[] attributes) {
        throw new UnsupportedOperationException(
                "parseServiceMetadata not implemented in subclass");
    }
}
Loading