am c205a9d6: am f8aea993: Make aapt ignore tools-related data.

* commit 'c205a9d68c23e9ade2cbe28bba0f257d84d23a97':
  Make aapt ignore tools-related data.
This commit is contained in:
Xavier Ducrohet
2012-02-06 11:42:50 -08:00
committed by Android Git Automerger

View File

@@ -45,6 +45,7 @@ bool isWhitespace(const char16_t* str)
static const String16 RESOURCES_PREFIX(RESOURCES_ROOT_NAMESPACE); static const String16 RESOURCES_PREFIX(RESOURCES_ROOT_NAMESPACE);
static const String16 RESOURCES_PRV_PREFIX(RESOURCES_ROOT_PRV_NAMESPACE); static const String16 RESOURCES_PRV_PREFIX(RESOURCES_ROOT_PRV_NAMESPACE);
static const String16 RESOURCES_TOOLS_NAMESPACE("http://schemas.android.com/tools");
String16 getNamespaceResourcePackage(String16 namespaceUri, bool* outIsPublic) String16 getNamespaceResourcePackage(String16 namespaceUri, bool* outIsPublic)
{ {
@@ -761,13 +762,16 @@ status_t XMLNode::addAttribute(const String16& ns, const String16& name,
SourcePos(mFilename, getStartLineNumber()).error("Child to CDATA node."); SourcePos(mFilename, getStartLineNumber()).error("Child to CDATA node.");
return UNKNOWN_ERROR; return UNKNOWN_ERROR;
} }
attribute_entry e;
e.index = mNextAttributeIndex++; if (ns != RESOURCES_TOOLS_NAMESPACE) {
e.ns = ns; attribute_entry e;
e.name = name; e.index = mNextAttributeIndex++;
e.string = value; e.ns = ns;
mAttributes.add(e); e.name = name;
mAttributeOrder.add(e.index, mAttributes.size()-1); e.string = value;
mAttributes.add(e);
mAttributeOrder.add(e.index, mAttributes.size()-1);
}
return NO_ERROR; return NO_ERROR;
} }
@@ -1215,11 +1219,13 @@ status_t XMLNode::collect_strings(StringPool* dest, Vector<uint32_t>* outResIds,
collect_attr_strings(dest, outResIds, true); collect_attr_strings(dest, outResIds, true);
int i; int i;
if (mNamespacePrefix.size() > 0) { if (RESOURCES_TOOLS_NAMESPACE != mNamespaceUri) {
dest->add(mNamespacePrefix, true); if (mNamespacePrefix.size() > 0) {
} dest->add(mNamespacePrefix, true);
if (mNamespaceUri.size() > 0) { }
dest->add(mNamespaceUri, true); if (mNamespaceUri.size() > 0) {
dest->add(mNamespaceUri, true);
}
} }
if (mElementName.size() > 0) { if (mElementName.size() > 0) {
dest->add(mElementName, true); dest->add(mElementName, true);
@@ -1338,6 +1344,7 @@ status_t XMLNode::flatten_node(const StringPool& strings, const sp<AaptFile>& de
const void* extData = NULL; const void* extData = NULL;
size_t extSize = 0; size_t extSize = 0;
ResXMLTree_attribute attr; ResXMLTree_attribute attr;
bool writeCurrentNode = true;
const size_t NA = mAttributes.size(); const size_t NA = mAttributes.size();
const size_t NC = mChildren.size(); const size_t NC = mChildren.size();
@@ -1350,7 +1357,7 @@ status_t XMLNode::flatten_node(const StringPool& strings, const sp<AaptFile>& de
const String16 style16("style"); const String16 style16("style");
const type type = getType(); const type type = getType();
memset(&node, 0, sizeof(node)); memset(&node, 0, sizeof(node));
memset(&attr, 0, sizeof(attr)); memset(&attr, 0, sizeof(attr));
node.header.headerSize = htods(sizeof(node)); node.header.headerSize = htods(sizeof(node));
@@ -1395,17 +1402,21 @@ status_t XMLNode::flatten_node(const StringPool& strings, const sp<AaptFile>& de
} }
} }
} else if (type == TYPE_NAMESPACE) { } else if (type == TYPE_NAMESPACE) {
node.header.type = htods(RES_XML_START_NAMESPACE_TYPE); if (mNamespaceUri == RESOURCES_TOOLS_NAMESPACE) {
extData = &namespaceExt; writeCurrentNode = false;
extSize = sizeof(namespaceExt);
memset(&namespaceExt, 0, sizeof(namespaceExt));
if (mNamespacePrefix.size() > 0) {
namespaceExt.prefix.index = htodl(strings.offsetForString(mNamespacePrefix));
} else { } else {
namespaceExt.prefix.index = htodl((uint32_t)-1); node.header.type = htods(RES_XML_START_NAMESPACE_TYPE);
extData = &namespaceExt;
extSize = sizeof(namespaceExt);
memset(&namespaceExt, 0, sizeof(namespaceExt));
if (mNamespacePrefix.size() > 0) {
namespaceExt.prefix.index = htodl(strings.offsetForString(mNamespacePrefix));
} else {
namespaceExt.prefix.index = htodl((uint32_t)-1);
}
namespaceExt.prefix.index = htodl(strings.offsetForString(mNamespacePrefix));
namespaceExt.uri.index = htodl(strings.offsetForString(mNamespaceUri));
} }
namespaceExt.prefix.index = htodl(strings.offsetForString(mNamespacePrefix));
namespaceExt.uri.index = htodl(strings.offsetForString(mNamespaceUri));
LOG_ALWAYS_FATAL_IF(NA != 0, "Namespace nodes can't have attributes!"); LOG_ALWAYS_FATAL_IF(NA != 0, "Namespace nodes can't have attributes!");
} else if (type == TYPE_CDATA) { } else if (type == TYPE_CDATA) {
node.header.type = htods(RES_XML_CDATA_TYPE); node.header.type = htods(RES_XML_CDATA_TYPE);
@@ -1422,9 +1433,11 @@ status_t XMLNode::flatten_node(const StringPool& strings, const sp<AaptFile>& de
node.header.size = htodl(sizeof(node) + extSize + (sizeof(attr)*NA)); node.header.size = htodl(sizeof(node) + extSize + (sizeof(attr)*NA));
dest->writeData(&node, sizeof(node)); if (writeCurrentNode) {
if (extSize > 0) { dest->writeData(&node, sizeof(node));
dest->writeData(extData, extSize); if (extSize > 0) {
dest->writeData(extData, extSize);
}
} }
for (i=0; i<NA; i++) { for (i=0; i<NA; i++) {
@@ -1476,12 +1489,14 @@ status_t XMLNode::flatten_node(const StringPool& strings, const sp<AaptFile>& de
dest->writeData(&node, sizeof(node)); dest->writeData(&node, sizeof(node));
dest->writeData(&endElementExt, sizeof(endElementExt)); dest->writeData(&endElementExt, sizeof(endElementExt));
} else if (type == TYPE_NAMESPACE) { } else if (type == TYPE_NAMESPACE) {
node.header.type = htods(RES_XML_END_NAMESPACE_TYPE); if (writeCurrentNode) {
node.lineNumber = htodl(getEndLineNumber()); node.header.type = htods(RES_XML_END_NAMESPACE_TYPE);
node.comment.index = htodl((uint32_t)-1); node.lineNumber = htodl(getEndLineNumber());
node.header.size = htodl(sizeof(node)+extSize); node.comment.index = htodl((uint32_t)-1);
dest->writeData(&node, sizeof(node)); node.header.size = htodl(sizeof(node)+extSize);
dest->writeData(extData, extSize); dest->writeData(&node, sizeof(node));
dest->writeData(extData, extSize);
}
} }
return NO_ERROR; return NO_ERROR;