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

Commit f4e0e71f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "AAPT2: Update the name of the configuration struct."

parents b82b7046 280be34f
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@

using ::aapt::configuration::Abi;
using ::aapt::configuration::Artifact;
using ::aapt::configuration::Configuration;
using ::aapt::configuration::PostProcessingConfiguration;
using ::android::StringPiece;
using ::android::base::StringPrintf;

@@ -66,8 +66,7 @@ struct OptimizeOptions {

  TableFlattenerOptions table_flattener_options;

  // TODO: Come up with a better name for the Configuration struct.
  Maybe<Configuration> configuration;
  Maybe<PostProcessingConfiguration> configuration;
};

class OptimizeContext : public IAaptContext {
@@ -189,7 +188,7 @@ class OptimizeCommand {
    }

    if (options_.configuration && options_.output_dir) {
      Configuration& config = options_.configuration.value();
      PostProcessingConfiguration& config = options_.configuration.value();

      // For now, just write out the stripped APK since ABI splitting doesn't modify anything else.
      for (const Artifact& artifact : config.artifacts) {
+209 −220
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ using ::aapt::configuration::Abi;
using ::aapt::configuration::AndroidManifest;
using ::aapt::configuration::AndroidSdk;
using ::aapt::configuration::Artifact;
using ::aapt::configuration::Configuration;
using ::aapt::configuration::PostProcessingConfiguration;
using ::aapt::configuration::GlTexture;
using ::aapt::configuration::Group;
using ::aapt::configuration::Locale;
@@ -125,7 +125,7 @@ ConfigurationParser::ConfigurationParser(std::string contents)
      diag_(&noop_) {
}

Maybe<Configuration> ConfigurationParser::Parse() {
Maybe<PostProcessingConfiguration> ConfigurationParser::Parse() {
  std::istringstream in(contents_);

  auto doc = xml::Inflate(&in, diag_, Source("config.xml"));
@@ -157,10 +157,11 @@ Maybe<Configuration> ConfigurationParser::Parse() {
  XmlNodeAction& artifacts_action = root_action["artifacts"];
  XmlNodeAction& groups_action = root_action["groups"];

  Configuration config;
  PostProcessingConfiguration config;

  // Helper to bind a static method to an action handler in the DOM executor.
  auto bind_handler = [&config](std::function<bool(Configuration*, Element*, IDiagnostics*)> h)
  auto bind_handler =
      [&config](std::function<bool(PostProcessingConfiguration*, Element*, IDiagnostics*)> h)
      -> XmlNodeAction::ActionFuncWithDiag {
    return std::bind(h, &config, std::placeholders::_1, std::placeholders::_2);
  };
@@ -189,7 +190,7 @@ Maybe<Configuration> ConfigurationParser::Parse() {
}

ConfigurationParser::ActionHandler ConfigurationParser::artifact_handler_ =
    [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool {
    [](PostProcessingConfiguration* config, Element* root_element, IDiagnostics* diag) -> bool {
  Artifact artifact{};
  for (const auto& attr : root_element->attributes) {
    if (attr.name == "name") {
@@ -207,8 +208,8 @@ ConfigurationParser::ActionHandler ConfigurationParser::artifact_handler_ =
    } else if (attr.name == "device-feature-group") {
      artifact.device_feature_group = {attr.value};
    } else {
          diag->Note(
              DiagMessage() << "Unknown artifact attribute: " << attr.name << " = " << attr.value);
      diag->Note(DiagMessage() << "Unknown artifact attribute: " << attr.name << " = "
                               << attr.value);
    }
  }
  config->artifacts.push_back(artifact);
@@ -216,7 +217,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::artifact_handler_ =
};

ConfigurationParser::ActionHandler ConfigurationParser::artifact_format_handler_ =
    [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool {
    [](PostProcessingConfiguration* config, Element* root_element, IDiagnostics* diag) -> bool {
  for (auto& node : root_element->children) {
    xml::Text* t;
    if ((t = NodeCast<xml::Text>(node.get())) != nullptr) {
@@ -228,7 +229,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::artifact_format_handler_
};

ConfigurationParser::ActionHandler ConfigurationParser::abi_group_handler_ =
    [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool {
    [](PostProcessingConfiguration* config, Element* root_element, IDiagnostics* diag) -> bool {
  std::string label = GetLabel(root_element, diag);
  if (label.empty()) {
    return false;
@@ -239,8 +240,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::abi_group_handler_ =

  for (auto* child : root_element->GetChildElements()) {
    if (child->name != "abi") {
          diag->Error(
              DiagMessage() << "Unexpected element in ABI group: " << child->name);
      diag->Error(DiagMessage() << "Unexpected element in ABI group: " << child->name);
      valid = false;
    } else {
      for (auto& node : child->children) {
@@ -257,7 +257,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::abi_group_handler_ =
};

ConfigurationParser::ActionHandler ConfigurationParser::screen_density_group_handler_ =
    [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool {
    [](PostProcessingConfiguration* config, Element* root_element, IDiagnostics* diag) -> bool {
  std::string label = GetLabel(root_element, diag);
  if (label.empty()) {
    return false;
@@ -268,8 +268,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::screen_density_group_han

  for (auto* child : root_element->GetChildElements()) {
    if (child->name != "screen-density") {
          diag->Error(
              DiagMessage() << "Unexpected root_element in screen density group: "
      diag->Error(DiagMessage() << "Unexpected root_element in screen density group: "
                                << child->name);
      valid = false;
    } else {
@@ -282,9 +281,8 @@ ConfigurationParser::ActionHandler ConfigurationParser::screen_density_group_han
            // Copy the density with the minimum SDK version stripped out.
            group.push_back(config_descriptor.CopyWithoutSdkVersion());
          } else {
                diag->Error(
                    DiagMessage() << "Could not parse config descriptor for screen-density: "
                                  << text);
            diag->Error(DiagMessage()
                        << "Could not parse config descriptor for screen-density: " << text);
            valid = false;
          }
          break;
@@ -297,7 +295,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::screen_density_group_han
};

ConfigurationParser::ActionHandler ConfigurationParser::locale_group_handler_ =
    [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool {
    [](PostProcessingConfiguration* config, Element* root_element, IDiagnostics* diag) -> bool {
  std::string label = GetLabel(root_element, diag);
  if (label.empty()) {
    return false;
@@ -308,8 +306,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::locale_group_handler_ =

  for (auto* child : root_element->GetChildElements()) {
    if (child->name != "locale") {
          diag->Error(
              DiagMessage() << "Unexpected root_element in screen density group: "
      diag->Error(DiagMessage() << "Unexpected root_element in screen density group: "
                                << child->name);
      valid = false;
    } else {
@@ -320,8 +317,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::locale_group_handler_ =
        } else if (attr.name == "region") {
          entry.region = {attr.value};
        } else {
              diag->Warn(DiagMessage() << "Unknown attribute: " << attr.name
                                       << " = " << attr.value);
          diag->Warn(DiagMessage() << "Unknown attribute: " << attr.name << " = " << attr.value);
        }
      }
      group.push_back(entry);
@@ -332,7 +328,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::locale_group_handler_ =
};

ConfigurationParser::ActionHandler ConfigurationParser::android_sdk_group_handler_ =
    [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool {
    [](PostProcessingConfiguration* config, Element* root_element, IDiagnostics* diag) -> bool {
  std::string label = GetLabel(root_element, diag);
  if (label.empty()) {
    return false;
@@ -343,8 +339,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::android_sdk_group_handle

  for (auto* child : root_element->GetChildElements()) {
    if (child->name != "android-sdk") {
          diag->Error(
              DiagMessage() << "Unexpected root_element in ABI group: " << child->name);
      diag->Error(DiagMessage() << "Unexpected root_element in ABI group: " << child->name);
      valid = false;
    } else {
      AndroidSdk entry;
@@ -356,8 +351,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::android_sdk_group_handle
        } else if (attr.name == "maxSdkVersion") {
          entry.max_sdk_version = {attr.value};
        } else {
              diag->Warn(DiagMessage() << "Unknown attribute: " << attr.name
                                       << " = " << attr.value);
          diag->Warn(DiagMessage() << "Unknown attribute: " << attr.name << " = " << attr.value);
        }
      }

@@ -380,7 +374,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::android_sdk_group_handle
};

ConfigurationParser::ActionHandler ConfigurationParser::gl_texture_group_handler_ =
    [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool {
    [](PostProcessingConfiguration* config, Element* root_element, IDiagnostics* diag) -> bool {
  std::string label = GetLabel(root_element, diag);
  if (label.empty()) {
    return false;
@@ -392,9 +386,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::gl_texture_group_handler
  GlTexture result;
  for (auto* child : root_element->GetChildElements()) {
    if (child->name != "gl-texture") {
          diag->Error(
              DiagMessage() << "Unexpected element in GL texture group: "
                            << child->name);
      diag->Error(DiagMessage() << "Unexpected element in GL texture group: " << child->name);
      valid = false;
    } else {
      for (const auto& attr : child->attributes) {
@@ -406,9 +398,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::gl_texture_group_handler

      for (auto* element : child->GetChildElements()) {
        if (element->name != "texture-path") {
              diag->Error(
                  DiagMessage() << "Unexpected element in gl-texture element: "
                                << child->name);
          diag->Error(DiagMessage() << "Unexpected element in gl-texture element: " << child->name);
          valid = false;
          continue;
        }
@@ -427,7 +417,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::gl_texture_group_handler
};

ConfigurationParser::ActionHandler ConfigurationParser::device_feature_group_handler_ =
    [](Configuration* config, Element* root_element, IDiagnostics* diag) -> bool {
    [](PostProcessingConfiguration* config, Element* root_element, IDiagnostics* diag) -> bool {
  std::string label = GetLabel(root_element, diag);
  if (label.empty()) {
    return false;
@@ -438,8 +428,7 @@ ConfigurationParser::ActionHandler ConfigurationParser::device_feature_group_han

  for (auto* child : root_element->GetChildElements()) {
    if (child->name != "supports-feature") {
          diag->Error(
              DiagMessage() << "Unexpected root_element in device feature group: "
      diag->Error(DiagMessage() << "Unexpected root_element in device feature group: "
                                << child->name);
      valid = false;
    } else {
+5 −8
Original line number Diff line number Diff line
@@ -117,10 +117,8 @@ struct GlTexture {
  }
};

/**
 * AAPT2 XML configuration binary representation.
 */
struct Configuration {
/** AAPT2 XML configuration file binary representation. */
struct PostProcessingConfiguration {
  // TODO: Support named artifacts?
  std::vector<Artifact> artifacts;
  Maybe<std::string> artifact_format;
@@ -166,7 +164,7 @@ class ConfigurationParser {
   * Parses the configuration file and returns the results. If the configuration could not be parsed
   * the result is empty and any errors will be displayed with the provided diagnostics context.
   */
  Maybe<configuration::Configuration> Parse();
  Maybe<configuration::PostProcessingConfiguration> Parse();

 protected:
  /**
@@ -185,9 +183,8 @@ class ConfigurationParser {
   * An ActionHandler for processing XML elements in the XmlActionExecutor. Returns true if the
   * element was successfully processed, otherwise returns false.
   */
  using ActionHandler = std::function<bool(configuration::Configuration* config,
                                           xml::Element* element,
                                           IDiagnostics* diag)>;
  using ActionHandler = std::function<bool(configuration::PostProcessingConfiguration* config,
                                           xml::Element* element, IDiagnostics* diag)>;

  /** Handler for <artifact> tags. */
  static ActionHandler artifact_handler_;
+10 −10
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ namespace {
using android::ResTable_config;
using configuration::Abi;
using configuration::AndroidSdk;
using configuration::Configuration;
using configuration::PostProcessingConfiguration;
using configuration::DeviceFeature;
using configuration::GlTexture;
using configuration::Locale;
@@ -139,7 +139,7 @@ TEST_F(ConfigurationParserTest, ValidateFile) {
  auto parser = ConfigurationParser::ForContents(kValidConfig).WithDiagnostics(&diag_);
  auto result = parser.Parse();
  ASSERT_TRUE(result);
  Configuration& value = result.value();
  PostProcessingConfiguration& value = result.value();
  EXPECT_EQ(2ul, value.artifacts.size());
  ASSERT_TRUE(value.artifact_format);
  EXPECT_EQ(
@@ -190,7 +190,7 @@ TEST_F(ConfigurationParserTest, ArtifactAction) {

  auto doc = test::BuildXmlDom(xml);

  Configuration config;
  PostProcessingConfiguration config;
  bool ok = artifact_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_);
  ASSERT_TRUE(ok);

@@ -229,7 +229,7 @@ TEST_F(ConfigurationParserTest, ArtifactFormatAction) {

  auto doc = test::BuildXmlDom(xml);

  Configuration config;
  PostProcessingConfiguration config;
  bool ok = artifact_format_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_);
  ASSERT_TRUE(ok);
  ASSERT_TRUE(config.artifact_format);
@@ -252,7 +252,7 @@ TEST_F(ConfigurationParserTest, AbiGroupAction) {

  auto doc = test::BuildXmlDom(xml);

  Configuration config;
  PostProcessingConfiguration config;
  bool ok = abi_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_);
  ASSERT_TRUE(ok);

@@ -275,7 +275,7 @@ TEST_F(ConfigurationParserTest, ScreenDensityGroupAction) {

  auto doc = test::BuildXmlDom(xml);

  Configuration config;
  PostProcessingConfiguration config;
  bool ok =
      screen_density_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_);
  ASSERT_TRUE(ok);
@@ -305,7 +305,7 @@ TEST_F(ConfigurationParserTest, LocaleGroupAction) {

  auto doc = test::BuildXmlDom(xml);

  Configuration config;
  PostProcessingConfiguration config;
  bool ok = locale_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_);
  ASSERT_TRUE(ok);

@@ -341,7 +341,7 @@ TEST_F(ConfigurationParserTest, AndroidSdkGroupAction) {

  auto doc = test::BuildXmlDom(xml);

  Configuration config;
  PostProcessingConfiguration config;
  bool ok = android_sdk_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_);
  ASSERT_TRUE(ok);

@@ -373,7 +373,7 @@ TEST_F(ConfigurationParserTest, GlTextureGroupAction) {

  auto doc = test::BuildXmlDom(xml);

  Configuration config;
  PostProcessingConfiguration config;
  bool ok = gl_texture_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_);
  ASSERT_TRUE(ok);

@@ -402,7 +402,7 @@ TEST_F(ConfigurationParserTest, DeviceFeatureGroupAction) {

  auto doc = test::BuildXmlDom(xml);

  Configuration config;
  PostProcessingConfiguration config;
  bool ok
      = device_feature_group_handler_(&config, NodeCast<Element>(doc.get()->root.get()), &diag_);
  ASSERT_TRUE(ok);