Loading tools/aapt2/cmd/Optimize.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading Loading @@ -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) { Loading tools/aapt2/configuration/ConfigurationParser.cpp +209 −220 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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")); Loading Loading @@ -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); }; Loading Loading @@ -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") { Loading @@ -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); Loading @@ -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) { Loading @@ -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; Loading @@ -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) { Loading @@ -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; Loading @@ -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 { Loading @@ -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; Loading @@ -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; Loading @@ -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 { Loading @@ -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); Loading @@ -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; Loading @@ -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; Loading @@ -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); } } Loading @@ -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; Loading @@ -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) { Loading @@ -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; } Loading @@ -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; Loading @@ -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 { Loading tools/aapt2/configuration/ConfigurationParser.h +5 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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: /** Loading @@ -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_; Loading tools/aapt2/configuration/ConfigurationParser_test.cpp +10 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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( Loading Loading @@ -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); Loading Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading
tools/aapt2/cmd/Optimize.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading Loading @@ -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) { Loading
tools/aapt2/configuration/ConfigurationParser.cpp +209 −220 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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")); Loading Loading @@ -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); }; Loading Loading @@ -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") { Loading @@ -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); Loading @@ -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) { Loading @@ -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; Loading @@ -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) { Loading @@ -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; Loading @@ -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 { Loading @@ -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; Loading @@ -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; Loading @@ -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 { Loading @@ -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); Loading @@ -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; Loading @@ -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; Loading @@ -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); } } Loading @@ -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; Loading @@ -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) { Loading @@ -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; } Loading @@ -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; Loading @@ -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 { Loading
tools/aapt2/configuration/ConfigurationParser.h +5 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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: /** Loading @@ -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_; Loading
tools/aapt2/configuration/ConfigurationParser_test.cpp +10 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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( Loading Loading @@ -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); Loading Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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); Loading