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

Commit cd2d8e20 authored by Anton Hansson's avatar Anton Hansson
Browse files

Make aapt2 dump badging print overlay info

This adds the contents of the manifest <overlay> tag to the
output of aapt2 dump badging.

Sample output:
  overlay: targetPackage='android' priority='1' isStatic='false'

Bug: 119938467
Test: aapt2 dump badging \
  $ANDROID_PRODUCT_OUT/vendor/overlay/framework-res__auto_generated_rro.apk
Change-Id: Ie9d904e6206ff8cf092744e630ee6f496672673c
parent 754fbf92
Loading
Loading
Loading
Loading
+47 −2
Original line number Diff line number Diff line
@@ -43,8 +43,10 @@ enum {
  PERMISSION_ATTR = 0x01010006,
  EXPORTED_ATTR = 0x01010010,
  GRANT_URI_PERMISSIONS_ATTR = 0x0101001b,
  PRIORITY_ATTR = 0x0101001c,
  RESOURCE_ATTR = 0x01010025,
  DEBUGGABLE_ATTR = 0x0101000f,
  TARGET_PACKAGE_ATTR = 0x01010021,
  VALUE_ATTR = 0x01010024,
  VERSION_CODE_ATTR = 0x0101021b,
  VERSION_NAME_ATTR = 0x0101021c,
@@ -77,8 +79,11 @@ enum {
  ISGAME_ATTR = 0x10103f4,
  VERSION_ATTR = 0x01010519,
  CERT_DIGEST_ATTR = 0x01010548,
  REQUIRED_FEATURE_ATTR = 0x1010557,
  REQUIRED_NOT_FEATURE_ATTR = 0x1010558,
  REQUIRED_FEATURE_ATTR = 0x01010557,
  REQUIRED_NOT_FEATURE_ATTR = 0x01010558,
  IS_STATIC_ATTR = 0x0101055a,
  REQUIRED_SYSTEM_PROPERTY_NAME_ATTR = 0x01010565,
  REQUIRED_SYSTEM_PROPERTY_VALUE_ATTR = 0x01010566,
  COMPILE_SDK_VERSION_ATTR = 0x01010572,
  COMPILE_SDK_VERSION_CODENAME_ATTR = 0x01010573,
  VERSION_MAJOR_ATTR = 0x01010577,
@@ -1586,6 +1591,44 @@ class OriginalPackage : public ManifestExtractor::Element {
  }
};


/** Represents <overlay> elements. **/
class Overlay : public ManifestExtractor::Element {
 public:
  Overlay() = default;
  const std::string* target_package = nullptr;
  int priority;
  bool is_static;
  const std::string* required_property_name = nullptr;
  const std::string* required_property_value = nullptr;

  void Extract(xml::Element* element) override {
    target_package = GetAttributeString(FindAttribute(element, TARGET_PACKAGE_ATTR));
    priority = GetAttributeIntegerDefault(FindAttribute(element, PRIORITY_ATTR), 0);
    is_static = GetAttributeIntegerDefault(FindAttribute(element, IS_STATIC_ATTR), false) != 0;
    required_property_name = GetAttributeString(
        FindAttribute(element, REQUIRED_SYSTEM_PROPERTY_NAME_ATTR));
    required_property_value = GetAttributeString(
        FindAttribute(element, REQUIRED_SYSTEM_PROPERTY_VALUE_ATTR));
  }

  void Print(text::Printer* printer) override {
    printer->Print(StringPrintf("overlay:"));
    if (target_package) {
      printer->Print(StringPrintf(" targetPackage='%s'", target_package->c_str()));
    }
    printer->Print(StringPrintf(" priority='%d'", priority));
    printer->Print(StringPrintf(" isStatic='%s'", is_static ? "true" : "false"));
    if (required_property_name) {
      printer->Print(StringPrintf(" requiredPropertyName='%s'", required_property_name->c_str()));
    }
    if (required_property_value) {
      printer->Print(StringPrintf(" requiredPropertyValue='%s'", required_property_value->c_str()));
    }
    printer->Print("\n");
  }
};

/** * Represents <package-verifier> elements. **/
class PackageVerifier : public ManifestExtractor::Element {
 public:
@@ -2166,6 +2209,7 @@ T* ElementCast(ManifestExtractor::Element* element) {
    {"meta-data", std::is_base_of<MetaData, T>::value},
    {"manifest", std::is_base_of<Manifest, T>::value},
    {"original-package", std::is_base_of<OriginalPackage, T>::value},
    {"overlay", std::is_base_of<Overlay, T>::value},
    {"package-verifier", std::is_base_of<PackageVerifier, T>::value},
    {"permission", std::is_base_of<Permission, T>::value},
    {"provider", std::is_base_of<Provider, T>::value},
@@ -2215,6 +2259,7 @@ std::unique_ptr<ManifestExtractor::Element> ManifestExtractor::Element::Inflate(
    {"manifest", &CreateType<Manifest>},
    {"meta-data", &CreateType<MetaData>},
    {"original-package", &CreateType<OriginalPackage>},
    {"overlay", &CreateType<Overlay>},
    {"package-verifier", &CreateType<PackageVerifier>},
    {"permission", &CreateType<Permission>},
    {"provider", &CreateType<Provider>},