summaryrefslogtreecommitdiff
path: root/tools/aapt2/java/ManifestClassGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/aapt2/java/ManifestClassGenerator.cpp')
-rw-r--r--tools/aapt2/java/ManifestClassGenerator.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/tools/aapt2/java/ManifestClassGenerator.cpp b/tools/aapt2/java/ManifestClassGenerator.cpp
index 8981e0718be0..be67c9c8c03c 100644
--- a/tools/aapt2/java/ManifestClassGenerator.cpp
+++ b/tools/aapt2/java/ManifestClassGenerator.cpp
@@ -21,11 +21,12 @@
#include "Source.h"
#include "java/AnnotationProcessor.h"
#include "java/ClassDefinition.h"
+#include "java/JavaClassGenerator.h"
#include "text/Unicode.h"
#include "util/Maybe.h"
#include "xml/XmlDom.h"
-using android::StringPiece;
+using ::android::StringPiece;
using ::aapt::text::IsJavaIdentifier;
namespace aapt {
@@ -38,6 +39,11 @@ static Maybe<StringPiece> ExtractJavaIdentifier(IDiagnostics* diag, const Source
result = result.substr(pos + 1);
}
+ // Normalize only the java identifier, leave the original value unchanged.
+ if (result.contains("-")) {
+ result = JavaClassGenerator::TransformToFieldName(result);
+ }
+
if (result.empty()) {
diag->Error(DiagMessage(source) << "empty symbol");
return {};
@@ -50,17 +56,16 @@ static Maybe<StringPiece> ExtractJavaIdentifier(IDiagnostics* diag, const Source
return result;
}
-static bool WriteSymbol(const Source& source, IDiagnostics* diag,
- xml::Element* el, ClassDefinition* class_def) {
+static bool WriteSymbol(const Source& source, IDiagnostics* diag, xml::Element* el,
+ ClassDefinition* class_def) {
xml::Attribute* attr = el->FindAttribute(xml::kSchemaAndroid, "name");
if (!attr) {
- diag->Error(DiagMessage(source) << "<" << el->name
- << "> must define 'android:name'");
+ diag->Error(DiagMessage(source) << "<" << el->name << "> must define 'android:name'");
return false;
}
- Maybe<StringPiece> result = ExtractJavaIdentifier(
- diag, source.WithLine(el->line_number), attr->value);
+ Maybe<StringPiece> result =
+ ExtractJavaIdentifier(diag, source.WithLine(el->line_number), attr->value);
if (!result) {
return false;
}
@@ -76,8 +81,7 @@ static bool WriteSymbol(const Source& source, IDiagnostics* diag,
return true;
}
-std::unique_ptr<ClassDefinition> GenerateManifestClass(IDiagnostics* diag,
- xml::XmlResource* res) {
+std::unique_ptr<ClassDefinition> GenerateManifestClass(IDiagnostics* diag, xml::XmlResource* res) {
xml::Element* el = xml::FindRootElement(res->root.get());
if (!el) {
diag->Error(DiagMessage(res->file.source) << "no root tag defined");
@@ -85,8 +89,7 @@ std::unique_ptr<ClassDefinition> GenerateManifestClass(IDiagnostics* diag,
}
if (el->name != "manifest" && !el->namespace_uri.empty()) {
- diag->Error(DiagMessage(res->file.source)
- << "no <manifest> root tag defined");
+ diag->Error(DiagMessage(res->file.source) << "no <manifest> root tag defined");
return {};
}
@@ -100,11 +103,9 @@ std::unique_ptr<ClassDefinition> GenerateManifestClass(IDiagnostics* diag,
for (xml::Element* child_el : children) {
if (child_el->namespace_uri.empty()) {
if (child_el->name == "permission") {
- error |= !WriteSymbol(res->file.source, diag, child_el,
- permission_class.get());
+ error |= !WriteSymbol(res->file.source, diag, child_el, permission_class.get());
} else if (child_el->name == "permission-group") {
- error |= !WriteSymbol(res->file.source, diag, child_el,
- permission_group_class.get());
+ error |= !WriteSymbol(res->file.source, diag, child_el, permission_group_class.get());
}
}
}